From f7835553a307f47baf7f4b388e7bc55734326593 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Wed, 10 Apr 2024 16:36:09 +0200 Subject: [PATCH] update readme --- README.md | 62 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 48 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 1e90c89..dbcdd2f 100644 --- a/README.md +++ b/README.md @@ -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 @@ -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. @@ -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