Thursday, 2014-12-11

*** gianMOD has joined #lv200:16
*** gianMOD has quit IRC00:21
*** ricardocrudo has joined #lv200:29
drobillaHarryHaaren: Your http://openavproductions.com/rtmem/ misses the canonical solution to this problem: ringbuffer it elsewhere01:10
HarryHaarendrobilla, for recording you mean?01:11
drobillaHarryHaaren: yeah01:11
HarryHaarendrobilla, once the recording is done, it needs to jump straight to the beginning again: unless you want to stream somewhere-else, and then double it back. Its an option, and i'll admit i didn't concider it yet.01:12
HarryHaarendoubling the data back is a bit hack-y.. but I guess it works. Only the initial 1 second or so would be plenty.. hmm.01:12
HarryHaarennot bad, thanks for the suggestion.01:12
drobillaHarryHaaren: Sure, it's not totally without cons01:12
HarryHaarenall of them have drawbacks. Horses for courses01:13
drobillaHarryHaaren: But the other thread can ultimately make sure a single buffer with the result exists when done (assuming it fits in memory), perhaps using these techniques, so grabbing that pointer and using it right away should be doable01:13
drobillaHarryHaaren: The win is it's truly RT safe and unlimited in size provided the ring is big enough and the other thread can keep up01:14
HarryHaarenwell the "right away" part there is difficult. at time of stop-record, the RT thread needs access to the start-data. In the same process() as the stop-record event took place. The other thread might have to move the data in order to squeeze this last bit of data to the end, so the whole lot could be moved -> bad pointer in RT section01:16
HarryHaarenbut if a short buffer of a few nframes lenghts or so was used to store the starting audio, the larger buffer could be swapped in later01:16
HarryHaarenthat's pretty neat.01:17
drobillaas long as there is always as much free space at the end as can come in in a cycle, it's fine?01:17
drobillaActually, not quite.  Let's just say "enough" free space :)01:17
drobillaSomething like ring size + block size01:18
HarryHaarenyeah that01:18
HarryHaarenbecomes a bit fuzzy there though01:18
HarryHaarendepending on nframes + thread scheduling really01:18
* HarryHaaren shudders01:19
drobillaJust nframes and ring size, I think01:19
drobillaIf you can't keep up you're fucked anyway01:19
HarryHaarenkeeping 1 second local in the RT section is a good solution though don't you think?01:19
drobillaYeah, though playback is a bit more difficult then01:19
HarryHaarendrobilla, "short-term" can't keep up can be fixed by a larger ringbuffer, if there's 1 sec available01:19
HarryHaarenwhy that?01:19
HarryHaarenuse "local buffer", when the event with large buffer arrives, swap it in. The playback code doesn't know the difference01:20
drobillaYep.  Such is RT.  There are limits, but they're just a number you can bump until there's enough space01:20
HarryHaaren:)01:20
*** falktx has quit IRC01:36
HarryHaarendrobilla, PUGL native handle into LV2_Widget, embedded UI, any example code? You have the OpenGL in Ardour example on the blog post, no source-link though..01:48
* HarryHaaren temps with a screeny... http://openavproductions.com/tmp/1_avtk_starting.png01:51
*** ricardocrudo has quit IRC01:57
drobillaHarryHaaren: There's a "glamp" in my lad repo, if a bit rotten01:59
drobillaHarryHaaren: But basically it's like any other UI01:59
HarryHaareni'll checkout glamp01:59
*** gianMOD has joined #lv202:18
*** gianMOD has quit IRC02:23
HarryHaarenwheee http://openavproductions.com/tmp/2_lv2_embed.png02:28
HarryHaarenmight not be that much yet, but its working perfect. Lots of kudos for PUGL!02:28
drobillaHarryHaaren: Nice.  Partial redraw yet?02:30
HarryHaarennope.02:30
drobillaHarryHaaren: I assume you're making a toolkit "AVTK"?02:31
* drobilla pays super close attention lately as you can see02:31
HarryHaarenyep I am, its API is pretty much based on NTK, with a few tweaks for even-easier-hacking02:31
HarryHaaren(read, public member variables)02:31
drobillaBit foot shootey, that02:32
HarryHaarenah yeah. Its mostly under-the-hood for now, and i'll probably refactor when necessary02:33
HarryHaarendrobilla, there's a few cases that should redraw but currently dont: alt-tab changing window order, or certain window movements don't cause a redraw02:33
drobillaI also happen to be a fan of no-gaudy-bullshit flat rectangles, so I'll be sure to check it out at some point02:33
HarryHaarenis this a known thing? Should I be doing redraws in client code, or do you think there's something we can do with X events?02:33
drobillaHarryHaaren: Should be getting an expose in those cases02:34
drobilla... I think02:34
HarryHaarenok, i'll double check tomorrow or so and see if I can figure it out.02:34
HarryHaarenotherwise, prepare for a confused me ;)02:34
drobillaAnything beats marking these Prolog assignments...02:35
drobillaHelping anyone with a properly functioning brain on anything anybody anywhere gives any hint of a crap about at all, big step up02:35
HarryHaarenhahah i was asked if I knew Cobol in the Uni recently... quickly shrugged "nope" and walked away... static analysis of Cobol was the guys job :?02:36
drobillalol, COBOL02:38
drobillaBasic for suits02:38
drobilla(Rather silly question to ask anyone who isn't 50+ anyway)02:39
HarryHaarenyeah the dude wasn't mad into it either.. anyways. I'm concidering applying to start a PHD in september.. how's your gut treating the PHD decision?02:39
drobilla................. you may not want to know, at the moment :)02:40
HarryHaarenyeah kinda guessed... still though, if it aint all rainbows and unicorns maybe i should know that too02:41
drobillaWell, it's December (end of term), I have to waste a ton of time marking this awful stuff (for money), I'm probably not going to reach my research goals with looming deadline since nothing is working out and I can't figure out why / don't have the time to, and of course that sucks away LAD time almost entirely.  Plus other things in my life generally going to hell, though specific to my situation.02:48
drobillaAt other times, I would be more into the endeavour02:48
drobillaBut at the moment, life is a nightmare02:48
drobillaSo yes, it very definitely is not all rainbows and unicorns all the time :)02:48
HarryHaarenfair enough, sorry to hear personal things ain't going well, hope things improve there. I definatly know what you're saying about the time thing though, i've to fight off "real-life" to some degree to keep enough time to be productive02:50
HarryHaarenin a way the PHD is (hopefully) an extension of that fight for time, since I'm planning to do it on the topic of "OpenAV" in general... if I can make that work for the Uni is a different story02:51
HarryHaarenwe'll see.02:51
drobillaMeh.  The plus side of December is it ends in a holiday, I'll live02:51
HarryHaarenfor now, Avtk -> LV2 embedding is working fine, so that's nice. Tomorrow, more widgets, and perhaps Fabla 2.0 DSP code.02:51
drobillaIf you can combine the two, even if at some distance, that would be pretty great02:51
HarryHaarengood stuff, that's always good.02:51
drobillaIt's ever so much worse when you spend essentially 4 years of well over full time doing nothing of any tangible relevance02:52
HarryHaarenyeah the lecturer who supervised my Bachelor final project is interested in taking me on again, so he knows what i'm looking for.. and he's a software / media type guy himself too, even if he's not directly involved. Should work out I hope :)02:52
* HarryHaaren goes to bed, chat another time!02:53
*** HarryHaaren has quit IRC02:54
*** gianMOD has joined #lv203:16
*** gianMOD has quit IRC03:20
*** NickSB2 has quit IRC03:43
*** gianMOD has joined #lv204:16
*** gianMOD has quit IRC04:21
*** gianMOD has joined #lv204:27
*** gianMOD has quit IRC04:56
*** gianMOD has joined #lv205:02
*** gianMOD has quit IRC05:08
*** gianMOD has joined #lv206:31
*** gianMOD has quit IRC06:37
*** zth has joined #lv206:58
*** edogawa has joined #lv207:58
*** edogawa_ has joined #lv208:05
*** edogawa has quit IRC08:08
*** edogawa_ is now known as edogawa08:28
*** falktx has joined #lv209:19
*** Anchakor_ has quit IRC10:59
*** NickSB2 has joined #lv211:21
*** edogawa has quit IRC11:31
*** gianMOD has joined #lv212:13
*** ricardocrudo has joined #lv212:19
*** ricardocrudo has quit IRC12:19
*** ricardocrudo has joined #lv212:20
*** falktx has quit IRC13:35
*** HarryHaaren has joined #lv214:45
*** gabrbedd has quit IRC15:23
*** gabrbedd has joined #lv215:24
*** NickSB2 has quit IRC15:31
*** Anchakor_ has joined #lv215:41
*** HarryHaaren has quit IRC16:05
*** rncbc has joined #lv216:30
*** Haskellfant has quit IRC16:34
*** Haskellfant has joined #lv216:48
*** HarryHaaren has joined #lv216:48
*** falktx has joined #lv217:29
*** gianMOD_ has joined #lv218:00
*** gianMOD has quit IRC18:03
*** rncbc is now known as rncbc|AFK18:06
*** rncbc|AFK has quit IRC18:08
*** bgola has quit IRC18:21
*** HarryHaaren has quit IRC18:27
*** falktx has quit IRC18:41
*** rncbc has joined #lv218:52
*** Anchakor_ has quit IRC19:17
*** Anchakor_ has joined #lv219:17
*** rncbc has quit IRC19:21
*** bgola has joined #lv219:22
*** gianMOD_ has quit IRC19:37
*** zth has quit IRC19:46
*** mlpug has joined #lv219:47
*** falktx has joined #lv219:49
*** gianMOD has joined #lv220:38
*** gianMOD has quit IRC20:43
*** NickSB2 has joined #lv220:48
*** mlpug has quit IRC20:53
*** rncbc_jolla has joined #lv221:01
*** rncbc_jolla has quit IRC21:15
*** falktx has quit IRC21:32
*** NickSB2 has quit IRC22:37
*** gianMOD has joined #lv222:40
*** edogawa has joined #lv222:43
*** gianMOD has quit IRC22:45
*** ColaEuphoria has joined #lv222:47
ColaEuphoriaScenario: You program a simple amplifier plugin that uses a floating point coefficient that multiplies into the input array. Everything works, but you hear a clicking noise when you move the port value in Ardour because it only sends information once every time the run() function gets called.22:49
ColaEuphoriaHow would I do this with sample accuracy?22:49
drobillaColaEuphoria: There's two questions there.  How can you have a control with sample accuracy, and how can you do it without zipper noise22:58
drobillaSample accuracy doesn't mean you won't get the noise22:58
ColaEuphoriaWell true22:59
drobillaYou do something like low-pass it, which adds a very small amount of latency to the control to slew it to avoid big jumps22:59
drobillaOr linear interpolation, or (etc)22:59
ColaEuphoriaMy first thought was to do some kind of interpolation between buffer refreshing, but is there a way to do it with sample accuracy?23:00
drobillaWell, yes, but not one that's really supported by hosts yet23:00
drobillaIn general, event-based controls23:00
drobillaThere's also CV for things where that makes sense23:00
drobillaThere's been lots of talk about this and related things lately, probably/hopefully will be a serious standardization effort post-next-lv2-release23:01
drobillaThe other thing about interpolating/low-passing control ports is, without a fixed block size restriction, you can't really do it well23:04
ColaEuphoriaJust a thought that might not go anywhere: I've been wondering if there was a way for the host to collect input-changing data as an array and pass that into the plugin somehow on the next run() call23:04
drobillaWell, sometimes.  DSP nerdery is not my specialty, there's just some issues there23:05
ColaEuphoriathen the plugin has access to all the information in the for() loop that processes the audio block23:05
drobillaColaEuphoria: That's basically what "event-based control" means23:05
ColaEuphoriaoh23:05
drobillae.g. you can do with with MIDI CC currently, though the resolution of the value of course sucks23:05
ColaEuphoriaAt least I finally found out what the zipper-noise was all about. How does VST circumvent zipper-noise if you know by any chance?23:07
drobillaUp to the plugin to do so internally, same deal23:25
ColaEuphoriaThanks. This whole time I just thought I was missing something in the documentation somewhere.23:28
drobillaNope.  It's basically an inherent thing with audio processing23:28
drobillaThe only way you could really "avoid" it is to have the host do it, and pass CV buffers, but this is very expensive and has other problems23:29
drobillaI'm sure you can find plenty of example code that does it, but I don't have any particularly good links handy23:29
*** edogawa has quit IRC23:36
*** gianMOD has joined #lv223:42
*** gianMOD has quit IRC23:47
*** falktx has joined #lv223:50

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