Monday, 2015-06-22

*** NickSB2 has joined #lv200:04
*** falktx__ has quit IRC00:32
*** NickSB2 has quit IRC01:03
*** edogawa has joined #lv207:16
*** falktx has joined #lv207:34
*** Anchakor has quit IRC08:13
*** Anchakor has joined #lv208:15
*** ricardocrudo has joined #lv208:22
*** NickSB2 has joined #lv208:38
*** ddom has joined #lv208:55
*** bgola_ is now known as bgola09:45
*** bgola has quit IRC10:43
*** bgola has joined #lv210:43
*** ventosus has joined #lv211:05
*** ssj71 has quit IRC11:28
*** sigma6 has quit IRC12:34
*** NickSB2 has quit IRC13:49
*** falktx has quit IRC15:31
*** ricardocrudo has quit IRC15:34
*** rncbc has joined #lv216:10
*** ddom has quit IRC16:13
*** rncbc has quit IRC16:34
*** gabrbedd has joined #lv216:41
*** flexus has joined #lv216:43
*** ricardocrudo has joined #lv217:46
*** flexus has quit IRC17:48
*** flexus has joined #lv217:53
*** ricardocrudo has quit IRC18:54
*** NickSB2 has joined #lv219:12
*** flexus has quit IRC20:26
*** falktx__ has joined #lv220:53
*** ventosus has left #lv221:13
*** edogawa has quit IRC22:16
rgareusfalktx__: testing lv2-port count scalability http://pastebin.com/Uex9xXsx22:21
rgareusit's not a real valid test (easily fooled by compiler optimization). but a baseline22:22
rgareusI suppose a real test (plugin in host, compiled with optimization) would be more meaningful though I don't expect the value to change dramatically22:23
falktx__param[] is not set22:24
falktx__you should set those values to something22:24
rgareusthey're set to some random value that's on the stack22:25
rgareusbut sure, feel free to improve things22:25
falktx__stack values are random, can be inf, nan, denormal or some other weird number22:26
rgareusI just wanted a quick test. on i386 (X60s) overhead for 2K parameters is 9%22:26
falktx__rgareus: the overhead and big param list is not my main issue/concern here22:26
falktx__rgareus: it's hiding things and implementing them plugin side22:26
falktx__the host is the one that should decide what to do regarding midi-cc22:27
rgareushow can in case of synths?22:27
falktx__that's what we need to figure out22:28
falktx__if you're going to list them as lv2:parameters and changing values happens through an atom event, that's cool for me22:28
rgareussend a CC-7 volume request.   Note-on, note-off, CC-7 volume  other-note on.22:28
falktx__that gets rid of the big float array overhead22:28
rgareusif the volume would be a control-port you can only set it once per cycle22:29
falktx__rgareus: carla subdivides the buffer22:29
rgareussplit cycle22:29
falktx__yeah22:29
falktx__but with lv2:parameters + atom events this is not an issue22:30
falktx__atom events are timestamped22:30
rgareusyes +1 for using Atoms22:30
rgareusthat's also the plan I have in mind for controls22:30
rgareusjust send a LV2:Patch22:30
falktx__patch:set param:that_thing 1.23f ?22:31
falktx__something like that?22:31
rgareusyes22:31
falktx__ok, then I guess we just need to agree on some format for this22:31
falktx__instead of lv2:ports provide lv2:parameters22:31
falktx__hopefully in some way that makes portProperties/range/designation also work22:33
falktx__rgareus: perhaps port type lv2:Parameter?22:33
falktx__http://lv2plug.in/ns/lv2core/#Parameter22:33
rgareusI thought it's    atom:supports patch:Message22:33
falktx__yeah, but you need to expose those parameters to the host22:34
falktx__so it can show them to user, do midi bindings, etc etc22:34
*** Anchakor has quit IRC22:35
rgareusIIUC, you query them on demand22:35
falktx__hmm22:35
falktx__so dynamic ports?22:35
rgareuspatch:wildcard will get you all of them22:36
falktx__but that implies the host has enough space on the rt atom buffer for it22:36
falktx__I doubt it will22:36
rgareusI'd like to hear drobilla's opinion about this. I don't know what exactly he had in mind there22:36
falktx__I'd love to hear *anything* from drobilla22:37
falktx__he's been offline for a few days now22:37
rgareuswell, a plugin can specify a min required atom buffer size22:38
rgareusif a plugin has 2M parameters, it should say so and request a minSize of a few MB.22:38
falktx__heh... hmmm22:38
falktx__I'd prefer if that data was on the ttl in the first place22:39
rgareus200MB of ttl22:39
rgareushow are you planning to trackle this with zynaddsubfx?22:40
falktx__optmize lilv! :P22:40
falktx__rgareus: I must say this is a nice case for LV222:41
falktx__I really want to have the midi-cc handled host-side. but it's proving difficult22:41
rgareusheh, I don't think liblilv will be the bottleneck.22:42
rgareuswell, you could intercept it.  and generate a http://lv2plug.in/ns/ext/midi/#controllerNumber  or something22:43
falktx__the thing is here, as you read on the emails, someone is using osc to control plugins in carla22:44
rgareusardour does the same.  It parses   Input ->  midi-CC -> Controllable/Automatable Param/Disk -> generate CC -> plugin22:44
falktx__that is not possible with setbfree right now22:44
falktx__the host needs to know about the plugin params for this22:45
rgareusright. execpt with ssj's  OSC to midi.22:45
falktx__rgareus: so the host can know what midi-ccs the plugin is using internally, right?22:45
rgareusfalktx__: setBfree -m /tmp/midnam.xml   and you have a complete list of bindings22:45
rgareusardour can read midnam22:45
rgareusand give nice names to them.22:46
rgareusit's a hack to abuse it in this case.22:46
rgareusbut it was something to whip up easily for testing, since there was already midnam support in A3.22:46
* rgareus is not an XML fan22:47
falktx__not sure if I like that "solution"22:48
rgareuswell, we need a LV2 way to  "list all current [midi bound]? properties".22:49
falktx__ttl? :P22:49
rgareusdynamically22:49
falktx__why does it have to be dynamic?22:50
rgareusbindings can change22:51
rgareusI didn't want to come up with a spec for this while hacking.. so I just re-used the existing midnam spec for the time being.22:51
rgareusIIUC rncbc has the same issue.  depending on plugin-state  bindings differ22:52
falktx__you can still can change the bindings22:52
falktx__if you export all the parameters used by the plugin, that will be changed via patch messages, the host becomes in control22:52
rgareusexcept the plugin can do more fancy things  and report back value or simply not http://lv2plug.in/ns/ext/patch/#Ack  them22:53
rgareusie  the host is in control, but the plugin can refuse to do dumb things22:54
falktx__then I guess we're back to square one22:57
rgareus?22:57
falktx__rgareus: let's discuss this again once drobilla gets more online22:57
rgareusthe alternative is to add something like  AUDependentParameter22:58
rgareusa "parameter whose value can change in response to a change in its parent metaparameter"  in Apple land22:58
rgareusbut that would not solve the issue of countless ports.22:58
falktx__tbh I think countless ports is the least of our issues22:59
rgareuswell, setBree's config is around a Million [floats]. ~4 MB packed in a struct.23:00
falktx__shall we give it a test?23:00
rgareussure.  that's why I started with http://pastebin.com/Uex9xXsx23:01
rgareusbuta simple plugin (not fully fledged setBfree or zyn) will be a lot more convenient.23:02
*** NickSB2 has quit IRC23:02
falktx__rgareus: I mean testing via patch messages, not control ports23:02
*** ssj71 has joined #lv223:03
falktx__rgareus: 2M control ports are too much23:03
rgareusfalktx__: yep.23:03
falktx__I think 3000 is around the limit for this23:03
rgareusfalktx__: it's on my ToDo list for this summer.  sBf already has most of the infrastucture in place23:03
rgareusfalktx__: I'd have also said around 1K.23:03
falktx__drumsynth (from distrho ports) has 2000 control ports :)23:04
rgareus500 - 5000 depending on CPU.23:04
falktx__I have an i7 3.5GHz, and even better cpus are being released.23:04
falktx__we should use them more23:04
rgareusfastest machine I have is an i5 2.6GHz23:05
falktx__hm wait, it is 2600 ports23:05
falktx__        Port 2620:23:05
falktx__                Type:        http://lv2plug.in/ns/lv2core#ControlPort23:05
rgareusfor float-ctrl that's crazy. I thought Kontakt with its 512 directly exposed control ports is already over the top.23:06
falktx__512 is nothing on windows vst world23:07
falktx__the crystall freeware plugin has 2000+ parameters23:07
rgareusisn't that even a hard limit in VST2+23:07
rgareus?23:07
falktx__no23:07
rgareusbut right. for VST you call  setParameter on demand23:07
rgareusand getParameter()   you don't iterate over all ports every cycle23:08
falktx__yeah, the float arrays for params in lv2 was a bad design23:08
rgareusgoes back to LADSPA, doesn't it?23:08
falktx__yes23:08
rgareusand it's fine for a lot of simple things.23:08
falktx__for direct parameters it's awesome23:09
falktx__the plugin doesn't need to implement anything for parameters, the host does everything23:09
falktx__but for complex things it's terrible23:09
rgareusI could not have said it better23:09
falktx__shall we start the plans for lv3? ;)23:10
rgareusfalktx__: will you still be in Berlin end of Oct?23:11
* rgareus heard it thrugh the grapevine that loop.ableton.com will feature a panel on open-source23:12
falktx__rgareus: perhaps. we'll see how it goes soon23:12
falktx__everything is still a bit uncertain23:12
rgareuson MOD sales, I suppose.23:13
falktx__sorta23:14
ssj71would a 16k object overrun the host's circular buffer between the work and audio threads?23:40
falktx__maybe. better set the minimumSize23:45
ssj71minimum size of the data the worker responds with? got an example?23:50
ssj71It seems it was. I've got a hacky workaround that resolves it, but I'd like a cleaner solution23:51
ssj71I guess I can mutex it in the worker thread23:53
*** falktx__ has quit IRC23:54
rgareusssj71: for worker, I think so.23:55
rgareusworker responses are supposed to be short. a byte or four.23:56
ssj71ok. I'll just store it in the plugin and have a flag that prevents concurrent loading23:57
rgareusjalv allocates 4096 bytes  for the worker ringbuffer23:58

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