Hi,
I had a hunch that's there is a way to trade latency for parallelism in
serial jack graphs (at least on jack2/jackdmp setups). Comments welcome..
https://github.com/fps/jack2_split
README.md below:
jack2_split
A program that facilitates parallelism in serial jack graphs by
introducing latency. Only useful for jack2/jackdmp - it does nothing but
add latency in jack1 setups.
What?
If you have a jack processsing graph that looks like this:
capture -> A -> B -> playback
where A and B are jack clients, then A and B must be scheduled in series
due to the linear dependency.
Running A and B serially might produce xruns (i.e. violate the
scheduling deadline imposed by jackd) while running only A or only B
might not.
jack2_split can be used to remedy the situation by using the following
graph:
capture -> A -> jack2_split -> B playback
jack2_split breaks the serial dependency by registering two jack clients
which respectively only have terminal input and output ports. It copies
the buffers from its inputs to its outputs after the current process
cycle. This introduces one additional period of latency into the graph,
but allows jack2/jackdmp to schedule A and B in parallel (e.g. on two
cores).
--
https://fps.io