I use very often VST effects in Audacity, and each time I use them I notice that after applying an effect the first 8192 samples are zero, the audio is delayed by this value while the last 8192 samples are cutted out. Is there a way to prevent this?
2 choices come to mind:
- Find another effect that does not do that.
- Add some padding (just a bit of silence would do) before applying the effect, then trim the track to the correct size after applying the effect.
I already do that but I use the effect several times for few seconds, so it’s really annoying.
Is this with all VST effects, or just with some VST effects?
Which version of Audacity are you using? (Look in “Help > About Audacity”)
Which version of Windows?
Which VST effects are you using?
This is with all VST Effects, and not just with this version of Audacity, it always did it.
Anyway I’m using Audacity 2.0.1 on Windows XP Professional (x64), and I’m using several VST effects, the ones I use the most are Antares Audio ones (Autotune and all the tools) and some freeware VST as kn0ck0ut, it depends on what i have to do.
I have just tried several VST effects on a Windows XP SP3 (32 bit) machine and I don’t see this problem. One effect was out by 1 sample. The rest produced the exact correct result.
Try some of these (free) VST plug-ins and see if they have the same problem: http://antress.blogspot.co.uk/
They work fine, I don’t understand why this is happening, then…
AutoTune isn’t fully supported by Audacity in my opinion (Audacity has no MIDI control).
I tested kn0ck0ut on Windows 7 and it has the same output delay in Wavosaur and Goldwave (using a DX wrapper) as in Audacity - but only when “extract centre” is OFF (the “vocal removal” option). The only difference is that in Audacity the right-hand (unprocessed) channel is silenced but is left “as is” in Wavosaur and Goldwave. The README with the plug-in has nothing to say about this, but I assume it is not what the author intended.
I’m not an expert on VST effects, but as I understand it the issue is to do with how the effects handle audio buffers. To provide smooth real-time output the plug-in needs to pre-load data into an audio buffer (typically between 512 and 8192 samples). In the absence of the host program reporting its real time latency capability it is not surprising that an effect may default to the largest buffer size. The buffer provides “look ahead” for the real-time processing at the expense of output latency. Audacity does not support real time processing so it probably does not have any mechanism for dealing with buffer delay, relying instead on the plug-in to return bit-for-bit data to write to disk. It would seem that the Antress “Modern” plug-ins do this, but AutoTune and kn0ck0ut don’t.
Thanks, Steve. This could be the reason, as indeed I don’t think Audacity has delay compensation. See here:
Goldwave and Wavosaur both have real-time effect preview (but AFAIK cannot for example apply effects while recording). If absence of delay compensation is the cause of the Kn0ck0ut issue, I am a bit surprised Wavosaur does not have this.
If it’s any help to you TheRoofInhabitant, I can give you a quick and easy way to delete the first 8192 samples from a track or selection.
A Nyquist snippet to do this is:
(let ((start (/ 8192 *sound-srate*))) (multichan-expand #'extract-abs start (get-duration 1) s))
To use this code, select the first part of the track (at least 8192 samples, but you don’t need to be at all precise), then copy and paste this code into the “Nyquist Prompt” effect. Click OK and the first 8192 samples of the selection will be deleted.
If this is useful, then I could convert this code into a plug-in effect which would be a lot more convenient as you would then be able to assign a hot-key to run the effect.
Would that be useful?
“LET” is a block construct that can first set some local variables, and then run a block of code.
In this case, a variable “start” is created and given the value 8192/ where is the sample rate of the selected audio track being processed.
MULTICHANEL-EXPAND is a macro that applies a function to each sound channel in turn. This is required because the function EXTRAXT-ABS only works on mono sounds. This by using MULTICHANEL-EXPAND if the sound is mono EXTRACT-ABS will be applied to that one channel, but if the sound is stereo it will be applied to each channel in turn.
EXTRACT-ABS is used to extract a portion of a sound from a longer sound. This function is used with three arguments, the start time, the end time and the sound that is to be acted on.
GET-DURATION is a handy function that can be used to return the absolute duration of a selection (in effect plug-ins).
There is more information about Nyquist scripts and plug-ins here: http://wiki.audacityteam.org/wiki/Nyquist_Plug-ins_Reference
Sadly no. Nyquist plug-ins are not able to launch other plug-ins.