Friday, 2015-01-09

*** ricardocrudo has joined #lv200:05
*** ricardocrudo has quit IRC01:43
*** gianMOD has quit IRC03:31
*** drobilla has quit IRC03:49
*** hybrid has quit IRC04:18
*** hybrid has joined #lv204:31
*** gianMOD has joined #lv204:32
*** gianMOD has quit IRC04:43
*** gianMOD has joined #lv205:39
*** gianMOD has quit IRC05:43
*** edogawa has joined #lv206:32
*** falktx has joined #lv207:16
*** gianMOD has joined #lv207:27
*** gianMOD has quit IRC07:32
*** falktx has quit IRC09:11
*** gianMOD has joined #lv209:16
*** gianMOD has quit IRC09:21
*** falktx has joined #lv210:21
*** edogawa_ has joined #lv210:48
*** edogawa has quit IRC10:51
*** edogawa_ is now known as edogawa11:00
*** gianMOD has joined #lv211:04
*** HarryHaaren has joined #lv211:07
*** gianMOD has quit IRC11:18
*** gianMOD has joined #lv211:18
*** gianMOD has quit IRC11:19
*** mlpug has joined #lv211:27
*** gianMOD has joined #lv211:46
*** HarryHaaren has quit IRC11:56
*** gianMOD has quit IRC11:59
*** ricardocrudo has joined #lv212:08
falktxthat yoshimi plugin is amazing12:22
falktxthe state it saves is 3059640 characters long12:22
falktxthe default patch12:23
falktx5Mb of data just for 1 plugin instance, ouch12:39
*** gianMOD has joined #lv212:57
rgareusis there an extension that allows LV2 ports to get/set port-latencies like with jack-ports?13:24
rgareusand related. is there a LV2 host that takes jack-port latencies into account?13:25
rgareus(ardour does to some extend, but only for playback)13:26
falktxnon-mixer supports latency13:52
falktxbut only for ladspa plugins13:52
falktxI implemented lv2 support in non-mixer, but no latency yet13:52
*** falktx has quit IRC13:53
*** falktx has joined #lv213:55
*** HarryHaaren has joined #lv214:09
*** gianMOD has quit IRC14:14
*** NickSB2 has quit IRC14:25
*** mlpug has quit IRC14:25
*** gianMOD has joined #lv214:43
rgareusaah well. time to scratch my own itch, then.14:46
rgareuswould be nice to add it to jalv14:46
falktxrgareus: can you confirm the jack2 latency test client works properly?14:48
rgareusfalktx: jack_iodelay?14:48
falktxjack_latent_client14:49
rgareusfalktx: uhm. it just caused and an xrun :)14:49
rgareusfalktx: I never used it. what does it do?14:50
* rgareus checks the source14:50
falktxhttps://github.com/jackaudio/jack2/blob/master/example-clients/latent_client.c14:51
rgareusfalktx: looks alright in principle14:51
rgareusjack_set_latency_callback() is meant to set the latency. but to query changes one needs to use the graph_order_callback.14:52
rgareus(there was a post on jack-devel about it a while ago)14:52
rgareusit also does not x-fade if the latency changes. - but with jack1 that's moot anyway (no clickless connections)14:53
falktxdoes that tool/example seem correct to you?14:54
falktxif it is, then I'm missing the point of it..14:54
rgareustool/example ?14:55
falktxhttps://i.imgur.com/dCm4wDu.png14:55
falktxjack_latent_client14:55
rgareusfalktx: aait only ever can delay , so you need to use it on _all_ ports14:56
falktx?14:56
rgareusit's just an example - not useful a stanadline mono version14:57
falktxwe need a correctly working example14:57
rgareusit is working14:57
falktxnot for me14:57
falktxsee the pic14:57
falktxthe left channel and right are not aligned14:57
rgareusyou didn't connect it right.14:57
falktxjack is not compensating the right channel14:58
rgareusif you use this example. you need to connect it between _all_ connections in the graph14:58
rgareusrun  jack_lsp -l14:58
falktxbut I want to run it this way14:59
rgareusthe tool just delays to sync things up if there's a playback latency and then announces a capture latency of 014:59
falktxapply some effect on some ports only14:59
rgareusfalktx: if there's no latency this example just passes audio through14:59
rgareusit can only make audio later (not earlier)15:00
falktxjack should compensating the audio on system:playback_215:00
rgareusjack does not compensate for anything. it just passes numbers around15:00
falktxrgareus: say a plugin has 16 audio outputs. I add an fx to the 3rd and 4th ports only, the rest connects to playback15:00
*** HarryHaaren has quit IRC15:01
falktxI think I can make a graph of this...15:01
rgareusand the effect on port 3 and 4 has latency?15:01
falktxyes15:01
rgareusin this case all other ports need to be delayed15:01
rgareusso you need latent-client on all other ports15:02
falktxso the resposibility of delaying the signal does to the first plugin?15:02
falktx*goes to15:02
rgareusthe host15:02
falktxs/plugin/standalone15:02
falktxso the resposibility of delaying the signal goes to the first standalone?15:02
rgareusno dice then.15:02
rgareusjack can tell anyone that it's not aligned. but won't to anything about this by itself.15:03
falktxI think that's bad15:04
falktxjack registers the system ports, it should ajust latency for those ports if needed15:04
rgareusjack is just a mechanism. no policy.15:04
rgareusfalktx: in most cases jack cannot always come up with the ideal solution. it may just add unneccesary delay.15:05
rgareuse.g. in a DAW case    input -> Track -> output.15:06
rgareusthe track can compensate [read-ahead] on playback.15:06
rgareusand write-behind at the same time15:06
falktxstill confused a bit15:07
falktxall I need to know is who's client is responsible for adding latency15:08
falktxin this case => https://i.imgur.com/q4sxd82.png15:08
falktxthis would be much easier if jack itself handled the latency15:08
falktxie, we tell jack what latency each client adds and let it handle it15:09
rgareuson 2nd look. latent_client.c just adds latency (argv[1], default 1024) - it does not subscribe to graph-order changes to query it16:13
*** drobilla has joined #lv216:51
*** HarryHaaren has joined #lv217:09
*** gianMOD_ has joined #lv217:41
*** gianMOD has quit IRC17:41
*** ricardocrudo has quit IRC17:42
*** gianMOD_ has quit IRC17:45
*** mlpug has joined #lv217:58
*** gianMOD has joined #lv218:15
*** ricardocrudo has joined #lv219:02
*** mlpug has quit IRC20:14
*** falktx has quit IRC21:00
*** hybrid has quit IRC21:05
*** Anchakor_ has quit IRC21:19
*** Anchakor_ has joined #lv221:23
rgareusdrobilla: here's a first draft http://paste.debian.net/139970/21:29
rgareusdrobilla: I'll upload it to your tracker when I confirmed that it works as expected.21:30
drobillaSo much code :/21:31
drobillaI guess once an lv2file exists in the LV2 dist Jalv's purpose as a "simple" example will be less important21:31
rgareusdrobilla: I could use #defines to cut jack_latency_cb in half :)21:31
drobillaThough splitting the jack stuff into another file might be a nicer design anyway21:31
rgareusJackCaptureLatency and JackPlaybackLatency are symmetric21:31
rgareusbut that's less readable IMHO.  I even opted for curlies on separate line to make this part more readable21:32
drobillaThat'll be the first to go :)21:32
drobillaWhatever, don't worry about it21:33
drobillaHm, yes, they are pretty much identical21:33
drobillaLooks like only the FLOW_* changes21:34
rgareusjust FLOW_INPUT and FLOW_OUTPUT21:34
drobillaEasy to merge21:34
rgareusand JackCaptureLatency vs JackPlaybackLatency  which is also given as parameter to the function21:34
rgareusdrobilla: yeah. This can be simplified. even w/o nasty #define21:35
rgareusdrobilla: wait until the 2nd draft, and post-testing21:35
drobillaflow = ((mode == JackCaptureLatency) ? FLOW_OUTPUT : FLOW_INPUT);21:42
rgareusdrobilla: yeah or inline :http://paste.debian.net/139971/21:45
rgareusworks as expected.21:45
rgareushttp://dev.drobilla.net/ticket/99721:47
drobillargareus: Better21:47
drobillaone less line with a var :)21:47
rgareusdrobilla: I'm not sure about explicit floorf()  that will need -lm21:48
drobillaSo jack ports can each have a different latency?21:48
drobillaThe compensation for that will have to be way more complex then, non?21:48
rgareusdrobilla: jalv itself cannot compensate.21:49
rgareusit could align21:49
drobillaHm.  Like, the amount of code in jalv.c entirely sort of complex.  That's quite a burden21:49
drobillaRight, align, rather.21:49
rgareusit's not complicated - just a [dezippered] delayline21:50
drobillaI assume there's a reason jack/libjack can't do it, but that's asking a hell of a lot for simple clients :/21:50
rgareustwo reasons actually. one by design:  jack is just a mechanism. it only ships data around.21:51
drobillaWell, keeping buffers around and offsetting them even without the DSP is quite a bit, add the DSP and dealing with transport/latency changes and such, eep.21:51
drobilla(Well, I guess transport you can probably ignore, n/m that)21:51
drobillaDon't get me wrong, if you do it, I'll add it, though I don't like it :)21:52
rgareusand the 2nd jack does not know anything about jack-client's internals. it can do a worst-case approach at best21:52
* drobilla has to do latency comp in ingen one of these days. That'll be super fun...21:52
rgareusardour for eample can read-ahead and write-behind (minimze total latency though the graph(21:52
rgareusardour for example can read-ahead and write-behind (minimize total latency through the graph)21:53
rgareusjack could not do that just based on the numbers ardour provides21:54
rgareusdrobilla: I've added it to my simple jack/lv2 host, but only audio -21:54
rgareusrealtime safe midi delaylines are not simple21:55
drobillaSeems simple enough since you have a buffer size limit21:57
rgareusdrobilla: sure, if one assumes that there won't be more than 31.25 kbaud (MIDI speed) it's almost trivial.21:59
rgareusdrobilla: libs/ardour/delayline.cc21:59
rgareuscan delay midi data21:59
drobillargareus: You know the jack buffer size, same as audio21:59
* drobilla is reminded about atom sequence ports being busted for split cycles :(22:00
rgareusdrobilla: yeah though jack has fixed size buffers (jack2 default: 32KB) per period.22:00
rgareusIIRC one can query the size22:00
rgareusdrobilla: yeah I considered split cycles and pass trhough the data (instead of copying it) but with Atom seq that's a PITA.22:01
drobillaWell, changing that again would be just ever so popular, sooooo..... :)22:02
rgareusdrobilla: the host could parse the sequence, split it and change the timestamps.22:05
rgareusnot too complicated, just not fun22:05
drobillaYeah, it's not a show-stopper22:05
drobillaI guess any MIDI buffer would have the same issue, you need to pretend the timestamps are different no matter how you slice it22:06
drobillaWell, unless they used delta time22:06
*** hybrid has joined #lv222:29
*** gianMOD has quit IRC22:59
*** gianMOD has joined #lv222:59
*** ricardocrudo has quit IRC23:04
*** edogawa has quit IRC23:10
*** gianMOD has quit IRC23:25
*** gianMOD has joined #lv223:26
*** gianMOD has quit IRC23:30

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