Hi,
So a part of the dependencies in the signal processing
flow is only
known to your sequencer, which leads to a situation where jack can not
know, if all dependencies for running a certain client process function
are satisfied?
I personally would try to avoid that so that things will become easier,
which means no need for ringbuffers (input and output buffers that
depend on each other are passed together to the process function) and
spinlocks (jack always calls the clients callback, if data is definitely
available) for synchronization.
This was my first thought aswell. However, if you'll end up with 40 lfo generators
that just compute f(x)=sin(x) (or even simpler), you'll have 40 additional threads
that need to communicate with each other. I wonder if that is so good...