veils
veils · utilities · schema v1Quad VCA + soft-clip summing mix (Mutable Instruments Veils archetype — analog hardware, clean-room from-spec impl). Four independent VCAs, each with audio in, CV in (summed with knob), gain knob spanning [0, 2], and a per-channel response toggle: LIN for CV / control signals, EXP (squared) for audio / smooth fades. Per-channel direct outs are pre-mix, pre-clip. A separate MIX out sums all four channels and applies a tanh soft-clip — gain is NOT clamped at 1.0 per channel, so knob + CV can push above unity for warm overdrive on the mix bus.
the faceplate
8 inputs · 5 outputs · 8 params
inputs
| id | cable | what it does |
|---|---|---|
in1 | audio | Channel 1 audio input — multiplied by its VCA gain shape(gain1 + cv1) into the channel-1 direct out and the mix. audio signal |
in2 | audio | Channel 2 audio input, multiplied by shape(gain2 + cv2). audio signal |
in3 | audio | Channel 3 audio input, multiplied by shape(gain3 + cv3). audio signal |
in4 | audio | Channel 4 audio input, multiplied by shape(gain4 + cv4). audio signal |
cv1 | cv | Channel 1 gain CV. Summed RAW with the gain knob (no scaling): a ±1V LFO at a unity-position knob sweeps gain 0..2, the natural full-range VCA modulation, so this is the per-channel tremolo / ducking / cross-fade control. control voltage (CV) |
cv2 | cv | Channel 2 gain CV (raw, summed with gain2). control voltage (CV) |
cv3 | cv | Channel 3 gain CV (raw, summed with gain3). control voltage (CV) |
cv4 | cv | Channel 4 gain CV (raw, summed with gain4). control voltage (CV) |
outputs
| id | cable | what it does |
|---|---|---|
out1 | audio | Channel 1 direct VCA out — in1 · shape(gain1 + cv1), taken BEFORE the summing bus and soft-clip, so downstream sees the raw post-VCA channel. audio signal |
out2 | audio | Channel 2 direct VCA out (pre-mix, pre-clip). audio signal |
out3 | audio | Channel 3 direct VCA out (pre-mix, pre-clip). audio signal |
out4 | audio | Channel 4 direct VCA out (pre-mix, pre-clip). audio signal |
mix | audio | The summed bus, soft-clipped: tanh(out1 + out2 + out3 + out4). Because the sum is not clamped before the tanh, driving channels past unity produces warm saturation — Veils' signature overdrive — instead of a hard clip. audio signal |
params
| id | label | range | default | curve |
|---|---|---|---|---|
gain1 | Ch1 | 0..2 | 0 | linear |
gain2 | Ch2 | 0..2 | 0 | linear |
gain3 | Ch3 | 0..2 | 0 | linear |
gain4 | Ch4 | 0..2 | 0 | linear |
resp1 | Resp1 | 0..1 | 0 | discrete |
resp2 | Resp2 | 0..1 | 0 | discrete |
resp3 | Resp3 | 0..1 | 1 | discrete |
resp4 | Resp4 | 0..1 | 1 | discrete |
controls
| control | what it does |
|---|---|
| Ch1 | Channel 1 VCA gain knob, linear 0..2 (default 0 = silent). Sums with CV1; the past-unity range exists so knob + CV can push the channel into the mix soft-clip. |
| Ch2 | Channel 2 VCA gain, linear 0..2 (default 0). Sums with CV2. |
| Ch3 | Channel 3 VCA gain, linear 0..2 (default 0). Sums with CV3. |
| Ch4 | Channel 4 VCA gain, linear 0..2 (default 0). Sums with CV4. |
| Resp1 | Channel 1 response toggle: 0 = LINEAR (gain follows knob+CV directly — best for control signals), 1 = EXPONENTIAL (the signal is squared, giving smoother perceptual fades — best for audio). Default LINEAR. |
| Resp2 | Channel 2 response toggle (0 = linear, 1 = exponential). Default LINEAR. |
| Resp3 | Channel 3 response toggle (0 = linear, 1 = exponential). Default EXPONENTIAL (audio-friendly out of the box). |
| Resp4 | Channel 4 response toggle (0 = linear, 1 = exponential). Default EXPONENTIAL. |
source
veils.ts on GitHub.