Skip to content

Commit

Permalink
update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
magnetophon committed Apr 10, 2024
1 parent af5a29c commit f783555
Showing 1 changed file with 48 additions and 14 deletions.
62 changes: 48 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,48 @@ A lookahead compressor/limiter that's soft as a lamb.

Lamb was made with these goals in mind:

- Be as clean as possible
- Sound as clean as possible and as dirty as desired.
- Give the user full control over the character with the minimum amount of knobs.

The secret sauce is all in the attack/release:
you can change both the length and the shape of their curve.
The shapes look like [this](https://www.desmos.com/calculator/cog4ujr7cs); _c0_ in Desmos corresponds to the _shape_ parameters in the plugin.
When it is at value 0, the curve is a slice of pure sine.

The ``release hold`` parameter prevents the gain reduction from coming back up if it needs to go down again soon.
You control how soon is soon with ``release hold``.
This adds latency though.
## 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 threshold[^1].
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.
- You can adjust the shape of the attack and release.
The inspiration for this came from (a video by Dan Worrall)[https://youtu.be/7Yit769SN64?t=1115].
When shape is at 0, the curve is a slice of pure sine.
[Demo](images/lamb_shape.mp4)
- 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.
It prevents the gain reduction from coming back up if it needs to go down again soon.
You control how soon is soon.
- Adaptive release optionally prevents pumping.
When you turn up the adaptive release, the gain won't rush up when there is a quiet part after a big peak.
The first part of the release will always have the speed you set with the release knob.
If you DO want obvious pumping, just turn the adaptive release down!
- 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 define how long it takes for the GR to do "most" of the movement.
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.
If the gain reduction is fast and short enough, you won't notice any shift in stereo image.
(Partially ) unlinking left and right can sometimes sound more natural, cause a loud sound on one side won't make the other side duck in level.
Slower movements, 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 this live, or for tracking, you can set it to minimum.
The latency is always reported to the host.

## Usage

Apart from regular dragging and using the mouse-wheel, you can interact with the sliders in the following ways:
- Shift + drag or mouse-wheel: fine adjustments
- Alt + click on a slider: type a value
- Double-click on a slider: back to the default value.
- Double-click or right-click on a slider: back to the default value.


## Building and installing
Expand All @@ -45,15 +69,18 @@ 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:

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

The smoothing algorithm in lamb needs double precision to work.
This only recently [got supported](https://github.com/grame-cncm/faust/commit/9f2eb5766605f9f8235a45965c69ff33b4274685) in faust and is not in a released version yet.
Therefore, you currently need to build faust from source to be able to rebuild the dsp of lamb.
The smoothing algorithm in lamb needs double precision to work.
This only recently [got supported](https://github.com/grame-cncm/faust/commit/9f2eb5766605f9f8235a45965c69ff33b4274685), so you need to use faust version [2.72.14](https://github.com/grame-cncm/faust/releases/tag/2.72.14) or newer.
This faust version has a bug for Windows, that got fixed [here](https://github.com/grame-cncm/faust/commit/bde0c9e3168a6da9e953367856099100e9537490).
Therefore, Windows users currently need to build faust from source to be able to rebuild the dsp of lamb.
[Here's](https://github.com/grame-cncm/faust/wiki/BuildingSimple) a quick tutorial on how to do that.


Expand All @@ -66,4 +93,11 @@ This plugin would not have been possible without the following projects:

I would like to thank @sletz, @robbert-vdh, @obsoleszenz and @dariosanfilippo for their fantastic support and feedback!

🐑
🐑




[^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

0 comments on commit f783555

Please sign in to comment.