#milkymist IRC log for Saturday, 2011-10-08

wpwrakhmm. any OSXers around ? i think Fallenou uses OSX (?)00:00
kristianpauland may be sleeping now..00:00
wpwrakyeah, or clubbing ;-)00:01
kristianpaulfun :)00:01
kristianpaulxiangu too, but is not here either..00:01
kristianpaulxiangfu*00:01
wpwrakah, didn't know he had OSX. thought he would have debian or ubuntu.00:01
n0carri3rhmm brb00:03
n0carri3rneed to shut off my wifi perhaps to get this to connect over cable00:04
kristianpaulwpwrak: yes probably00:04
kristianpauln0carri3r: no need shudown i guess00:05
kristianpaulso you plans is move laptop to wifi and M1 to router right?00:05
kristianpaulah you shutdown, :)00:06
wpwrakshut down hard :)00:09
n0carri3rOK, got it working!00:20
kristianpaulcool :)00:21
n0carri3rcopying over about 500 milkdrop patches to test00:24
kristianpaulwow00:24
n0carri3rrenamed them from *.milk to *.fnp, hopefully with some edits i can make them work on the MM00:24
wpwrak500 patches ! wow.00:25
kristianpaulxiangfu: wb !!00:25
Action: wpwrak adds vigorous parser optimization to the to do list00:25
xiangfukristianpaul, :)00:25
kristianpaulwpwrak: haha :)00:26
n0carri3rhmmm00:34
n0carri3ra few of these milkdrop presets run with no conversion needed00:35
n0carri3rothers hang on "pow" and other functions00:35
wpwrak"hang" ?00:35
n0carri3rsorr00:35
n0carri3rsorry*00:35
n0carri3ri mean, hang up, dont work00:35
kristianpauleception when comping i guess?00:35
kristianpaulcompiling*00:36
kristianpaulah00:36
n0carri3ryeah, compiling errors00:36
n0carri3rand some use shaders, which are unsupported, of course00:36
wpwrakwhat does the compiler complain about ?00:36
n0carri3rone example:00:36
n0carri3r"failed to add per-vertex equation 1. 77: reading unbound variable: ang00:36
n0carri3rthings like that00:37
wpwrakhmm. can you paste the whole patch somewhere ? e.g., pastebin.com00:37
n0carri3ri'm guessing "ang" is an unsupported variable?00:37
wpwrakshould "ang" be predefined ?00:38
n0carri3rif i comment out that line, it works00:38
kristianpauli think be implemnted :)00:38
n0carri3ri'm not sure about "ang" in milkdrop00:39
n0carri3ri'd have to look it up00:39
n0carri3ralso giving errors on "rand"00:40
n0carri3ris there a random variable on MM?00:40
xiangfu_all support variables is here: https://github.com/milkymist/flickernoise/blob/master/src/compiler.c#L5400:43
xiangfu_there is no random variable.00:45
wpwrakcould "ang" be synonymous to "rot" ?00:46
xiangfu_yes. add some lines to function 'pfv_from_name'00:50
wpwrakor  ang=rot  in the patch ?00:50
wpwrak(or just s/ang/rot/ ;-)00:50
xiangfu_(ang=rot) should works fine.00:51
n0carri3rahh OK cool00:51
wpwrakhmm, using  pld readreg  makes a later reconfig into standby hang. grmbl. in fact, it seems to prevent anything using IPROG (from the M1) from succeeding. jtag still works, though, including jtag-boot00:52
n0carri3ryeah, most of the simple patches (especially geiss ones) work with little or no changes00:53
xiangfu_we can add one line "if(strcmp(name, "ang") == 0) return pfv_rot;" to 'compiler.c'00:53
wpwrakbut it seems that BOOTSTS isn't useful as an indicator of how we got into the standby bitstream00:53
wpwrakn0carri3r: so patches using "ang" look good if you use "rot" instead ?00:54
n0carri3rgonna find one00:55
n0carri3rone moment00:55
n0carri3rhmmm tried one now00:55
n0carri3rdoesnt seem to display much00:56
n0carri3ri tried Luz by Geiss00:56
n0carri3rhmm, its also ignoring fRating00:57
n0carri3rthat could be an issue00:57
n0carri3rwait, is that just a rating system? haha00:57
wpwrakmaybe it's one of  http://www.urbandictionary.com/define.php?term=Frating  :)01:03
n0carri3rhaha01:03
n0carri3rOK, well.. i gotta run for now01:03
n0carri3ri'll be back soon01:03
n0carri3ri realized a lot of these presets i copied used shaders01:03
n0carri3ri'm gonna go back and grab older milkdrop presets, which should be less complex and have higher compatibility01:03
n0carri3ri'll make FNP copies of any of the ones that look cool and work well01:04
n0carri3ri already found about 10 or 1201:04
n0carri3ri'll be back soon to chat01:05
n0carri3rhave a nice night, guys!01:05
kristianpauln801:07
wpwrakwolfspraul: you just missed one of our first real users01:21
wolfspraulhe01:21
wolfspraulI always sense some sarcasm in what you say :-)01:21
wpwraknaw, no sarcarsm. at least not this time ;-) a VJ who tried a few new patches.01:22
wpwrakpromptly found a bunch of unimplemented features.01:22
wpwraksome sound hard to do. others less so.01:23
wolfspraulaha, nice01:24
wpwrakapparently, there are some 500 patches out there, of which quite a few should run on the M1. someone should go through them and classify them ... (well, perhaps this VJ will just do that)01:24
wolfsprauloh I know01:24
wpwrak(classify) as in whether they work and if not, why not. so far, missing things include variable called "ang" (dunno what it is - may be related to "rot"), a random number generator via the variable "rand", and shaders. the latter probably aren't so easy to have.01:25
wolfspraulok great we get feedback, very happy about that01:27
wpwrakthat 500+ potential patch repository may also change the marketing message a bit. it's not that we currently have ~50 patches and there could be more, but that we're already sitting on a goldmine we've barely begun to exploit.01:27
wpwrak(feedback) yes ! real user feedback !01:27
wpwrakmeanwhile, i'm precision-measuring the work of my air conditioning :)01:30
kristianpaulnetworking setup ran "smooth"01:30
wpwrakvery, yes. i was afraid he(?) would get stuck there01:30
kristianpaulyeah01:30
wolfspraulI am aware of the old patches01:30
kristianpaulafortuably its router was there01:30
wolfspraulbut it's work to port more to m1, which we are aware of but it's somewhere in the 100+ items todo list01:31
wpwrakwell, it seems some just need testing01:31
wpwrakshould be fun to FFT the temperature curve, with the clean swings from the air conditioning01:35
kristianpaulplus a curve of humidity?01:37
wpwrakhow many bench meters do you think i have ? ;-)01:38
kristianpaulwell .. :)01:38
wpwrakbut yes, one more measurement would be possible. but then i'd feel a little naked in my lab, with all the instruments in the guest room01:38
kristianpaulhaha01:39
wpwrakthe meter i'm using has a multiplexer card. but that probably doesn't work with a thermocouple01:40
kristianpaulfor having usb connectivy i hope fancy features :)01:40
wpwrakthe other one has ethernet :)01:41
wpwrakand my function generator even has a little web server :)01:41
kristianpaulok ok ;)01:41
wpwrakkristianpaul: you can access it here http://201.231.163.94:800101:56
wpwrakkristianpaul: it's not connected to anything, so you can't break anything by generating weird signals01:56
kristianpaullets see02:00
wpwrakit didn't like that :)02:01
kristianpaulhaha02:02
wpwrakhmm, is it stuck ?02:03
kristianpaulyeap02:03
wpwraki see the forwarding complain02:03
wpwraklet's see02:03
wpwrakno, should be fine02:04
kristianpaulgone again02:07
kristianpaulanyway,looks very nice02:07
wpwraki wonder where these intermittent failures come from. i made the port forwarding with ssh. it complains  connect_to fg port 80: failed.  ("fg" is the host name)02:09
kristianpaulssh :o02:10
kristianpaultun?02:10
wpwrakssh -R :)02:10
wpwraklet's see if you've found the self-destruct button ... no, not yet :)02:22
kristianpaullol02:31
wpwrakyou're not outputting a signal. but i think the level is very low02:32
wpwraks/not/now/02:32
wpwrakthat's the DC offset02:34
wpwrakand no, you can't electrocute me so easily ;-)02:35
kristianpauli'm done02:43
wpwrakturning the critter off again02:49
wpwrakpity my other instruments aren't web-enabled02:49
wpwrakmeanwhile .... verified that BOOTSTS does reliably indicate whether standby booted or not. alas, it doesn't help with the other question we have, i.e., whether we came from power up or from a sw reboot02:53
sb0(blank patch) good idea. I was also thinking of a small 'keyboard panel' pop-up in the patch editor, with buttons that insert variable names when clicked on08:40
sb0this way we can even edit patches with the mouse alone08:40
sb0and no, ang is not supported... ideally, need to find a nice hack to implement atan2() on the FPGA with few resources08:42
sb0or a good-enough approximation of it08:43
sb0xiangfu, ang != rot08:44
sb0actually, if we are to improve the renderer, implementing this thing would indeed support many new interesting MilkDrop patches08:45
sb0other important missing features are custom waves/shapes and draw the waves with more points08:46
sb0using more points is just a value to change, but it makes things slow atm08:46
sb0hmm there is a standard for MIDI USB devices: http://www.usb.org/developers/devclass_docs/midi10.pdf09:13
sb0and contrary to what the USB people usually write, it's not even several hundred pages long... maybe getting this stuff to work is simpler than I thought09:14
wpwraksb0: do you think of extending the FPU instruction set for new things (e.g., the atan2) ? or would new things have to fit into the existing set ?10:31
sb0we can extend it10:32
sb0unless we come up with a decent approximation of atan2() using the current operations10:32
wpwrakgood. there a bunch of spare bits :) pity that they're not enough to get rid of the hard-coded register in IF10:33
sb0note that it should take two parameters (x/y coords) and handle the four quadrants (it's not just arctangent)10:33
sb0the hard coded register is not only a problem of instruction set, it's also a problem of register file bandwidth10:34
sb0there are only two read ports on the register file10:34
sb0it's SRAM10:34
wpwrakthe usual approach is to do a small bit of the range by the approximator and the rest in software10:34
sb0and the IF register is overlaid with flip flops, which can be read at any time10:34
sb0(it's just more FPGA routing)10:34
sb0there are few IFs anyway, and the IFs are slow10:35
sb0so this solution is acceptable10:35
wpwrak(read ports) hmm. change IF semantics to if (reg_in1) reg_out = reg_in2; ?10:36
wpwrakof course, this would create another write-write dependency, which may not be so good10:36
sb0why?10:36
sb0what's the problem with the current solution?10:37
wpwrakall the fixed registers create write-write dependencies, and R0002 sees a lot of reuse. a pure SSA design should give the scheduler more flexibility.10:38
wpwraknot sure if it would result in significant output improvements, though. would have to simulate10:38
sb0it's a bit similar to e.g. the zero flag on some microprocessors10:38
sb0well, the PFPU isn't the bottleneck10:39
wpwrakyes. also flags are anti-SSA :)10:39
wpwraknot yet ;-)10:39
wpwrakseems that we only have the simpler patches this far. there appear to be bigger ones just beyond the horizon.10:39
sb0if you are looking for optimizations, current candidates are texturing (very difficult) and graphics primitive drawing in software (easier and more classic)10:39
sb0also, FIR filtering of the incoming audio use a tad of CPU power too10:40
wpwrakthe primitives would still be in the FPU ? or in the LM32 ?10:40
sb0some 20-30%10:40
sb0all the primitives are drawn in software, using (mostly) integer arithmetic10:40
sb0btw you can use 'cpustats' on the RTEMS shell to get the CPU time breakdown per task10:41
wpwrak(primitives) okay, that shouldn't be to hard. plenty of prior art to work from :)10:42
wpwrakbtw, i have my sights set on the parser. if we add a lot of patches, it will become the next bottleneck. also, the language design sucks. how open are you to syntax changes that allow milkdrop patches still to be parsed but also a cleaner syntax for m1 patches ? (which milkdrop wouldn't understand. well, unless they implement it too)10:45
sb0mh? what's the problem with parsing milkdrop patches?10:45
wpwrake.g., split things into sections. global, frame, vertex. without repeating for each equation where it goes.10:46
sb0I have already added some simplifications compared to MD, like making equation numbers optional10:46
sb0oh yes, sure, we can do that10:46
wpwrakgreat. i think that would make things a lot less intimidating :)10:47
wpwrakthe other thing are all those strcmps. but getting rid of them properly will need some rewriting. also a lot of the parser could probably be initialized only once at boot time and then be kept around10:50
wpwraki think the current design allows you to use things like function names as variables. i wonder if a) this works and b) if anyone actually uses it ? if not, they could all be sorted out in the scanner. poof, current O(n) searches become O(1) and the whole symbol table shrinks :)10:53
sb0by 500 bytes? doesn't really matter10:55
sb0are you sure those strcmps are slow?10:56
sb0I mean - of course they are, but is their effect really noticeable on the whole thing?10:56
wpwrakslower than, say, a pointer comparison. not sure how slow exactly, though10:56
sb0anyway, time to get to Grenoble10:56
sb0bye10:56
wpwrakhave fun !! :)10:57
wpwrakhmm, is there a way to permanently save the network and performance settings such that they survive a reboot ?11:17
wpwrakah, now it happened. seems to be semi-automatic :)11:21
n0carri3rmorning all13:56
kristianpaulmorning14:19
n0carri3rhi :)14:26
wolfspraulgood morning!14:27
wolfspraul(though 10.30 pm here...)14:27
wpwrakwolfspraul: high time to get up :)14:28
wolfspraulJon and I had a good meeting with a guy named Markus from metrowaves today (I think those were the names)14:28
wpwrakurban vibes ?14:28
wolfspraulnew perspective. Markus talked about LED walls and their unusual aspect ratios (he played with one that had a 13:2 ratio)14:28
wolfspraulhe was wondering how well the Milkymist could auto-detect audio sensitivity, and do so in different frequency bands in parallel14:29
wolfspraulhe asked whether the DMX could sync the light color with the color on the display-out. say some effect on the display turns red -> the color info over DMX turns red14:29
wolfspraulis that possible?14:29
wolfspraulhe felt audio latency is not so important, in fact if it's perfectly synced people don't like it, they need some space14:30
wpwraki guess the auto-level needs experimenting. the EWA would be easy enough, but then you probably need some fine-tuning14:30
n0carri3rwolfspraul == wolfgang?14:30
wolfspraulyes14:30
n0carri3rah, it's don! hello :)14:30
wolfspraulthat was about it14:30
wolfspraulyes already knew it14:30
wolfsprauln0carri3r14:30
wolfspraul:-)14:30
n0carri3rhaha yes14:30
wolfspraulit looks like we can work with a club in Beijing to be our guinea pig14:31
wolfspraulLantern14:31
wolfspraulthey will buy one, and then we will finetune based on their feedback over some months14:31
n0carri3ri was here last night for a bit, working on importing milkdrop presets via FTP - got a lot of them working with no modifications14:31
n0carri3ri will be posting more information on the wiki soon14:31
wolfspraul'finetune' meaning we will hopefully be able to relatively quickly implement things that make the box more valuable for Lantern14:31
n0carri3ri don't have the MM here at the moment, but i do have two questions: 1. is there a list of variables and functions somewhere that is complete? 2. is there a limit to the number of per_frame variables that can be used?14:32
wolfspraulas with some of Markus questions above, my answer is: don't know14:33
wolfspraul:-)14:33
n0carri3rboth of these are related to porting milkdrop presets smoothly to FNP14:33
wolfspraulI'm still expanding my knowledge of all this14:33
n0carri3rOK, should i try the mailing list?14:33
wolfspraulno, here is perfect14:33
wpwrak(auto-level) what may also help is to adjust the patches to have more uniform expectations on the levels. at least they seem to be all over the place, with one already going mad when a feather drops while the next hardly moves when your ear drums swap places14:33
wolfspraulprobably right now the only person who can give you fast and definitive answers on such details is Sebastien, nicknames lekernel or sb014:33
wolfspraulhe is traveling a bit right now, demoing m1 here and there14:33
wolfspraulsure you can send to the list too, it will neither be faster nor slower than here14:34
wolfspraulwpwrak: agreed14:34
wolfsprauldo you know whether we can react with different effects on different frequency bands?14:34
wolfspraulI mean whether M1 today can do that14:34
wpwrakn0carri3r: i think the limit is 128 registers/variables. you can see the current peak occupancy here: http://downloads.qi-hardware.com/people/werner/m1/perf/chart-20110924.html14:35
kristianpaulI was about to ask that :)14:35
wpwrakn0carri3r: the value relevant at the moment would be in the "Original" group, column "Regs"14:35
n0carri3rthanks - that is interesting, as i was getting some errors that seemed to be related to lack of registers, when importating milkdrop patches14:36
wpwrakn0carri3r: in the future, FN will use an often more efficient algorithm, in the "New (LCFP)" group, again "Regs"14:36
wpwrakhmm yes, some of the shipped patches already pretty much max it out14:37
kristianpaulac97 core dint implemented fft but other method (FIR?), now is still have registers that cab read for something useful..14:37
wpwrakluckily, it's particularly the pathological cases where the new algorithm will help most :)14:37
wpwrakwolfspraul: (frequency bands) afaik, yes. at least there are frequency-related variables. i only glanced at the semantics so far, though14:38
kristianpaulwpwrak: oh nice, wich variables?14:38
wpwrakshould be bass, mid, treb, bass_att, mid_att, treb_att,14:39
wpwrakmaybe there's more14:39
kristianpaulokay and what frequency-range correspond to each one?14:40
wpwrak"low, medium, and high" ;-)14:41
wpwrakthat's all i know :)14:41
kristianpaulhum ..14:41
n0carri3rand the att variables, like bass_att14:41
n0carri3rshould be attenuated, or a bit smoothed out i think14:41
wpwrakkristianpaul: maybe check the thesis if there's anything. or else the implementation :)14:42
n0carri3rso they may not react as violently to sudden changes in volume on a specifc frequency range14:42
n0carri3ri'm guessing, just based on the variable name and what it stands for :)14:43
kristianpaulyeah, i was worryinng about it14:43
n0carri3rbut of course it's good to EQ the sound, maybe even between the main board and the milkymist, for your purposes :)14:43
kristianpaulto wide, PD people may laught on me if said that :)14:43
wpwrak(dampening) an EWMA should be easy enough to calculate: avg = x*value+(1-x)*avg14:57
wpwraknot sure if variable life time is suitable for this, though14:57
wpwrak(but we can tweak that, if necessary :)14:58
mwallekristianpaul: uclibc is linux only20:46
mwallebut there is already a newlib port lm3220:46
mwalle(rtems is using it)20:46
n0carri3revening all22:51
mwallehi23:08
--- Sun Oct 9 201100:00

Generated by irclog2html.py 2.9.2 by Marius Gedminas - find it at mg.pov.lt!