[ardour-dev] latency compensation questions

Paul Davis paul at linuxaudiosystems.com
Fri Apr 1 04:03:31 PST 2005


>It is interesting, although in the case of a reverb-on-a-bus, it is a  
>little different.
>The reverb in the bus has latency, so ardour compensates by adding a delay  
>to the other tracks.
>But those tracks are feeding the reverb. So you don't wan't to delay the  
>audio file reading at all, you want to add a delay _after_ the sends:
>
>|trackA              |bus1
>|                    |
>|fader               |reverb causing extra latency
>|post-send-to bus1-> |
>|                    |
>|delay               |
>|                    |
>|output              |output
>
>Given ardours almost infinite routing possibilities, this is a difficult  
>problem to solve in a general way.

i think that the correct solution is to take advantage of the fact
that Route::roll() and ::no_roll() are virtual. the behaviour for an
AudioTrack can be different than for an Bus.

the solution for a bus is to put a delay into the output stage of the
bus - i.e. run the usual code, but silence the output for _roll_delay
frames. 

AFAICT, this is not the right way to handle tracks, however, so they
would continue doing what they do now (which i described previously).

the other element would be to exclude busses from the set of things
checked when computing latency compensation. that way, tracks are
never delayed just because some bus has a reverb or similar in place.
we would still include them in the set of things that are notified of 
the need for latency compensation.

this is still not a perfect solution, but i think it would handle most
common situations.

--p





More information about the Ardour-Dev mailing list