Thank you all for the responses!
On Mon, Feb 29, 2016 at 9:05 PM, Harry van Haaren <harryhaaren(a)gmail.com> wrote:
On Mon, Feb 29, 2016 at 7:52 PM, Spencer Jackson
<ssjackson71(a)gmail.com>
wrote:
The
generic solution for cases like this is a lock-free ringbuffer.
I've also used
the jack ringbuffer for this and it was easy enough.
Simple tutorial on using JACK ringbuffer and C++ event class here:
https://github.com/harryhaaren/realtimeAudioThreading
I've looked into JACK's ringbuffer implementation. It doesn't look too
complicated. Thank you all for suggesting it! But I'm a little bit
concerned about ISO standard compliance. According to the
multi-threading-aware update to the C11 and C++11 memory models, the
access to the ringbuffer's data (*buf) is technically a data race and
therefore invokes undefined behaviour. Only read_ptr/write_ptr are
somewhat protected (volatile). From what I understand, given the
C11/C++11 memory model, one is supposed to use "atomics" for all
read/write accesses in such situations (including *buf). But so far, I
havn't gathered much experience in this kind of lock-free programming.
>> But
to be honest I've found this API to be a bit intimidating and I'm
>> not familiar with any LV2 host that would allow me to test such a
>> plugin. Any recommendations? Ardour?
>
> jalv, Carla, QTractor, Ardour..
+1 for Jalv, very fast turnover time, and LV2 implementation
by the lead LV2 developer: I concider it the reference implementation :)
Sounds good! I'll look into it...
A LV2 simple synth example can be found at
http://lv2plug.in/book/#_sampler
I like jalv for debugging because its quite simple and quick to load.
I can run it with gdb and valgrind/callgrind without any trouble. I've
found it important to test in other hosts too though but only once its
working in jalv.
+1 again
FWIW I hope you do make an LV2 plugin version as
I rarely use
standalone synths these days.
+1, and LV2 is supported by MOD (hardware platform that runs LV2):
http://moddevices.com/ and
https://vimeo.com/92739423
Yup. I see the benefit of having a synth as LV2 plugin instead of
standalone. It's more flexible and I would have to reinvent less
wheels. I just need to make friends with some of the LV2 hosts first.
If you have
any questions about my code I've linked you are welcome to
ask. Also, LV2 has a ML and IRC channel and I'll be happy to offer any
advice or support there that I can too.
Same!
Great!
Cheers!
SG