Home

Awesome

Automated Builds

lamb 🐑

A lookahead compressor/limiter that's soft as a lamb.

<p align=”center”> <img src="images/lamb.png" alt="screenshot"> </p>

Lamb was made with these goals in mind:

User quote:

"A deep complex beast that favors clean action."
Nil Hartman, mastering engineer.

Features

The following features set it apart from other compressor/limiters:

Use it as a brickwall limiter, a compressor, a leveler, a waveshaper/clipper or anything in between.

As long as the ratio is inf:1, the lookahead is 100% and the output gain is 0dB, the output will not exceed the threshold1.
When the attack, release, release hold and adaptive release are all at their minimum value, you get a waveshaper/clipper.
When adaptive release is at 100%, you get a leveler.

Adjust the shape of the attack and release.

The inspiration for this came from a video by Dan Worrall.
When shape is at 0, the curve is a slice of pure sine.
lamb_shape

No discontinuities in the derivative of the gain reduction.

The gain never abruptly changes direction, resulting in a smoother sound, even at short attack and release times.

Release hold eliminates distortion while keeping most of the level.

Release hold prevents the gain from coming up if it needs to go back down again soon.
You control how soon is soon.
Here's a gain reduction graph with and without it: hold

Adaptive release (optionally) prevents pumping.

With adaptive release, the gain won't rush up too much when there is a quiet part after a big peak, but it will still react quickly to transients.
The first couple of dB of release have the speed you set with the release knob, after that it slows down.
The adaptive release slider controls how many dBs will release fast and how much it will slow down afterwards.
If you DO want obvious pumping, just turn adaptive release off!

Exact attack and release times allow you to easily match any breathing to the tempo of your track.

In most compressors and limiters, the times describe how long it takes to do "most" of the gain change.
In lamb, 500 ms corresponds to exactly 1/4 note at 120 BPM.

Adjust the amount of stereo linkage.

Most limiters are fully stereo linked. This makes sense, since you don't want the stereo image to shift.
However, if the asymmetry in gain reduction is small and short enough, you won't notice any shift in stereo image.
(Partially) unlinking left and right can sometimes sound more natural, because a loud sound on one side won't make the other side duck in level.
Slower changes in gain reduction, caused by adaptive release, are always fully linked.
You can set the amount of linkage for transients as needed.

Choose between fixed or minimum latency.

In most case, you can leave this at fixed, but if you want to use lamb live or for tracking, you can set it to minimum.
The latency is always reported to the host.

Downsides

There are two main downsides to this plugin:

Usage

Apart from regular dragging and using the mouse-wheel, you can interact with the sliders in the following ways:

Building and installing

After installing Rust, you can build and install lamb as follows:

git submodule update --init --recursive
cargo xtask bundle lamb --release
cp -r target/bundled/lamb.vst3 ~/.vst3

Rebuilding the Faust dsp

NOTE: this is only needed if you want to change the dsp, not if you just want to compile the plugin.

The faust dsp code in dsp/lamb.dsp is only transpiled to rust if you build with the faust-rebuild feature activated, like so:

cargo xtask bundle lamb --release  --features faust-rebuild

The smoothing algorithm in lamb needs double precision to work.
This only recently got supported, so you need to use faust version 2.72.14 or newer.
This faust version has a bug for Windows, that got fixed here.
Therefore, Windows users currently need to build faust from source to be able to rebuild the dsp of lamb.
Here's a quick tutorial on how to do that.

Thanks

This plugin would not have been possible without the following projects:

I would like to thank Stéphane Letz, Robbert van der Helm, obsoleszenz, exa, Dr George Atkinson and Dario Sanfilippo for their fantastic support and feedback!

🐑

Footnotes

  1. Lamb does not feature True Peak limiting yet. This is in the pipeline though: https://github.com/magnetophon/lamb-rs/milestone/1
    For most applications, this is less of an issue then you might think, see: https://www.izotope.com/en/learn/true-peak-limiter.html