sidecar

sidecar · processors

Stereo sidechain compressor — Giannoulis-Massberg-Reiss 2012 JAES topology (cross-checked against Faust's co.compressor_stereo). Stereo audio in, dedicated SC L/R inputs (with normalling fallback: both unpatched → self-detect on the audio pair, the typical "use this as a plain stereo comp" default). The SC detector path runs a one-pole HPF (sc_hpf 20..1000 Hz, default 20 = effectively off) for kick-immune bus compression, then |sL|+|sR| stereo-link rectifier → log2 → 3-region soft-knee gain computer → asymmetric one-pole smoother (attack 0.1..200 ms log, release 1..2000 ms log) → linear gain via 2^(gainDb/6.0205). Stereo-link is always on in v1 so transients never shift the image under compression. Two ENV outputs expose the reduction envelope for cross-patch ducking: env_out = (-gainDb / 24) * envMag (NO clamp — at envMag>1 the output can overshoot 1.0, by spec), and env_inv_out = 1 - env_out (the canonical "patch this into a VCA strength to make it close when the comp fires"). Threshold (-60..0 dB) and envMag (0..2) are CV-modulatable; ratio, attack, release, knee, makeup, and sc_hpf are knob-only. Per-sample param smoothing kills clicks on rapid threshold / envMag changes. The 6.0205 factor (= 20·log10(2)) is the GMR-canonical log2↔dB bridge that lets the smoother run cleanly in the dB domain.

A stereo sidechain ducker — the classic 'pumping' compressor where one signal pushes another down. The MAIN pair is the trigger (typically a kick drum); the SIDECHAIN pair is the signal that gets ducked and summed into the output (typically a pad or bass). The sidechain is always present at the output EXCEPT when the main fires, at which point the detector pulls it down by a compressor-style gain computer (threshold, ratio, knee, attack, release) and lets it spring back. Detection is stereo-linked so a transient on either main channel ducks both output channels equally (no image shift), and a sidechain high-pass lets you key off the kick's body without the low end choking the detector. Two extra CV outputs (ENV and ENV INV) expose the live ducking envelope for cross-patching the same pump into other VCAs. Real-source chain: feed a rhythmic source into MAIN and the bus you want pumped into SIDECHAIN. ⚠ IT NEEDS BOTH CABLES BEFORE ANY KNOB DOES ANYTHING, which is the one thing about this module no control can show you. With the SIDECHAIN pair unpatched there is nothing to duck, so the box is a wire: measured on the shipping DSP, the output is BIT-IDENTICAL with every one of the nine controls at either extreme. With the MAIN pair unpatched nothing ever triggers, so the reduction is exactly zero and the sidechain simply passes at its own gain. Patch both, then set the controls.

the faceplate

sidecaraudio_l_inaudioaudio_r_inaudiosc_l_inaudiosc_r_inaudiothreshold_cvcvenv_mag_cvcvinput_level_cvcvaudio_l_outaudioaudio_r_outaudioenv_outcvenv_inv_outcvaudiocvgatepitch
7 inputs · 4 outputs · 9 params

inputs

idcablewhat it does
audio_l_inaudioLeft MAIN / trigger input — the signal whose transients drive the ducking (e.g. a kick). It also passes through to the output untouched. Unpatched: silent.
audio signal; L/R stereo pair with audio_r_in — L-only auto-duplicates to R
audio_r_inaudioRight MAIN / trigger input. If unpatched it is normalled to MAIN L, so a mono trigger drives both detector channels.
audio signal; L/R stereo pair with audio_l_in
sc_l_inaudioLeft SIDECHAIN input — the signal that gets ducked and summed to the output (e.g. a pad). If the whole SC pair is unpatched, nothing is ducked and only the MAIN passes through.
audio signal; L/R stereo pair with sc_r_in — L-only auto-duplicates to R
sc_r_inaudioRight SIDECHAIN input. If unpatched it is normalled to SC L (mono sidechain to both output channels).
audio signal; L/R stereo pair with sc_l_in
threshold_cvcvCV that adds to the THRESHOLD knob — modulate how loud the main must get before ducking begins.
control voltage (CV); modulates threshold (additive offset — ±1 CV sweeps the full range, centered on the knob)
env_mag_cvcvCV that adds to the ENV MAG knob — scale how far the ENV / ENV INV outputs swing for a given amount of gain reduction.
control voltage (CV); modulates envMag (additive offset — ±1 CV sweeps the full range, centered on the knob)
input_level_cvcvCV that adds to the INPUT LVL knob — modulate the sidechain's input gain (how loud the ducked signal sits in the output).
control voltage (CV); modulates inputLevel (additive offset — ±1 CV sweeps the full range, centered on the knob)

outputs

idcablewhat it does
audio_l_outaudioLeft output: the MAIN left passthrough plus the ducked left sidechain.
audio signal; L/R stereo pair with audio_r_out
audio_r_outaudioRight output: the MAIN right passthrough plus the ducked right sidechain.
audio signal; L/R stereo pair with audio_l_out
env_outcvThe ducking envelope as CV (rises as gain reduction increases). It is NOT hard-clamped: with ENV MAG above 1 it can exceed 1.0 — patch it where overshoot is tolerated. Use it to drive another VCA's strength so it ducks in time with this one.
control voltage (CV)
env_inv_outcvThe inverted ducking envelope (1 − ENV), also un-clamped (can go negative when ENV exceeds 1). Patch it into a downstream VCA's strength to make that VCA CLOSE while this ducker is reducing.
control voltage (CV)

params

idlabelrangedefaultcurve
thresholdThreshold-60..0dB-18linear
ratioRatio1..204log
attackAttack0.1..200ms10log
releaseRelease1..2000ms100log
kneeKnee0..24dB6linear
envMagEnv Mag0..21linear
inputLevelInput Lvl0..2%1linear
makeupMakeup0..24dB0linear
sc_hpfSC HPF20..1000Hz20log

controls

controlwhat it does
AttackHow fast the duck clamps down after the main fires (0.1 to 200 ms, log, default 10): short for a snappy pump, longer for a gentler dip.
Env MagScales how far the ENV / ENV INV CV outputs swing for a given gain reduction (0 to 2, default 1). It is CV-shaping ONLY: measured on the shipping DSP, the audio output is bit-identical at 0, 0.5, 1 and 2, so this is the one control on the module that cannot change what you hear. ENV is `(reduction / 24 dB) × MAG` and is NOT clamped, so it passes 1.0 whenever the reduction passes 24 dB — at the DEFAULT setting of 1, not only above it (measured 1.70 at MAG 1 with a deep duck). ENV INV is 1 − ENV and goes negative in the same states. Patch them where overshoot is tolerated. At MAG 0 both outputs are constants (ENV 0, ENV INV 1). The MAG CV input adds to this.
Input LvlInput gain on the SIDECHAIN signal (0 to 200%, default 100%): boost a quiet pad into the mix or trim a loud one. At 0 the sidechain path is bit-exactly silent and MAKEUP has no authority at all — it and MAKEUP are the SAME dimension in different units (see MAKEUP), so the sidechain's real gain is this knob in dB PLUS makeup. The LVL CV input adds to this.
KneeThe soft-knee width around the threshold in dB (0 to 24, default 6): a wider knee eases ducking in gradually instead of switching hard at the threshold.
MakeupExtra gain in dB on the DUCKED SIDECHAIN (0 to 24, default 0). ⚠ It is NOT an output gain: measured with the sidechain unpatched, the output is bit-identical at 0, 12 and 24 dB, because the MAIN passthrough never passes through it. It multiplies the same signal INPUT LVL does — 20·log10(INPUT LVL) + MAKEUP is the sidechain's total gain, and the two knobs are exactly interchangeable (INPUT LVL 2 / MAKEUP 0 renders bit-identically to INPUT LVL 1 / MAKEUP 6.02). Unlike INPUT LVL it takes no CV.
RatioHow hard the sidechain is pushed down once over threshold (1:1 to 20:1, default 4): higher ratios duck more aggressively. The dial is very non-linear in its own top half — at a full-scale mono trigger and the default threshold the reduction runs 0 / -12.0 / -18.0 / -21.0 / -22.8 dB at 1 / 2 / 4 / 8 / 20, so the last two thirds of the travel buy under 2 dB. What a given setting is worth also depends on the THRESHOLD, which is why the faceplate prints the reduction rather than the ratio.
ReleaseHow fast the sidechain springs back up after the main passes (1 to 2000 ms, log, default 100): this sets the 'breath' / pumping speed.
SC HPFA high-pass on the DETECTOR signal only (20 to 1000 Hz, log, default 20 = effectively off): raise it so the detector keys on the main's punch rather than its low end, preventing bass from over-triggering the duck. It does not filter the audio you hear.
Sidecar curve {n}THE TRANSFER CURVE — the faceplate's picture of the gain computer, and the thing about this module that no number can say. It plots how much the sidechain is pushed down (down the axis, 0 to -48 dB) against the MAIN peak level that is doing the pushing (across the axis, -60 to 0 dBFS — the number on your meter, not the detector's). Two vertical ticks mark the two halves of this module's central confusion: the dashed one is where the THRESHOLD dial's own number lands once the `|L|+|R|` detector sum is taken off it, and the solid one is where ducking actually begins, another half-knee to the left. The dial reads -18 dB at the shipped defaults and the bend is at -27. The slope to the right of the bend is the RATIO, which is where you can see that its top two thirds buy under 2 dB. Point anywhere on the plot to move the read cursor: the caption under it reports the reduction, the sidechain's resulting output gain and the ENV output AT THAT LEVEL, which is the same set of answers the readout row gives for a full-scale main. It is read-only — nothing on it edits the patch — and the cursor is yours alone: it is not shared with the rackspace and not saved with the patch.
ThresholdWhere the gain computer's knee is centred (-60 to 0 dB, default -18): lower it to duck on quieter hits, raise it so only loud transients pump the sidechain. ⚠ It is NOT the MAIN level at which ducking starts, for two reasons the dial cannot show. The detector is a stereo-linked sum of rectifiers (|L| + |R|), so a mono trigger normalled to both channels reads 6.02 dB above its own peak; and the soft KNEE opens half its width BELOW this value. At the shipped defaults ducking begins at a main peak of -27.0 dBFS. The faceplate's ONSET readout prints that number; the THR CV input adds to this one. ⚠ AND THE TOP OF THE DIAL DOES NOT MEAN 'ONLY DUCK ON PEAKS'. Because those two offsets are subtracted rather than added, the onset can never be closer to full scale than -6.02 dBFS — at ANY setting of this knob and the KNEE, including 0 dB with a hard knee. Wind THRESHOLD to the top and a mono main is still ducked from -6 dBFS upward; there is no setting that leaves a hot mono trigger alone. The faceplate's transfer curve shows it as a tick that never reaches the right-hand edge of the plot.

source

sidecar.ts on GitHub.

Generated from packages/web/src/lib/{audio,video}/module-registry.ts · repo