--- Log for 17.04.105 Server: orwell.freenode.net Channel: #rockbox --- Nick: logbot Version: Dancer V4.16 Started: 25 days and 8 hours ago 00.00.08 # and next to that, being able to process the conditions efficiently 00.00.17 # rasher: if you do it that way, you'll need tons of memory anyway 00.00.19 # no point in thinking about it yet. 00.00.43 # tons of file seeks at least ;-) 00.00.45 # i had thoughts about an array whether a song is in or out *shrugs* 00.00.47 # will probably have to apply all the conditions simulteneously for all files 00.01.11 # it'll pretty much have to look at all files I guess 00.01.23 # well except for some condition that can be "tabled" 00.01.29 # why a ton of file seeks? 00.01.46 # well, hopefully the runtimedb is not all files 00.02.00 # that's helpful 00.02.15 # so looking at conditions that apply to the runtimedb 00.02.32 # is a good thing to do quick/first 00.02.41 # but if none of them do :- 00.02.44 # :-/ 00.02.46 # oh well 00.02.50 # they'll just have to wait :) 00.02.53 # rasher: if you apply the conditions partially, you will probably need a ton of memory 00.02.56 # a progress bar would probably be nice 00.03.02 # haha 00.03.24 # if the music isn't playing, I know a big buffer we can use! ;-) 00.03.25 # http://www.rockbox.org/mail/archive/rockbox-archive-2005-04/0136.shtml 00.03.28 # hahaha 00.03.32 # oh well 00.03.36 # i really don't care about this stuff 00.03.45 # i know my own music collection in and out 00.03.55 # and know pretty much exactly where what i want is 00.04.06 # but what about the things you don't know that you want? 00.04.20 # like i said, i know my music in and out 00.04.23 # i know what i want :P 00.04.26 # I like the idea of stats 00.04.35 # i don't care about stats either 00.04.35 # what songs do I usually skip? 00.04.48 # i don't skip songs, i choose what i want to listen to and then listen to it 00.04.55 # heh 00.04.57 # a thing like "average play percent" 00.05.15 # a song that's played 5% usually isn't going to gain much respect from me :) 00.05.25 # I usually play my 4000 entries playlist in shuffle... 00.05.32 # hah 00.05.34 # but could make for an interesting playlist :) 00.05.38 # is there an album shuffle? :P 00.05.52 # find random album, play it, find random album, play it 00.06.18 # preglow: we leave that feature for you to write 00.06.19 # ;-) 00.06.21 # haha 00.06.24 # Hurray, Debian release! (of Woody - r5) :( 00.06.33 # * preglow hugs ubuntu 00.06.58 # I keep coming back to Debian.. 00.07.03 # It just feels more like home 00.07.04 # why? 00.07.06 # hahah 00.07.12 # windows feels like home to me 00.07.24 # Ubuntu's like visiting a fancy house.. it all looks nice, but I dare not touch anything 00.07.39 # I have windows in my home too... .-P 00.07.53 # i'm in linux for easy development right now 00.07.59 # but for ordinary use i like windows, for some reason 00.08.05 # well I run windows on my laptop 00.08.14 # linux also sucks for sound applications 00.08.21 # because it hasn't got any good ones, mainly... 00.08.25 # mostly because my wifi nic is a bitch, and I'm stuck in the world of IM 00.08.27 # and i do a lot of sound 00.09.02 # Bagder: did you see - http://rasher.dk/rockbox/ircstats/ 00.09.19 # no... 00.09.23 # * Bagder runs over there 00.10.09 Quit BBub (""Fange nie an aufzuhören. Höre nie auf anzufangen." - Tiki") 00.10.32 # why, there he goes proving why he's the /me king ;) 00.10.58 Quit zezayer ("Chatzilla 0.9.67 [Firefox 1.0.1/20050311]") 00.11.52 # well, 1138 /me is about one per day ;-) 00.12.01 Join [1]MoosCamaro [0] (HydraIRC@m214.net81-66-158.noos.fr) 00.12.35 Quit [1]MoosCamaro (Client Quit) 00.12.41 # there are 1000 days of logs, in fact 00.13.00 # or 1001 if I updated now :) 00.13.09 # ok, bmp loading tomorrow :) 00.13.21 # ls -1 rockbox-200*txt | wc -l 00.13.21 # 1034 00.13.27 # I have it loading correctly.. and displaying in * with debugf() 00.13.38 # strange.. maybe pisg limits to 1000 days 00.13.51 # the first ones aren't dancer ones 00.13.53 # * t0mas is away: tv 00.13.58 # ah 00.14.00 # that's it then 00.15.24 # what, no wiki updates on saturday!? 00.26.39 # why doesn't the rockbox list have a subject prefix? 00.29.06 # because we don't like prefixes 00.29.23 # it's the first list i've ever been on that doesn't have them :/ 00.29.26 # we use procmail 00.29.38 # man, you haven't been on many lists ;-) 00.29.42 # true 00.29.59 # i'm on about five at the moment 00.30.11 # two of them digest 00.30.38 # I've lost count 00.32.01 # I get >700 emails per day 00.32.28 # half of them are spam of course 00.32.36 # ugh 00.32.51 Quit asdsd_ (Read error: 131 (Connection reset by peer)) 00.32.55 # how do you ever get things done :P 00.33.26 # I just avoid real work ;-) 00.34.17 Join asdsd_ [0] (~asdsd@h-67-100-30-151.miatflad.dynamic.covad.net) 00.34.34 # i think we've got nick of the year contest winner right here 00.36.34 # I have a handy procmail rule 00.37.21 # :0: 00.37.24 # * ^(X-(Mailing-)?[Ll]ist(-Id)?: lists/$MATCH 00.37.37 # catches most mailing lists 00.37.40 # it's like magic 00.37.52 # * preglow vomits 00.38.00 # I know 00.38.03 # but it works 00.38.10 # and I didn't write it :) 00.40.04 # gotta love regex 01.05.51 # hmz.. 01.05.58 # I have a working bmp loader... 01.06.08 # only.. I don't understand the rockbox format.. 01.07.09 # it is simple: the first byte is top left, column 0 eight pixels high 01.08.48 # yeah, got that from comments 01.09.00 # now thinking of a nice way to convert... 01.09.39 # I have two for loops... for (row) { for (col) { ... } } 01.09.57 # is there a calculation from row, col to what byte + bit I need to set? 01.09.58 # doesn't the conversion in the original bmp.c work? 01.10.03 # (I have a setbit function too) 01.10.42 # (*bitmap)[ (row/8) * bitmap_width + col ] |= 01.10.42 # 1<<(row&7); 01.10.43 # that? 01.10.51 # hmz... 01.11.07 # yes that 01.11.22 # Don't understand the 1<<(row&7) part 01.11.28 # 1 shifted by what? 01.11.58 # the lowest three bits of the row 01.12.05 # what else can I say? 01.12.13 # the other bits are used already 01.12.15 # hmz... I'll just test it 01.12.21 # row/8 uses the other bits 01.12.35 # ah ok 01.13.24 Join Camilo [0] (~chatzilla@userca029.dsl.pipex.com) 01.14.08 # so row 7 becomes (1<<7) and row 0 is (1<<0) 01.14.22 # 0 being the top 01.15.15 # ok 01.15.20 # and can you explain the if here: 01.15.21 # if(bmp[(bitmap_height-1 -row) * PaddedWidth + col]) { 01.15.21 # bitmap[ (row/8) * bitmap_width + col ] &= ~ (1<<(row&7)); 01.15.21 # } 01.15.21 # else { 01.15.22 *** Alert Mode level 1 01.15.22 # bitmap[ (row/8) * bitmap_width + col ] |= 1<<(row&7); 01.15.24 # } 01.15.37 # the first condition clears the bit, the other sets it 01.15.46 # the first block 01.16.04 # ok 01.16.20 # so it checks in the bmp if the byte is zero or non-zero to figure that out 01.18.11 Quit asdsd_ (Read error: 60 (Operation timed out)) 01.18.22 # well.. the rockbox conversion makes a mess of it 01.19.04 # I think the math there is right 01.19.26 # ghehe... and I'm sure the image given to it is correct... as it's displayed in debug :) 01.19.39 # so something else is wrong 01.19.43 # then the input data to the math is wrong 01.20.02 # is the bmp 8 bit or 1 bit? 01.20.29 # wait... there is no input data like that 01.20.35 # I have a row, col and bit 01.20.38 # bit = 1 or 0 01.20.44 # row = y and col = x 01.21.13 # right, that code is for 8bit bmp 01.21.20 # check bmp2rb.c for a 1bit one 01.21.50 # byte = (bitmap_width * (row/8)) + col; 01.21.50 # bit = (row % 8); 01.21.51 # bitmap[byte] = bitmap[byte] + (1 << bit); 01.22.02 # isn't that the right way too? 01.22.06 # + ? 01.22.17 # you mean | 01.22.27 # ghehe 01.22.29 # *oops* 01.22.46 # but if you had it cleared from start it makes no diff I guess 01.22.46 # it's getting a little late... 01.23.48 # but that doesn't show how you use the variables 01.23.58 # again, there is working code in bmp2rb.c 01.24.19 # yeah 01.25.23 # testing takes some time... 01.25.24 *** Alert Mode OFF 01.25.47 # don't you use the sim? 01.25.52 # yes I doo 01.26.20 # but compiling + make install takes some time with cygwin 01.26.29 # right 01.27.20 # bitmap[ (row/8) * bitmap_width + col ] &= ~ (1<<(row&7)); 01.27.24 # that sets a bit? 01.27.31 # no, that clears it 01.27.35 # ah ok 01.27.35 # bitmap[ (row/8) * bitmap_width + col ] |= 1<<(row&7); 01.27.38 # and this is set? 01.27.40 # yes 01.31.53 Join _Lucretia_ [0] (~munkee@abyss2.demon.co.uk) 01.31.55 Quit _Lucretia (Read error: 110 (Connection timed out)) 01.32.54 # * Bagder got another runtimedb idea 01.33.20 # how big is the statusbar? 01.33.21 # 20px? 01.33.38 # system font height 01.33.42 # 8px 01.34.32 # k 01.35.23 # hm... how can i test it from a plugin? 01.35.56 # test what? 01.35.57 # (or add something to debug?) 01.36.01 Join _ferenczy [0] (ferenczy@a3brn-191.dialup.vol.cz) 01.36.02 # my loading code 01.36.38 # you mean the code is not accessible via the plugin API? 01.36.54 # don't know.. is it automatically? 01.37.05 *** Saving seen data "./dancer.seen" 01.37.10 # no, you need to add it in apps/plugin.h and plugin.c 01.37.16 # ok 01.38.26 # #define PLUGIN_API_VERSION 37 01.38.29 # should I raise that? 01.38.45 # yes 01.42.06 # hm.. just add the name in the .h? 01.42.11 # and what in the .c ? 01.42.15 # just the name too? 01.42.28 # just as all the other functions 01.42.37 # add it last in the struct 01.42.54 # ok 01.43.19 # but you're only adding it there for testing, aren't you? 01.44.10 # well... maybe it is usefull for plugin's if it works 01.44.38 # maybe a viewer plugin... or some game wants to use it 01.44.40 # true, and if the code is there anyway it could as well be accessible 01.44.57 # plugin.c:297: warning: excess elements in struct initializer 01.44.57 # plugin.c:297: warning: (near initialization for `rockbox_api') 01.45.01 # what did I do wrong? 01.45.19 # you didn't do the .h part right probably 01.45.54 # #ifdef HAVE_LCD_BITMAP 01.45.54 # int read_bmp_file(char* filename, 01.45.54 # int *get_width, 01.45.54 # int *get_height, 01.45.54 # char *bitmap); 01.45.54 *** Alert Mode level 1 01.45.54 # #endif 01.45.58 # that's in there... 01.46.12 # compare with the others 01.46.17 # they don't look like that 01.46.25 # jup 01.46.27 # I see 01.46.44 # int (read_bmp_file)(char* filename, int *get_width, int *get_height, char *bitmap); 01.46.49 # eh 01.46.51 # because the struct contains function pointers 01.46.52 # int (*read_bmp_file)(char* filename, int *get_width, int *get_height, char *bitmap); 01.46.55 # like that? 01.46.58 # yeps 01.47.10 # ghehe 01.47.38 # I know function pointers... but I'm still bad at recognizing things like these... 01.47.52 # don't know what * is either... 01.47.55 # eh ** 01.48.11 # * = pointer.... but what's a ** (saw Linus using it somewhere) 01.48.19 # a pointer to a pointer 01.48.26 # sounds weird to me? 01.48.35 # very common C thing 01.48.50 # hmz... I should do more C... 01.50.07 Part MoosCamaro 01.51.27 # hmz... 01.51.30 # just one mistake... 01.51.38 # it's displaying upside down 01.51.46 # hehe 01.52.35 # are we talking about regular bmps here? 01.52.43 # yes 01.52.44 # black/white 01.52.45 # they're saved upside down, no surprises there 01.52.53 # I know 01.52.59 # that's why I reversed it... 01.53.04 # :P 01.53.35 # but i'd better get to bed 01.53.39 # nite, all 01.53.49 Quit preglow ("leaving") 01.54.50 # hmz... this reversing thing is a problem with the bit setting lines... 01.55.07 # the for loop is reversed... to display it ok... 01.55.14 # but when setting it.. that doesn't matter... 01.55.15 # bitmap[ (row/8) * bitmap_width + col ] &= ~ (1<<(row&7)); 01.55.55 *** Alert Mode OFF 01.56.03 # I'd say your check is wrong, not the part that clears the bit 01.56.07 # but that's me 01.56.11 # you could change either one 01.56.13 # bitmap[ ((bitmap_height - row)/8) * bitmap_width + col ] &= ~ (1<<(row&7)); 01.56.25 Part gromit` ("Client exiting") 01.56.32 # is that ok? 01.56.49 # if((bmp[(bitmap_height - row - 1) * PaddedWidth + byte] & (1 << bit))) { 01.56.57 # the code in bmp2rb 01.56.58 Join gromit` [0] (~gromit`@ras75-5-82-234-244-69.fbx.proxad.net) 01.57.01 # ;-) 01.57.13 # eh... 01.57.40 # doing the flip in the check makes the adjustment on one place 01.57.46 # doing it in the bit set/clear puts it on two 01.58.22 # thinking about it, the clear (or the set) should be done on byte-level anyway 01.58.23 # for speed 01.58.47 # but we can save that for later ;-) 01.59.04 # yeah, I have getbit() and setbit() functions 01.59.22 # wrote em some time ago for calculating primes... and storing in bit array... 01.59.22 # no clearbit? 01.59.39 # nope, never had to remove a prime ;) 01.59.50 # :-) 02.01.07 # if(bmpbuf[(bitmap_height-1 -row) * PaddedWidth + col]) { 02.01.08 # bitmap[ (row/8) * bitmap_width + col ] &= ~ (1<<(row&7)); 02.01.08 # } else { 02.01.08 # bitmap[ (row/8) * bitmap_width + col ] |= 1<<(row&7); 02.01.08 # } 02.01.12 # that's making a mess of it... 02.01.50 # but my bmpbuf[] is a 1 bit / pixel 02.01.56 # and this looks like 8? 02.02.14 # yeps 02.03.21 # you need to and out the pixels on 1bit bmps 02.03.41 # & (1 << bit) 02.03.43 # ? 02.04.10 # yes, if bit is set right 02.04.35 # as the bytes are horizonal in bmp 02.05.36 # sleep time now, see ya around 02.06.36 # yeah 02.06.50 # I'm gonna sleep too... 02.07.41 # WORKING :D 02.19.03 # working? 02.22.01 # ? 02.29.58 # my code 02.30.11 # it load's a bmp from file and returns a rockbox format image 02.30.43 # just tested it in wps :D 02.31.10 # It auto loads an image ./rockbox/wpsbg.bmp and displays it on the wps, or just ignores it when the image isn't present :D 02.31.16 Quit Sucka ("a bird in the bush is worth two in your house") 02.32.02 # woo 02.32.57 # hope it compiles on archos too... 02.33.07 # but that's for tomorrow :) 02.33.22 # test in the sim? 02.33.26 # yeah 02.33.33 # but not at 2:30 in the night :P 02.33.43 # :) 02.34.05 # <_ferenczy> t0mas> where are you from??? 02.34.11 # Netherlands 02.34.24 # <_ferenczy> well ;) 02.34.42 # <_ferenczy> I'm from Czech republic... ;) 02.34.55 # ah.. 02.35.49 # nice work! 02.35.52 # gn8 cya 02.38.23 Quit Shagnar ("( www.nnscript.de :: NoNameScript 3.81 :: www.XLhost.de )") 02.48.27 # regarding my file-hash experiment: 512byte from start of file 512 kb from end of file produced no duplicates.. 256 256 produced one 02.48.42 # (using crc32) 02.48.57 # maybe use a #define for it? 02.49.09 # so when people have problem's they can change it? 02.50.01 # maybe.. or just grab 1kb from start and end to be on the safe side 02.50.13 # and try to skip tags 02.50.21 # yeah... 02.50.25 # how did kazaa do it? 02.50.32 # they had a very simple hash thing? 02.50.40 # They didn't hash anything 02.50.56 # as witnessed by the posibility of polluting files 02.51.01 # no, they did hash something... but only some part.. 02.51.18 # maybe this was after I last tried it 02.51.34 # well.. I haven't used it for at least year 02.51.57 # the pollution was possible because they hashed just a part of the file 02.52.20 # well what I'm thinking is this: for mpeg files, seek to the first frame and start hashing from there, seek back to id3v1 tag 1kb longer, then hash a kb from there 02.52.27 # and similar for other formats 02.52.42 # it's sortof costly, but very efficient 02.54.01 # but being able to re-tag and still have it recognised as the same file would be great 02.54.23 # yeah 02.55.21 # ghehe 02.55.31 # original firmware not booting == empty batt :) 02.55.40 # totally 02.56.08 # * t0mas is going to charge his iriver 02.56.13 # and sleep while it is :) 02.56.28 Quit t0mas ("goodnight") 03.02.23 Quit rasher ("CGI:IRC (EOF)") 03.12.04 # * HCl goes to sleep 03.12.06 Quit cYmen ("zZz") 03.18.58 Quit thegeek (Read error: 54 (Connection reset by peer)) 03.23.48 Join asdsd_ [0] (~asdsd@h-67-100-29-22.miatflad.dynamic.covad.net) 03.24.10 Part asdsd_ 03.34.01 Quit courtc (Remote closed the connection) 03.37.07 *** Saving seen data "./dancer.seen" 03.39.02 Join karim [0] (~karim@ip-42.net-81-220-108.rev.numericable.fr) 03.39.13 Join courtc [0] (~court@adsl-33-162-17.asm.bellsouth.net) 04.02.41 Join ashridah [0] (ashridah@220-253-120-247.VIC.netspace.net.au) 04.05.35 Join QT [0] (as@area51.users.madwifi) 04.08.40 Quit QT_ (Read error: 60 (Operation timed out)) 04.12.25 Quit Camilo ("Chatzilla 0.9.67 [Mozilla rv:1.8b2/20050404]") 04.13.42 Quit _ferenczy (Read error: 60 (Operation timed out)) 04.17.25 Quit karim (Remote closed the connection) 04.40.29 Join TCK [0] (TCK@81-86-98-191.dsl.pipex.com) 05.37.09 *** Saving seen data "./dancer.seen" 06.35.32 Join stevenm [0] (~steve@stevenm-router.student.umd.edu) 06.35.43 # Hello people. anyone here ? 06.40.58 Part kergoth ("Leaving") 06.57.55 # Hello. Does anyone feel like running a speed check on the MIDI codec for me? 06.58.31 # it's some new code, not in CVS yet 06.59.06 # oh rasher, where art thou 06.59.28 Join Strath [0] (~mike@dgvlwinas01pool0-a202.wi.tds.net) 07.03.10 # anyone ? 07.03.21 # guess not 07.03.29 # that's a shame.. 07.03.41 # I really hoped at least this would run above 10% realtime this time.... 07.03.55 # maybe 11% ? 07.06.30 # keep in mind i have no idea what you're talking about :) 07.08.11 # ah.. I am looking for someone to test my latest code on target 07.08.21 # and tell me just HOW painfully slow it runs 07.08.42 # unoptimized, we got 10%. I just put some stuff into iram.. 07.08.55 # oy ;) 07.09.18 # supper time 07.09.25 Nick Strath is now known as StrathAFK (~mike@dgvlwinas01pool0-a202.wi.tds.net) 07.31.45 Join booper [0] (~boop@nat01-silvers-ext.Rutgers.EDU) 07.37.10 *** Saving seen data "./dancer.seen" 08.22.47 Quit Rob- (Read error: 145 (Connection timed out)) 08.30.17 # Ooo, a some more optimization.. 08.30.40 # can someone possibly do me a favor and test a new version of this thing on target, see how fast it runs ? 08.44.17 # is everyone asleep or something? 08.50.59 Join darkstar147 [0] (~43a18ffe@labb.contactor.se) 08.51.34 Quit darkstar147 (Client Quit) 09.09.06 Join Harpy [0] (gsDZFe4s3t@dsl-hkigw7wbb.dial.inet.fi) 09.22.21 Quit Stryke` ("Friends don't let friends listen to Anti-Flag") 09.37.14 *** Saving seen data "./dancer.seen" 09.38.42 Join t0mas [0] (~Tomas@ip503c08d1.speed.planet.nl) 09.39.12 # morning 09.39.27 # does anybody know the stacksize of the iriver? 09.41.48 # not like 45kb i guess? :) 10.04.32 Quit _Lucretia_ (Read error: 60 (Operation timed out)) 10.04.32 Quit booper (Read error: 54 (Connection reset by peer)) 10.12.00 # testplugin.c:54: error: structure has no member named `fprintf' 10.12.15 # isn't fprintf() in the plugin arg? 10.20.22 Join _Lucretia_ [0] (~munkee@abyss2.demon.co.uk) 10.33.05 Join Mirfle [0] (~chatzilla@ADSL222150.BRK.biu.ac.il) 10.42.59 Join berserker [0] (a@193.19.178.25) 10.47.58 Part berserker 11.13.39 Join muesli- [0] (muesli_tv@brsg-d9b8e188.pool.mediaWays.net) 11.13.46 # morning 11.13.57 # hi 11.19.30 # good morning people 11.19.42 # (I am still awake from the 'night') 11.35.02 # well done stevenm 11.35.03 # ;) 11.35.24 Quit muesli- (Read error: 104 (Connection reset by peer)) 11.35.31 Join muesli- [0] (muesli_tv@brsg-d9b8e188.pool.mediaWays.net) 11.37.15 *** Saving seen data "./dancer.seen" 11.41.37 # yea I been waiting for rasher to come on 11.41.54 # and maybe test and tell me just HOW inefficient this code is 11.42.23 # feels like I been awake forever 11.42.37 # ghehe 11.42.41 # Help! 11.43.00 # my code isn't working on iriver... 11.43.04 # but it is on simulator... 11.45.14 # problem 1: How can I debug on iRiver? (like write debugf() info to file?) 11.45.28 # problem 2: What's the stacksize of the Iriver? 11.49.57 # probably as big as whatever the heap hasn't taken up :) 11.50.34 # can I output it someway? 11.51.10 Join Querty [0] (~michiel@heren.demon.nl) 11.51.52 # stevenm: can I relieve you of your sleep deprived misery by testing something? 11.51.55 # i doubt it. the heap has no clear boundary. the stack typically just grows until it overwrites something vital and things blow up (at least, from my vague knowledge of 68k style cpus) 11.53.20 # ok, then I know what's happening :P 11.54.24 # and problem 1? 11.54.35 # some simple way to make debugf() write a file? 11.54.41 # damned if i know. i'm just a groupie 11.55.01 # ghehe ok 11.57.03 Quit stevenm ("Leaving") 12.05.42 # fprintf 12.05.55 # you can look at the dynarec core in rockboy, it debugs to file 12.06.07 # ok, tnx 12.06.30 # it has to, because it typically crashes all the time 12.14.55 # hmz... nice... now I can look at my own error message... and start thinking what the **** caused that :) 12.16.05 # * t0mas thanks Linus for RoLo :D 12.19.20 # * t0mas slaps t0mas with a really BIG-endian :P 12.24.30 Join preglow [0] (thomj@s183a.studby.ntnu.no) 12.24.36 Quit Mirfle ("Chatzilla 0.9.67 [Firefox 1.0.2/20050317]") 12.24.41 # the stack is not very big 12.24.50 # nope, but it works now :) 12.24.54 # just need 2,5 KB 12.24.55 Quit muesli- (Read error: 60 (Operation timed out)) 12.24.56 # is that ok? 12.24.59 # 2.5k it has 12.25.05 # ghehe 12.25.06 # oh ow :P 12.25.21 # so nothing else works when I use 2.5? 12.25.35 # hmm? 12.25.46 # you can probably use more than 2.5 12.25.52 # but try not to use the stack for large things 12.25.52 # oh ok 12.26.05 # i crushed it with 100k, that's all i know :P 12.26.12 # ghehe 12.26.17 # I did with 40 :) 12.26.21 # but 2.5 works 12.26.26 # 2560 bytes 12.26.44 # for iriver... on archos it uses less... as the LCD is smaller 12.27.23 # the stack on the archos might very, very well be smaller 12.27.33 # i have no idea 12.28.09 # well... on the archos with LCD_BITMAP it uses (LCD_HEIGHT * LCD_WIDTH) / 8 12.31.04 Quit Harpy (Read error: 60 (Operation timed out)) 12.36.37 # ok, it load's a bmp... and writes the contents as an "ascii art" to file... and display's it :D 12.36.43 # time to remove some debug code... 12.39.02 Join MoosCamaro [0] (HydraIRC@m214.net81-66-158.noos.fr) 12.39.13 Part MoosCamaro 12.39.30 Join matsl [0] (~matsl@1-1-4-2a.mal.sth.bostream.se) 12.41.06 Join MoosCamaro [0] (MoosCamaro@m214.net81-66-158.noos.fr) 12.41.17 # Hi all 12.41.23 # hi 12.45.11 # your bmp works it's done? 12.45.19 # allmost 12.45.26 # it can load images... and display 12.45.41 # but it uses a lot of memory... so I'll need to optimize some things there 12.46.05 # ok 12.50.18 Join cYmen [0] (~cymen@nat-ph3-wh.rz.uni-karlsruhe.de) 12.56.19 # hi 13.05.08 # bmp loading stuff? 13.05.16 # yeah 13.05.28 # loading a bmp into a rockbox native format buffer 13.06.24 # ah. 13.06.35 # well, uncompressed bmps are fairly simple... 13.06.41 # but i dunno about compressed ones :/ 13.06.51 # compressed ones are never used.. 13.07.02 # but rockbox format isn't that simple :) 13.07.08 # * HCl once wrote a bit of code to write a bmp from some image data 13.07.25 # only annoying thing was the alignment stuff 13.07.32 # yes 13.07.37 # it's weird order... 13.07.42 # and stored upside down 13.08.05 # mmm, forgot about that, i guess, at least, i don't remember it being upside down 13.08.08 # but i'll take your word for it : 13.08.09 # :P 13.08.14 # ghehe 13.10.59 # only one issue left... I'm having some weird pixels in simulator... 13.14.57 Quit Querty ("Leaving") 13.15.30 # HCl? 13.15.37 # how do you do this in a plugin: fd=open(meow,O_WRONLY|O_CREAT|O_TRUNC); 13.23.42 # um. same thing. 13.23.44 # look at rockmacros.h 13.23.48 # rockboy is a plugin 13.24.01 # we just used macros to not have to rewrite every posix function it uses. 13.37.18 *** Saving seen data "./dancer.seen" 13.40.09 Join belgarath [0] (~acd44a19@labb.contactor.se) 13.43.18 Join Sucka [0] (~NNSCRIPT@host81-156-210-120.range81-156.btcentralplus.com) 13.43.20 # lol 13.43.28 # my kitty recognises the cats in this movie 13.43.31 # its cute 13.58.06 Nick Sucka is now known as Sucka`away (~NNSCRIPT@host81-156-210-120.range81-156.btcentralplus.com) 13.59.42 # cats are superior animals 14.05.49 Join rasher [0] (~3e4f4094@labb.contactor.se) 14.15.32 # hi rasher 14.15.48 # http://titania.student.utwente.nl/funnycats.wmv 14.17.08 Join _ferenczy [0] (ferenczy@a1brn-117.dialup.vol.cz) 14.17.35 # ahah 14.17.38 # cats + babies = not good 14.17.56 Quit _ferenczy (Client Quit) 14.26.53 Join edx [0] (edx@pD952239A.dip.t-dialin.net) 14.35.25 Quit rasher (Read error: 110 (Connection timed out)) 14.39.22 # 14.39.33 # ret = getbit((PaddedWidth * row * 8) + col - (col % 8) + (7 - (col % 8))); 14.39.33 # if (ret == 1) 14.39.33 # { 14.39.33 DBUG Enqueued KICK t0mas 14.39.33 # bitmap[ ((bitmap_height - row)/8) * bitmap_width + col ] &= ~ (1<<((bitmap_height - row)&7)); 14.39.33 # fdprintf(debugfd,"-"); 14.39.33 *** Alert Mode level 1 14.39.33 # } 14.39.35 # else if(ret == 0) 14.39.37 # { 14.39.41 # bitmap[ ((bitmap_height - row)/8) * bitmap_width + col ] |= 1<<((bitmap_height - row)&7); 14.39.43 # fdprintf(debugfd,"|"); 14.39.45 # } 14.39.47 # 14.40.06 # the debugf() part prints the image correctly... only upside down... 14.40.18 # the bitmap part (by Bagder) makes a mess :) 14.40.25 # anybody sees why? 14.46.35 Ctcp Ignored 1 channel CTCP requests in 0 seconds at the last flood 14.46.35 # * HCl is too tired :p 14.49.34 *** Alert Mode OFF 14.51.13 # * t0mas just doesn't really understand it :P 15.01.40 Join Harpy [0] (VIKwvwzg4x@dsl-hkigw7wbb.dial.inet.fi) 15.07.59 # i must be odd 15.08.15 # t0mas: you know what the bitmap format is like internally? 15.08.29 # well... sort off 15.08.43 # I have a paper laying around here... 15.08.55 # what bits in which byte are what pixels 15.09.08 # but I don't have calculations for it at hand... 15.09.41 # every byte stores 8 pixels 15.09.47 # top pixel being top bit 15.09.54 # you can try using setpixel for now 15.10.00 # or check the rockboy implementation 15.10.19 # well... I want em in an array... 15.10.37 # so I need a calculation for what bit to set in the array for what piel 15.10.40 # *pixel 15.11.39 # I had this: Byte: (width * (row/8)) + col 15.11.56 # Bit: col % 8 15.12.28 # you need row % 8 15.12.42 # I have em as X and Y here :) 15.12.44 # take a look at sys_rockbox.c 15.12.50 # it pretty much has the same thing 15.12.50 # X = col, Y = row? 15.12.57 # yes 15.13.08 # except rockboy processes them one row at a tyime 15.13.09 # time 15.13.16 # it might be a good place to start for an example 15.13.28 # dunno how much of the old code is still there and not removed 15.13.40 # for (row) { for (col) { ... } } 15.13.44 # is what I have 15.13.48 # it started with a setpixel or clearpixel function 15.13.55 # and evolved from there for speed 15.15.10 Join rasher [0] (~3e4f4094@labb.contactor.se) 15.15.16 # hi rasher 15.15.23 # HCl: what function? 15.15.31 # vid_update 15.15.50 # k 15.16.07 # excellent.. cgi:irc didn't tell me of any activity here 15.16.26 # awesome :3 15.17.14 # * HCl has been watching the same 1 minute 38 seconds long movie for over an hour and a half :3 15.18.41 # hmz... HCl... that function is an ASM hell... 15.18.47 # browse down. 15.18.51 # there's a c version 15.19.20 # * t0mas is to stupid to understand... 15.19.34 # hmm 15.19.45 # it seems the old version was removed since our optimized versions worked fine 15.20.01 # it should prolly still be in cvs somewhere 15.20.02 # hold on 15.20.51 # I have 4 vars... ret (1 or 0, for the bit to set), row, col, and a bitmap buffer where it should be set in.. 15.21.11 # (ret = 1 -> set bit, ret = 0 -> clear bit) 15.21.42 # hrm. 15.21.48 # i guess the old version was lost... odd. 15.21.51 # brb 15.23.18 # side effect of rockboy being developed outside of cvs for a long time 15.23.55 # i'm not really up to looking at it at the moment 15.24.54 # :( 15.25.09 # but its something like 15.25.44 # (byte = width * (row/8) + col) |= 1<<(row%8) 15.26.06 # make sure your array is of the type byte.. 15.26.19 # ok, next problem :) 15.26.22 # it's unsingned char 15.26.29 # that'll do 15.26.32 # k 15.26.57 Quit belgarath ("CGI:IRC (EOF)") 15.27.09 # and the byte in your calculation is what? 15.27.24 # just the location of the byte to change for that pixel 15.28.04 # so buffer[width * (row/8) + col] |= 1<<(row%8) 15.28.33 # yea 15.28.47 # that's what I had... only written more complicated... 15.29.07 # sorry, not really up to coding for rockbox at the moment. 15.29.20 # still feeling a bit nauseous from lunch 15.29.52 # well... you have helped me some way 15.29.58 # as I have a new idea now :D 15.37.22 *** Saving seen data "./dancer.seen" 15.41.08 # unsigned char bitmap[100]; 15.41.18 # I have a pointer to something like that 15.41.27 # and I want to know the size (100 here) 15.41.28 # sizeof(*bitmap) 15.41.31 # doesn't work? 15.41.37 # no. 15.41.46 # i'd say sizeof(bitmap) 15.42.08 # that returns 1 15.42.16 # as an unsigned char is 1 in size... 15.42.18 # mk 15.42.27 # maybe you need to omit the ( ) ? 15.42.29 # *shrugs* 15.56.08 # ##C : "It's impossible to get the size of an array from it's pointer." 15.56.45 # of course 16.03.09 # unsigned char = 1 byte? 16.04.09 # on most platforms, yes 16.08.37 Nick Sucka`away is now known as Sucka (~NNSCRIPT@host81-156-210-120.range81-156.btcentralplus.com) 16.18.45 # * rasher yawns 16.22.25 Quit rasher ("CGI:IRC") 16.27.22 Quit ashridah (Read error: 113 (No route to host)) 16.46.28 # ddr ish fun 17.14.44 # ok... now I have a weird problem... 17.15.16 # when I call rb->read_bmp_file("/test.bmp", &BMPWIDTH_plaatje, &BMPHEIGHT_plaatje, plaatje, 2560); 17.15.37 # the last argument is comming out like this: 2089879603 17.18.36 # whats your definition of read_bmp_file ? 17.18.46 # int read_bmp_file(char* filename, 17.18.46 # int *get_width, /* in pixels */ 17.18.46 # int *get_height, /* in pixels */ 17.18.46 # char *bitmap, 17.18.46 # int bufsize) /* the size off bitmap in bytes. */ 17.19.29 # hrm. 17.19.32 # dunno then 17.19.35 # *shrugs* 17.19.43 # and then: debugf("Size: %d \n", bufsize) gives 2089879603 17.21.08 # i'd say you're either getting a random value or a pointer. 17.21.24 # yeah... 17.24.36 Join biggoof [0] (~jirc@pD9EC58CD.dip0.t-ipconnect.de) 17.25.30 Join asdsd_ [0] (asdsd@h-67-100-30-190.miatflad.dynamic.covad.net) 17.29.32 Quit TCK (Read error: 54 (Connection reset by peer)) 17.32.46 Join TCK [0] (TCK@81-86-209-86.dsl.pipex.com) 17.37.23 *** Saving seen data "./dancer.seen" 17.41.47 # ghehe 17.41.49 # new size... 17.41.49 # 52489964 17.42.09 # * t0mas is going mad... 17.43.04 Quit matsl (Remote closed the connection) 17.51.33 Join muesli- [0] (muesli_tv@Bbc73.b.pppool.de) 17.52.38 # high 17.52.48 # hi 17.53.10 # hi t0mas 18.02.22 Quit biggoof (Read error: 131 (Connection reset by peer)) 18.03.02 Join thegeek [0] (na@ti521110a080-1991.bb.online.no) 18.15.59 Join XShocK [0] (~XShocK@pcp09492659pcs.nrockv01.md.comcast.net) 18.21.05 # ok, anybody with an archos and a buildenvironment here? 18.32.27 # it compiles... but I can't confirm it's really working... 18.34.38 Join Stryke` [0] (~Chairman8@resnet-241-86.resnet.umbc.edu) 18.36.02 Join rasher [0] (~3e4f4094@labb.contactor.se) 18.36.10 # can't you test it in the sim? 18.53.47 # * rasher prods t0mas 18.57.10 Quit thegeek (Read error: 60 (Operation timed out)) 19.05.41 Quit muesli- (Read error: 145 (Connection timed out)) 19.06.46 # mrf 19.11.23 # Damn straight 19.11.39 # lack of sleep sucks... 19.12.08 # rasher: I was eating :) 19.12.34 # but the first version worked in iriver sim... and didn't work on iriver 19.12.44 # * HCl doesn't trust the sims. 19.12.46 # now it works on iriver, iriver sim, recorder sim and player sim... 19.12.56 # ah 19.12.58 # but I can't test the real archos things 19.13.01 # first rockboy version ran on iriver, but not on sim 19.13.19 # * rasher has no archos either 19.14.38 # well.. It compiles for player and recorder... 19.15.14 # should I test for all recorder versions? 19.16.06 # no idea how much different hey are 19.18.50 Quit asdsd_ (Read error: 54 (Connection reset by peer)) 19.23.37 Join thegeek [0] (na@ti521110a080-1991.bb.online.no) 19.23.56 Join muesli- [0] (muesli_tv@brsg-d9b8e193.pool.mediaWays.net) 19.26.48 # re 19.27.03 # hi 19.27.23 # hi 19.29.25 Quit DMJC ("Leaving") 19.33.44 # lol 19.33.44 # http://www.userfriendly.org/static/ 19.33.50 # everybody seen that one? 19.33.51 # :) 19.34.29 # :) 19.37.24 *** Saving seen data "./dancer.seen" 19.59.24 Join amiconn [0] (~jens@pD9E7F725.dip.t-dialin.net) 20.01.37 # its amiconn! 20.01.42 # quick, think the other way. 20.01.54 # o.o 20.01.56 # sup? 20.02.09 # hi 20.02.25 # hi 20.05.06 Join Shagnar [0] (~tester@p54A0C2DE.dip.t-dialin.net) 20.23.02 Join zezayer [0] (~chatzilla@host81-152-218-69.range81-152.btcentralplus.com) 20.23.03 Quit muesli- (Read error: 104 (Connection reset by peer)) 20.35.24 # hm.. "ld: region FLASH is full" 20.35.47 # for an archos recorder v2 20.35.49 # 2mb mem 20.35.59 # does that exist? 20.36.02 # or was it 8? 20.40.28 Join pfavr [0] (~Peter_Fav@213.237.46.232.adsl.ron.worldonline.dk) 20.42.43 # ji 20.42.46 # j=h 20.46.29 Join stevenm [0] (~steve@stevenm-router.student.umd.edu) 20.46.48 # Hello people 20.47.01 Join TCK- [0] (TCK@81-86-209-13.dsl.pipex.com) 20.47.31 # evening 20.47.40 # morning here :) 20.47.42 # well, afternoon 20.47.57 # ah, just the person I am looking for. Feel like running another time test " 20.47.58 # ? 20.49.46 # rasher, I think this time it may run at say, 11% instead of 10. I moved a bunch of stuff to iram 20.50.31 # heh 20.50.35 # well sure 20.51.21 # http://wam.umd.edu/~stevenm/midi.tbz2 20.51.35 # untar that into apps/plugins/ .. I haven't dared to commit that yet 20.52.54 # t0mas: "region FLASH is full" is to be expected. 20.53.17 # out of mem? 20.53.26 # This only says that RomBox (rockbox executing directly from flash rom) isn't possible 20.53.35 # ...because it doesn't fit. 20.53.46 # ok 20.54.52 Quit TCK (Read error: 145 (Connection timed out)) 20.55.00 # Archos uses a somewhat complex boot procedure. The point is that the archos firmware (even if it is the version in the rom, not loaded from disk) is copied to ram before execution 20.55.10 # test starting... 20.55.13 # now 20.55.16 # rasher, ooh sweet 20.55.22 # rasher, 120Mhz ? 20.55.33 # oops 20.55.39 # :) 20.56.11 # t0mas: [IDC]Dragon's boot loader allows having 2 firmware images in flash rom (archos and rockbox), by using compression 20.56.21 # now, then 20.56.39 # The compression is optional, so when the rockbox image is uncompressed, it can be executed directly from flash rom 20.57.25 # Unfortunately this isn't possible for all units any more, because of continually increasing rockbox size 20.57.52 # See http://www.rockbox.org/twiki/bin/view/Main/WebHome?topic=RomBox if you want to read more 20.58.08 # rasher, I cut slow ram access by 75% or so. there's only 5 places it happens now 21.00.33 # 4 minutes and counting 21.00.41 # :( 21.00.53 # if you were aiming for 11% :) 21.01.04 # I don't expect it to be down to 1 minute after iram, but maybe at least maybe 8 instead of 10 21.02.09 # all the function variables were in slow ram.. now all but the sample data is in iram 21.02.44 # it would be nice to have some kind of indicator of how far in the file you were 21.03.29 # i guess i can have it splash every 100 events or so 21.04.06 # you did rebuild the source from that tarfile, right ? 21.04.10 # yes 21.04.12 # 7 minutes 21.04.19 # 8 21.04.34 # ah 21.04.43 # DONE 21.04.49 # 8:15 or so 21.04.50 # Haha 21.05.06 # how long was the song supposed to be? 21.05.21 # 1:30 21.05.26 # mk... 21.05.27 # rasher, heh, 18 % 21.05.34 # i never thought midi would be that hard on cpu. 21.05.41 # rasher, I had another thing to try 21.05.44 # didn't they work on basic cpus that couldn't even play mp3? :/ 21.05.55 # well this is doing wavetable thingy 21.05.58 # well.. it's a lot of work 21.06.03 # but i guess those had hardware synths.. 21.06.07 # rasher, try this.. in synth.c 21.06.10 # that sure didn't happen on those kind of cpus 21.06.16 # yea. 21.06.19 # well 21.06.26 # if we can't manage to get it to run fast... 21.06.31 # we might have to drop down to lesser quality.. 21.06.34 # :/ 21.06.41 # rasher, put a /* on line 347 in synth.c 21.06.55 # rasher, and a */ on line 384 21.07.20 # that ought to disable ADSR and all the if statements and shift/mul associated with it. it doesn't make a significant difference 21.07.38 # maybe we'll get 7 out of this 21.08.41 # starting... now 21.08.45 # uh, not 21.08.52 # hm ? 21.08.58 # compile error ? 21.09.05 # no, just hit the wrong button :) 21.09.09 # oh 21.09.15 # now 21.09.45 # rasher, just out of curiosity, how long does it take to go from start to "START PLAYING" ? 21.10.04 # a couple of seconds 21.10.10 # oh wow, that's it? 21.10.21 # i guess the slow ram isn't as slow as I thought 21.10.22 # hm.. 5-6 seconds maybe 21.10.34 # during that time it loads about 7 megs of data into slow ram 21.10.40 # and does a bunch of other random access 21.10.44 # and HD access too 21.10.52 # I'll try and time it 21.11.04 # nah, don't bother 21.11.14 # as long as it's not like, a minute 21.11.28 # :) 21.11.31 # rasher, now.. is this timing with write to disk, or no ? 21.11.37 # with 21.11.42 # didn't make much of a difference did it? 21.11.42 # ah 21.11.51 # i dont remember.. dont think so though 21.12.07 # rasher, well I know how to double the speed :) 21.12.15 # cut the sampling rate in half 21.13.14 # sounds a bit different when I do that... like the higher sampling rate better though 21.14.06 # stevenm: It's probably a good idea to change the sample rate anyway, to 44100 Hz (or 22050 Hz) 21.14.34 # amiconn, ah, all right 21.14.48 # amiconn, I had it at 48000. i guess i switch to 41 21.14.50 # er 441 21.15.05 # yeah, that's what we'll be able to output on iriver anyway isn't it? 21.15.12 # Iirc the iriver hardware isn't capable of 48000 Hz, so 48000 would require resampling 21.15.31 # ah I see 21.15.47 # yup. 21.15.51 # rasher, still going ? 21.15.55 # yes 21.15.59 # 6:45 21.17.09 # * stevenm cries. 'i don't know asm!! waah' 21.17.29 # man there's gotta be a way to get this thing faster than THAT 21.17.48 # uh.... 21.18.00 # 8:45... 21.18.01 # still not done ? 21.18.05 # ok WHAT ? 21.18.06 # and counting 21.18.12 # .. how is THAT possible 21.18.36 # wwwait a second .... 21.19.04 # 9:40 21.19.08 # rasher, sequencer.c line 179 is NOT commented out, is it ? 21.19.31 # no 21.19.42 # should it be? 21.19.46 # nope 21.19.53 # if it were, the thing would NEVER finish 21.19.57 # rasher, is this 120Mhz ? 21.20.00 # heh 21.20.10 # yup 21.20.21 # Okay, what the hell ? 21.20.38 # maybe whatever I commented out was causing a later operation to complete faster? 21.20.46 # you COMMENTED OUT all the ADSR crap 21.20.54 # I doubt it. 21.21.07 # I could try a clean build.. but it did rebuild it 21.21.49 # try if you want.. 21.21.54 # but that is the strangest thing. 21.21.54 # :) 21.22.09 # maybe some sort of synth bug where it doesnt cut voices off.. but it works fine here 21.22.15 # here, lemme tar this up again 21.23.44 # rasher, http://wam.umd.edu/~stevenm/midi.tbz2 21.23.50 # 7-8 seconds until it starts playing 21.24.09 # rasher, there I took out a bunch of other crap, so all it does is synthesize 21.24.59 # alright 21.26.19 # hmm. 21.26.26 # ever had it when you like. 21.26.33 # bought 5 kilos of your favorite candy 21.26.46 # and at the end, it ending up not being your favorite candy anymore 21.27.03 # ? o.o 21.27.11 # never 21.27.16 # no, really 21.27.19 # i feared so :/ 21.28.08 # hmmm. 21.28.16 # i think that once the midi codec is all finished.. 21.28.31 # i'm gonna try to take a look at a really low quality one, and see if i can get it to run at 11mhz 21.28.38 # heh 21.29.22 # it'd be nice to have the option between quality and batterylife :) 21.30.04 # well it would be a matter of #define SAMPLING_RATE 8000 21.30.11 # really? 21.30.15 # nice. 21.30.31 # yea you tell it how fast to sample 21.30.38 # could it even be runtime-configurable? 21.30.47 # oh yea 21.31.01 # that'd be cute 21.31.54 # I have it running at 8000 sampling rate right now 21.32.06 # runs realtime on a Pentium M clocked at 78 Mhz 21.32.30 # and it's actually not as bad as I had expected 21.33.35 # it was a correct build I used - 9:40 again (not the one you gave me last) 21.33.47 # 9:40 ? BAH 21.33.51 # w e i r d. 21.33.57 # try the new one ? 21.34.02 # building now 21.34.05 # cool 21.34.16 # I was thinking, maybe I ought to optimize the sequencer itself as well 21.34.27 # there is a huge division operation here that I am seeing 21.34.51 # sequencer code is only called once like, every 400 samples or so, depending on file 21.35.21 # but there is kind of a lot of it 21.35.28 # maybe that's something to work on next 21.35.45 # trying your latest now 21.35.51 # sweet 21.35.52 # now 21.37.26 *** Saving seen data "./dancer.seen" 21.38.04 # running realtime at 150 Mhz and 22050 sampling rate 21.38.14 # but again, pentium M 21.38.44 Join muesli- [0] (muesli_tv@brsg-d9b8e18f.pool.mediaWays.net) 21.40.44 # hm 21.40.47 # think it has crashed 21.40.54 # what .. ? 21.41.02 # no hdd activity and showing "start playing" 21.41.06 # thats fine 21.41.08 # I took taht out 21.41.21 # ah 21.41.53 # I am curious now. is the sequencer causing THAT much slowdown 21.42.23 # 6:30 now 21.42.28 # done ? 21.42.36 # now 21.42.43 # ah ok 21.42.51 # no, I mean 21.42.53 # 7:00 21.42.54 # oh 21.42.58 # fark ... 21.43.04 # perhaps it helps, i d/l the patch-file yesterday and opened a midi with "midi2wave", after over half an hour, just "start playing" on the screen 21.43.23 # that's to be expected 21.43.41 # especially if it's a complicated file, and long 21.43.45 # Shagnar, you decompress it into .rockbox? 21.43.54 # yes 21.44.07 # well yea I guess it would have yelled at you otherwise 21.44.24 # rasher, still going ? 21.44.31 # yes 21.44.39 # rasher, let's try this instead 21.44.45 # done 21.44.46 # 8:45 21.44.51 # comment out, midi2wav.c, line 190 21.44.57 # wow that didnt make any difference at all 21.45.05 # so its not the ADSR slowing it down 21.45.22 # yea, comment out midi2wav.c, line 190 21.45.47 # wouldn't it be easier to profile it in the sim? :X 21.45.52 # this will be meaningless sound-wise but it will tell the slowdown due to sequencer alone 21.46.00 # HCl, don't know how to do that .. 21.46.06 # fair enough 21.46.08 # neither do i :) 21.46.11 # but i know its possible 21.47.07 # rasher, with that commented out, it should take seconds. I hope it takes longer though 21.47.20 # so I have something else to optimize 21.49.14 # I'll try 21.49.43 # now 21.49.48 # ok 21.50.03 # that didn't take long 21.50.09 # 10 seconds or so 21.50.16 # I see 21.50.17 # thanks 21.50.21 # so its all in the synth code 21.50.57 # from start playing to finished playing: 2 seconds 21.51.25 # I guess going to 22050 sampling rate will take us to 4 and a half minutes 21.51.33 # no more endless loop? 21.51.49 # well it's not TECHNICALLY endless.... 21.51.56 # it's just THAT slow 21.52.37 # I guess 22050 gives us say 34% realtime. 21.52.51 # can we really expect a 3x boost from ASM stuff ? 21.53.23 Quit muesli- (Read error: 54 (Connection reset by peer)) 21.55.39 # Anyway, I am going to go get breakfast 21.55.41 # at 4 PM 21.55.46 # rasher, thanks a lot for the help 21.56.21 # bye all 21.56.25 # bye 21.56.34 Quit stevenm ("Leaving") 21.57.54 Join matsl [0] (~matsl@1-1-4-2a.mal.sth.bostream.se) 22.07.59 Quit Shagnar ("( www.nnscript.de :: NoNameScript 3.81 :: www.XLhost.de )") 22.15.24 Quit t0mas (Read error: 110 (Connection timed out)) 22.19.16 Quit pfavr ("ChatZilla 0.9.61 [Mozilla rv:1.7.6/20050324]") 22.27.18 Quit zezayer ("Chatzilla 0.9.67 [Firefox 1.0.1/20050311]") 22.29.57 Join Kafka [0] (~meh@209.8.233.242) 22.37.33 Join t0mas [0] (~Tomas@ip503c08d1.speed.planet.nl) 22.37.36 # *ooops* 22.38.17 # ? 22.38.27 # ping timed out 22.38.49 # happens to the best of us 22.38.51 # * amiconn has been really lazy lately :( 22.38.51 # linux uptime: 22:27:47 up 119 days, 10:29, 2 users, load average: 0.03, 23.81, 42.70 22.39.06 # load was over 50 for a moment... and it started killing random processes... 22.39.13 # bye bye pptp connection 22.39.13 # heh 22.40.39 # * HCl hands amiconn coffee. 22.40.48 # meh, i got class again tomorrow... no more vacation.. :/ 22.40.55 # * preglow hands amiconn speed 22.52.02 Quit Harpy (Read error: 60 (Operation timed out)) 23.00.20 # evening preglow 23.00.27 # and HCl 23.00.32 # hello. 23.00.41 # how's your cat? (if you have one) 23.01.38 # * HCl likes to ask unordinary questions to confuse people :3 23.02.20 # My cat is experiencing a severe existence failure 23.02.29 Quit matsl (Read error: 54 (Connection reset by peer)) 23.02.44 # :( 23.02.48 # you should get one :3 23.02.49 Join Rob- [0] (~robbie@haylott.plus.com) 23.04.19 # cats are evil 23.04.58 # nuhuh. 23.04.59 Join matsl [0] (~matsl@1-1-4-2a.mal.sth.bostream.se) 23.05.47 # they scratch 23.05.52 # and meh 23.05.53 # they cuddle 23.06.02 Join stevenm [0] (~steve@stevenm-router.student.umd.edu) 23.06.09 # and purr 23.06.24 # they don't show any emotion 23.06.37 # are these, kittens ? 23.06.41 # o.o; they do here. 23.06.50 # =\ 23.06.56 # they show it in bucketloads here 23.06.57 # heh 23.06.58 # dogs are cool 23.07.12 # dogs drool :/ 23.07.18 # and smell :/ 23.07.26 # and have to be walked cause they're too dumb to walk theirselves :/ 23.07.32 # heh 23.07.37 Join TCK [0] (TCK@81-86-102-214.dsl.pipex.com) 23.07.37 # but. 23.07.39 # they're happy. 23.07.40 # and loyal. 23.07.42 # can they optimize midi2wav in asm for realtime performance ? heh 23.08.15 # can you? 23.08.33 # I don't know ASM... can optimize in C as much as I can but ASM.. i do not know :( 23.08.57 # i know a little 23.09.06 # handed in a project last year for school 23.09.22 # 2 digit +/- calculator 23.09.32 # no negative numbers 23.09.34 # asm compared to optimized C isn't that much better 23.09.37 # Heh.. midi synth in coldfire sound fun? 23.10.01 # probably only if you use the emac instructions, cause gcc doesn't utilize them. 23.11.53 # blah 23.11.57 # i'm off 23.12.03 # bye 23.12.55 # cya.. 23.13.26 # stevenm: minimize functions calls, branches, utilize iram where you can, use the emac unit for multiplication 23.13.43 # i wish i had time to do it, but i don't 23.13.54 # preglow, emac ? 23.14.08 # yes, unit for multiplication and addition 23.14.15 # I don't think it is ready for ASM optimization yet 23.14.22 # there are still things in C I can do 23.14.23 # that might also very much be true 23.14.25 # indeed 23.14.26 # then do that 23.14.34 # I will.. I was saying, in the future 23.14.44 # because at this moment, i need at least a 3x speed boost 23.14.56 # you need lots more than that 23.15.07 # but ok 23.15.10 # this midi file you use 23.15.11 # yea, we're not gonna run midi at 120mhz.. 23.15.20 # how many voices does it use simultaenously? 23.15.32 # I do not remember. I want to say, medium. 23.15.45 # it can be checked 23.15.53 # 'medium''s not much of a number 23.15.58 # do so, if you can 23.16.18 # okay 23.17.36 # preglow, checking now 23.18.00 Quit Kafka (Read error: 54 (Connection reset by peer)) 23.18.06 # o far peak is 23, still going 23.18.29 Quit TCK- (Read error: 110 (Connection timed out)) 23.18.47 # but ok 23.18.55 # what do you do with each voice? 23.18.59 # interpolate and amplify? 23.19.13 # peak is 27 voices for that file 23.19.28 # there is more work than it seems 23.19.32 # then explain 23.19.52 # a check to see which direction to go - if it's looped 23.20.00 # a looping check, looping reversal if needed 23.20.08 # then shift it foreward 23.20.23 # then check to see if it is being 'ramped down' after it's been killed 23.20.31 # direction check? why don't you just make the delta be negativ 23.20.33 # e 23.20.33 # this only lasts for 255 samples fortunately, and eliminates annoing clicks 23.20.44 # that you can do on note on 23.21.04 # it starts out positive 23.21.18 # if the loop is pingping, it needs to switch to negative, then back to positive, etc 23.21.28 # then get 2 samples, interpolate 23.21.53 # do envelope stuff to it, ie, check which way the rate should go, do the rate stuff 23.22.00 # if the rate or the offset ran out, kill the voice 23.22.11 # amplify based on current offset 23.22.18 # (for envelope) 23.22.29 # and shift back accordingly 23.22.37 # you've got an if where you check for direction 23.22.40 # that can be eliminated 23.22.43 # yes 23.22.56 # then amplify based on channel volume and note volume 23.23.00 # and again shift accordingly 23.23.11 # just do so->delta = -so->delta each time you reach a backwards loop 23.23.41 # I guess channel and note volume can be combined, but then iut has to be recomputed everywhere for every note on that channel the minute channel volume changes 23.24.02 # a mul is nothing 23.24.12 # removing one mul isn't going to do much 23.24.14 # I was thinking about combining the several shifts into one but I run out of bit percision 23.24.26 # hmm 23.24.44 # because the number varies so much.. I make it bigger, I make it smaller, then bigger again 23.24.52 # yes 23.24.54 # well 23.25.02 # ie, here s = (s * (so->curOffset >> 22) >> 6); 23.25.07 # for volume muls, interpolation and so on, you should use the emac unit 23.25.17 # preglow, how do I use the emac unit ? 23.25.27 # is it a #define or something or what ? 23.25.52 # then there's the whole loop outside the synth. ie, run thru all the voices, etc 23.25.54 # i've made a file with macros 23.25.59 # but you need to learn how to use it first 23.26.18 # I made that variable a global variable and in iram, so that it eliminates the overhead of copying the variable and putting it in plaes 23.26.49 Join Aison [0] (~hans@zux166-181.adsl.green.ch) 23.26.55 # all this shifting also takes a lot of cpu 23.26.57 # everything synth related is in iram except for the samples. and it went from 10 minutes to 8 minutes 23.27.04 # shifting is expensive ? 23.27.12 # well, no, but you do a lot of it 23.27.21 # and when the shift is above 8 bits, the shift takes two instructions 23.27.28 # because the shift number has to be put in a register 23.27.34 # ah right 23.27.48 # I am also using signed ints but I went to signed short ints as much as possible 23.27.56 # what is the relation between speed and variable size 23.27.57 # that won't save you much 23.28.02 # go for ints 23.28.20 # hmm 23.28.24 # gimme a sec 23.28.55 # stevenm: Using short on a 32 bit cpu is most often slower than using int 23.29.09 # stevenm: not on coldfire 23.29.11 # ehh 23.29.16 # Using short only pays off if you need to save space 23.29.16 # what do you recommend on coldfire ? 23.29.17 # amiconn, i mean 23.29.28 # but it is also like amiconn says 23.29.34 # the only place you save cycles is with muls 23.29.39 # preglow: I guess this is also true for coldfire 23.29.39 # what should I aim for? int? short int? unsigned char ? 23.29.40 # where shorts are a wee bit faster 23.30.06 # i converted a bunch of ints to unsigned chars. did I make it better or worse ? 23.30.20 # what were they used for? 23.30.56 # for coldfire, you're better off using ints, the coldfire instruction set often doesn't support byte and word operations 23.30.56 # The ops will most likely be the same speed regardless of short or int, but loading a short from memory often needs additional instructions (signed/unsigned extend) 23.31.59 # signed/unsigned extend? waht do you mean 23.32.19 # when it loads a 8 bit value into a 32 bit register, it has to move and extend bits 23.32.29 # the sign needs to be moved to bit 31, for instance 23.32.43 # and all the other top 23 bits need to be set if it's negative 23.32.53 # ah. so I should declare it unsigned ? 23.33.00 # no, you should use ints 23.33.12 # Btw, this is even more 'fun' on sh1, because the sh1 sign-extends by default. So loading an 'unsigned short' into a register is real fun.... 23.33.41 # hahahha 23.33.54 # (Well, not too much, since there is a special instruction for this) 23.34.08 # wow you guys know a lot of asm 23.34.10 # stevenm: but no, bottom line, ints are fine, mostly 23.34.22 # Still, loading a byte or short needs 2 instructions, loading an int (long) takes 1 23.34.37 # so I should declare stuff LONG ? 23.34.42 # 'int' will do 23.34.47 # okay 23.34.49 # but i don't know 23.34.51 # There are some simple rules 23.34.56 # maybe long is prefered 23.35.12 # is there a way to find out ? 23.35.18 # that depends on rockbox 23.35.21 # and the other targets 23.35.26 # int is 16 bit on some archs 23.35.31 # Use 'int' wherever a 'short' would suffice range-wise, but space is not an issue. This is usually the fastest 23.35.44 # okay, so I stick to int 23.36.00 # preglow, now.. do you believe this emac unit would make life much faster ? 23.36.04 # stevenm: you must also make sure that all the data you use are aligned to a 32 bit boundary 23.36.10 # Use 'long' only when the value might exceed the range of 'short'. Of course this is only necessary in case we're compiling for a 16 bit target cpu 23.36.20 # preglow, what do you mean ? 23.36.22 # Use 'short' only when space is an issue 23.36.32 # amiconn, okay 23.37.24 # stevenm: all data you access should be placed at an address that is divisible by four 23.37.27 *** Saving seen data "./dancer.seen" 23.37.41 # Of course, the 'long' rule should be obeyed in rockbox, because we do have a 16-bit target. (Although it seems that development for that has come to a (temporary?) halt) 23.37.57 # stevenm: you try to access a 32 bit int and it is not thusly aligned, the cpu will have to do two moves and combine it to a single 32 bit value, this takes time 23.38.17 # amiconn: it's worth heeding anyway, that arch seems to be semi-popular 23.38.20 # amiconn, this thing would never be for archos I dont think .. 23.38.29 # stevenm: gmini 23.38.33 # stevenm: Talking Archos _gmini_ here 23.38.43 # amiconn, ah.... I see 23.38.51 # jyp actually did port libmad to the gmini 23.38.54 # The archos jukeboxes are 32 bit 23.38.55 # never heard if it worked 23.38.56 # SH1 23.39.00 # god, that sounds like nightmare 23.39.38 # preglow, data aligned to 32 bits... when I declare a variable in C, does that automatically happen? 23.39.47 # does this only apply to malloc'd stuff or to everything I declare 23.40.03 # because I can easily enough modify the malloc to return things divisible by 4 23.40.09 # just skip a few bytes 23.40.10 # stevenm: variables in c should be auto aligned if the compiler knows what it's doing, malloc i don't know about 23.40.24 # but yes 23.40.32 # modifying malloc should be easy, you just do what you're saying 23.40.56 # amiconn : got your h140 yet? 23.40.56 # preglow, but m68k-gcc is smart enough to align declared variables? 23.40.57 # Keeping 32 bit alignment is also important. Some cpus don't only get slower on unaligned accesses (like the coldfire does), but count unailgned accesses as a severe error 23.41.01 # stevenm: i don't know 23.41.13 # stevenm: i really would think so 23.41.53 # In fact, m68k is the only architecture I know of that does *not* throw an address exception on unaligned accesses 23.42.06 # x86? :P 23.42.06 # stevenm: yes it is 23.42.24 # x86 only tosses exceptions if you use movaps and the like 23.43.21 # I must admit that although I played with x86 asm a little (waaay back in the past, at the time of the '286), I never really understood it 23.43.47 # and movaps is an sse extension 23.43.58 # x86 is very simple 23.44.02 # a pain to program 23.44.29 # the number of registers make you want to cry 23.44.59 # ouch.. at least it aint a PIC16F877 23.45.14 Join Strath [0] (~mike@dgvlwinas01pool0-a202.wi.tds.net) 23.45.30 # preglow, now if I do all this emac stuff.. will I still be able to use the Simulator to see it it worked ? 23.45.50 # stevenm: no 23.45.57 # preglow, ... ! bah 23.46.07 # so you stick to c for now 23.46.11 # preglow, is there a way to at least tell if I am adding the right numbers? 23.46.11 # there's more to be done anyway 23.46.16 # preglow, yes. 23.46.35 # if you haven't got a player, then no, you can't do emac without having to bother someone else excessively to test the code 23.46.49 # convert everything back to long, make the delta signed, possibly rearrange the loop conditions 23.47.04 # yea I think I bugged rasher way too much already 23.47.28 # haha, no that's just fine 23.47.32 # glad to help 23.47.37 # :) thanks 23.47.58 # i was planning to write an emac howto to help familiarise other people with it 23.48.04 # but doing emac optimization tests would take ages I guess 23.48.13 # yesw 23.48.14 # yes 23.48.57 # preglow, if emac are functions, how hard would it be to write c equivalents of them for the sim ? 23.49.06 # they're not function 23.49.12 # they're assembly level instructions 23.49.24 # ouch 23.49.24 # but i guess what you say could be done 23.49.27 # I guess that is for last then 23.49.35 # if we access them through macros 23.49.40 # maybe, #define something? 23.49.43 # yea yea exactly 23.49.57 # http://glow.m0f0.net/rockbox/emac.h 23.50.06 # i made those macros when i first tried to learn how it worked 23.50.10 # but since then i've never even used them 23.50.23 # amiconn? 23.50.33 # to truly utilize it, you have to write in assembly, to use the instructions with parallell loads 23.50.57 # your memory idea.. 23.51.04 # preglow, woah, that is the sound of a bunch of code going so far over my head I cant even see it 23.51.30 # I had a "new" idea, but I meight be the way you wanted it... 23.51.43 # stevenm: here's an example use of it: http://glow.m0f0.net/rockbox/dsptest.c 23.51.50 # adding a pointer to the place to start saving the file, and a size for how far to save 23.51.51 # stevenm: in sine() i do linear interpolation 23.51.58 # (just return error if the image doesn't fit.) 23.52.25 # that way it should be possible to make plugins load images subsequent... in the pluginbuffe 23.52.26 # r 23.52.42 # stevenm: the nice thing with it is that you can do 32 bit x 32 bit multiplies with a 64 bit answer 23.53.13 # oh no I dont need ant=ything that big 23.54.19 # it can also do ordinary muls, but it does them faster 23.54.27 # and i can add the result to another register 23.54.49 # special registers... 23.55.20 # but if you haven't got a device, don't bother 23.55.25 # i guess i can jump off that bridge what I come to it 23.55.26 # just do what you can in c 23.55.37 # yea definitely 23.55.44 # i'd love to help, but i need to finish libmad first 23.55.46 # I was considering buying an H3x0 for this 23.55.49 # and now i need to get back to work 23.55.54 # preglow, oh definitely, that is more important 23.56.17 # but since 3x0 is nowhere near supported, I am waiting.. plus I already have an ajbrec 23.56.23 # * amiconn fiddles with add_dir_entry() 23.56.33 # amiconn : got your h140 yet? 23.57.00 # Still no iriver here :( Need to mail the dealer.... 23.57.05 # call 23.57.10 # use a loud voice ;) 23.57.15 # Speaking of... if you wired a CF card into an ajbrec, to the HD connector, would it work? ie, assuming the wiring is right, would the software work with it? 23.57.17 # indeed 23.57.21 # that's a loong time