Any zero-latency vst limiters?
-
- KVRist
- 40 posts since 31 Jan, 2021
Is there such a thing as a zero-latency limiter vst? I often go back and forth between preliminary mixing and tracking/recording as I am working on a song. I have zeroed down my effects plugins to just a few, all with zero latency. Ableton, the DAW I work in, adds plugin latency even if when such plugins are disabled, so I generally avoid plugins with any latency until the final mix stage. It would be ideal as I am listening to a song to have a zero-latency limiter on the mix bus so I don't have to remove it temporarily if I decide to redo or add another track.
-
- KVRist
- 132 posts since 12 Sep, 2007
There will always be latency with any VST.
Latency shouldn't be a concern when mixing, unless it's live mixing.
Have you considered another host for mixing/mastering?
Good luck,
Dirk
Latency shouldn't be a concern when mixing, unless it's live mixing.
Have you considered another host for mixing/mastering?
Good luck,
Dirk
- KVRAF
- 4176 posts since 15 Nov, 2006 from Hell
when people say "zero latency" they mean "zero additional latency". there are loads of VST plugins that don't add latency.
From Russia with love
Our online jams (if you speak Russian - you're welcome to join!)
Our online jams (if you speak Russian - you're welcome to join!)
-
- KVRAF
- 1872 posts since 2 Mar, 2004
I don't think that we have to take the zero too literally here. It is a latency that does not matter for the application described by the op. And, what is more, Ebus Lim sounds superb.
-
- KVRian
- 1006 posts since 26 Feb, 2018
Limiters typically need a bit of latency and oversampling to do their job right, particularly if you want them to act as a brickwall.
Having said that, I appreciate a zero latency low CPU limiter for tracking purposes. You can use any compressor at 20:1 ratio for this purpose. It won't be a brickwall but it'll do the job of protecting whatever comes next.
Fircomp can be used this way
https://jonvaudio.com/fircomp/
I have the paid version, but the free one should work the same. Set it to highest ratio and fastest attack (and zero latency), and you got a good limiter.
Your DAW may come with a limiter without latency. Check there.
Personally, I'm still tracking with the first version of Soundspot Velo. It could be bought for around $1 before v2. It did not have latency and oversampling so it wasn't a great limiter, but it is designed as a limiter and it does the safety job while tracking. I may replace it with Fircomp2 once I get more comfortable with it.
Having said that, I appreciate a zero latency low CPU limiter for tracking purposes. You can use any compressor at 20:1 ratio for this purpose. It won't be a brickwall but it'll do the job of protecting whatever comes next.
Fircomp can be used this way
https://jonvaudio.com/fircomp/
I have the paid version, but the free one should work the same. Set it to highest ratio and fastest attack (and zero latency), and you got a good limiter.
Your DAW may come with a limiter without latency. Check there.
Personally, I'm still tracking with the first version of Soundspot Velo. It could be bought for around $1 before v2. It did not have latency and oversampling so it wasn't a great limiter, but it is designed as a limiter and it does the safety job while tracking. I may replace it with Fircomp2 once I get more comfortable with it.
-
- KVRAF
- 3546 posts since 17 Dec, 2009
-
- KVRist
- 203 posts since 30 Sep, 2002
The JS plugin "MGA JS Limiter" which any vst host can use via the ReaJS plugin has no latency. I use it as a safety valve. It comes with Reaper.
Here's the code. It's not that large.
Here's the code. It's not that large.
Code: Select all
// MGA JS Limiter: Limits the maximum output volume of a audio signal
// Copyright (C) 2008 Michael Gruhn
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
desc:MGA JS Limiter
//tags: dynamics limiter
//author: LOSER
slider1:0<-30,0,0.1>Threshold (dB)
slider2:200<0,500,1>Release (ms)
slider3:-0.1<-6,0,0.1>Ceiling
in_pin:left input
in_pin:right input
out_pin:left output
out_pin:right output
@init
HOLDTIME = srate/128;
r1Timer = 0;
r2Timer = HOLDTIME/2;
gr_meter=1;
gr_meter_decay = exp(1/(1*srate));
@slider
thresh = 10^(slider1/20);
ceiling = 10^(slider3/20);
volume = ceiling/thresh;
release = slider2/1000;
r = exp(-3/(srate*max(release,0.05)));
@sample
maxSpls=max(abs(spl0),abs(spl1));
(r1Timer+=1) > HOLDTIME ? (r1Timer = 0; max1Block = 0; );
max1Block = max(max1Block,maxSpls);
(r2Timer+=1) > HOLDTIME ? (r2Timer = 0; max2Block = 0; );
max2Block = max(max2Block,maxSpls);
envT = max(max1Block,max2Block);
env = env < envT ? envT : envT + r*(env-envT);
(env > thresh) ? gain = (g_meter=(thresh / env))*volume : (g_meter=1; gain=volume;);
spl0*=gain;
spl1*=gain;
g_meter < gr_meter ? gr_meter=g_meter : ( gr_meter*=gr_meter_decay; gr_meter>1?gr_meter=1; );
@gfx 0 32 // request horizontal/vertical heights (0 means dont care)
gr_meter *= exp(1/30); gr_meter>1?gr_meter=1; // decay meter here so if the audio processing stops it doesnt "stick"
gfx_r=1; gfx_g=gfx_b=0; gfx_a=0.8;
meter_bot=20;
meter_h=min(gfx_h,32);
xscale=gfx_w*20/meter_bot;
gfx_y=0;
gfx_x=gfx_w + log10(gr_meter)*xscale;
gfx_rectto(gfx_w,meter_h);
gfx_r=gfx_g=gfx_b=1.0; gfx_a=0.6;
s2=sqrt(2)/2;
g = s2;
while(
gfx_x=gfx_w + log10(g)*xscale;
gfx_x >= 0 ?
(
gfx_y=0;
gfx_lineto(gfx_x,meter_h,0);
gfx_y=meter_h-gfx_texth;
gfx_x+=2;
gfx_drawnumber(log10(g)*20,0);
gfx_drawchar($'d');
gfx_drawchar($'B');
);
g*=s2;
gfx_x >=0;
);
gfx_a=1;
gfx_x=0; gfx_y=meter_h/2 - gfx_texth/2;
gfx_drawnumber(log10(gr_meter)*20,1);
gfx_drawchar($'d');
gfx_drawchar($'B');
Will mix for fun
-
- KVRAF
- 3699 posts since 26 Nov, 2015 from Way Downunder
Checkout Ebus Lim in Plugindoctor. It refuses to alias, without oversampling. No idea what clever tricks it does to achieve that.
- KVRian
- 1447 posts since 30 May, 2003 from Milan, Italy