Plugin Delay Compensation

I found this document by Tebello Thejane outlining how PDC could be implemented:
http://www.musicdsp.org/files/pdc.pdf

Based off Cubase and FL Studio, but should be relevant for Renoise as well?

this is a must-have in audio-software,and like some of you have written,some plug-ins NEED this feature,before they can be used

this is the major thing,i really hope gets implemented in renoise 2.0

Sorry, s-n-s, not out to bust your balls or anything - but that last statement simply isn’t true…You can still create the effect by hand, using something like the (free) Voxengo Sampledelay/Latencydelay plugins. I know, I’ve done it on several occasions with a couple of favourite VST effects of mine, since they introduce a ridiculous amount of latency (8192 samples!!!).

That said, having proper PDC inside Renoise would rock!

New idea of mine, posted as a separate thread…

That’s for sissies! Real musicians use a hex editor to create the mp3 file from scratch.

What I’m trying to say is: how much of a PITA does something have to be before it is considered “not possible”? In the big scheme of things, manually making up for latencies is not possible if you ask me.

(then again I’m not even using plugins these days so I’m really just being a smartass with nothing at stake hehe)

Plugin Delay Compensation, getting this would make me live a lot easier, please fix it.

I have big problems when I render single tracks from Renoise to work with other non Renoise users, getting it to groove in cubase/logic is difficult. And as I´ve said before I´d be happy to pay double price to get the last thing’s fix’ed

Hello, Danoise.

A revised version of my paper may be found here: Revised August 2006 PDC paper, hosted by an acquaintance of mine from Wikipedia.

The method is based on a highly generalised and extremely flexible mixer model, and the FL Studio and Cubase examples at the end merely show how to use it to solve specific systems (I have to admit that this whole thing started with me trying to find a solution for the old FL Studio mixer, but I was prompted by the radical expansion of the mixer in version 6 to generalise the method, which had the added bonus of making it much less complex as well as suitable for use in a whole class of software DAWs). I don’t know anything about the Renoise mixer model (in fact, I just registered a few minutes ago after discovering your post by accident) but armed with an understanding of the basic axioms of the generalised model, as well as an basic understanding of Renoise’s specific implementation, it shouldn’t be too difficult to develop a solution specific to Renoise (and then someone has to actually code it into the software…).

If I had a basic understanding of Renoise I would be able to come up with a specific solution for it. Suffice it to say that I doubt that Renoise’s mixer is as complex and flexible as that of FL Studio (assuming that it uses the common model of a mixer module separate from audio generators, with generators inputing audio into the mixer at specific points in parallel), and yet this method solves FL Studio’s mixer completely.

My email address is included in the paper if anyone wishes to contact me.

Tebello Thejane.

Possibly that a suitable solution would work, Cubase ideas however probably don’t coop with ticks as Renoise does not work with ppq precision (or at least not that high ppq resolution as Cubase currently offers)

I’m not entirely sure what you mean exactly, but I think I can offer an answer.

If I recall correctly, PPQ refers specifically to MIDI and other control signals, not audio. Audio is passed between sound generators and processors in buffers, and the rate is the audio software’s sampling rate (usually 44.1kHz, especially since many effects malfunction or sound wrong at other sampling rates due to bad programming). If the effects report sample-accurate latencies, and the developers of the host implement sample-accurate delay lines (which is trivial to do, and is the basis of most commonly used effects), then sample-accurate automatic PDC is possible.

In fact, although the method I describe is probably not absolutely 100% general (due to my FL Studio bias), the only reason I can think of for complete PDC to be impossible would be if the host allowed users to make feedback loops in the signal routing (principle 1 in the paper). Otherwise, if the signals come from parallel latency-free sources (if an instrument has a latency this can be modeled as a latency-free source followed by a simple delay), enter some sort of mixer (basically, a module than hosts effects and controls their connections), with no feedback loops, and emerges out of the mixer as several parallel signals going to a similar destination (such as the sound card or hard drive), then complete automatic PDC can be implement.

Hmmm… Maybe I should just download Renoise and check it out instead of simply abstractly theorising…

By the way, as a side-note, these are the types of effects that usually have latency:
*Pitch shifters, including Auto Tune.
*FIR filters, such as linear-phase filters. Normal filters are IIR, implemented as a small number of echo delays with non-zero feedback.
*FFT processes, such as denoisers and convolution reverbs. These usually have the worst latencies whose lengths are powers of 2, though some dynamics processors can be worse, for some reason.
*Dynamics processors with “look-ahead” and other technologies for automatically adjusting the attack and decay.
*Audio Units and other plugins that are based on an external DSP standard.

No, the fact that they have latencies is not a sign of bad programming. For basic, Scientific/Mathematical reasons these effects will produce a latency. Except for basic pitch shifters (which are based on interpolating delays with delay times modulated by saw-tooths) and external DSP effects (which need to go through many software and hardware layers to work), these effects are “non-causal” which means that they produce the output of an effect or produce some action before they receive the input that triggers it, and the only way they can achieve this nonsensical-sounding feat in real life is if they delay the sound.

Hey Tebello. Yeah, PPQ, Ticks whatever event rate is used, it doesnt make a difference for the delay compensation in general. So your proposed way of dealing with the latency can be applied to Renoise as well…

GO! :)

mlon

but I WANT feedback loops :P … perhaps PDC could just automatically disengage for chains with feedback loops? ;)

I thought that would be fixed with DBLue’s plugin :blink:

Hi Tebello, thanks for sharing your knowledge +++

I’ve updated the PDF link inside the Feature Design forum:
http://www.renoise.com/board/index.php?showtopic=14100