[linux-audio-dev] Softsynth latency control [Jack?]

Paul Davis paul at linuxaudiosystems.com
Fri Oct 31 02:09:46 UTC 2003


>Now, for the case of a sofstsynth this scenario doesn't fit, because the
>synth is not zero latency. This means that a "tight" midi track is
>audible with the softsynths output latency.

most softsynths are zero latency. only those that work in the
frequency domain tend to have non-zero latency. by this i mean that
the synth will generate output for a given time period at the same
time as processing any input it receives (which may be nothing at all)
for the same time period. 

>Now, Jack is really an audio server but it could also be used to
>communicate the latency of the softsynth to the Audio/Midi Sequencer. I
>know there's calls to get the output latency of physical output ports.
>But it would be nice to have calls to ask for the physical output
>latency of clients [this value can be different for different clients -
>maybe with different output devices]. 

the jack API supports this for every port of every client. its nothing
to do with particular classes of ports. it *is* up to the client to
set the port latency correctly.

>This way, the audio/midi-sequencer could ask jack for a list of clients
>and offer this choice to the user who then can select which midi tracks
>correspond to which softsynth. The Sequencer could then send the midi
>events a tad bit earlier [the output latency of the softsynth].

ardour does exactly this. it delays all tracks by various amounts so
that they sync up with the most latent/delayed one. this includes
internal delays caused by plugins, and external delays due to signal
routing. 

>What do you think? I have no insight into the implementation details of
>jack, so i don't know how possible this scenario is and if it fits with
>design decisions.

its already done :)

--p



More information about the Linux-audio-dev mailing list