veils

veils · utilities · schema v1

Quad 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.

A quad VCA and mixer modelled on the Mutable Instruments Veils: four independent voltage-controlled amplifiers that each have a gain knob, a CV input, a direct out, and a linear/exponential response toggle — feeding one summed MIX out. Per channel out = in · shape(knob + cv), where the gain knob spans 0..2: at unity-position knob a ±1V CV sweeps gain from 0 (CV at -1) to 2 (CV at +1). The four channels sum and pass through a tanh soft-clip (mix = tanh(sum)) — gain is NOT clamped at unity, so pushing knob+CV high overdrives into warm saturation rather than digital clipping. Use it as four utility VCAs, a CV-controlled mixer, or four cross-fading/amplitude-modulated voices. There is a DSP worklet for the per-sample VCA + soft-clip math.

the faceplate

veilsin1audioin2audioin3audioin4audiocv1cvcv2cvcv3cvcv4cvout1audioout2audioout3audioout4audiomixaudioaudiocvgatepitch
8 inputs · 5 outputs · 8 params

inputs

idcablewhat it does
in1audioChannel 1 audio input — multiplied by its VCA gain shape(gain1 + cv1) into the channel-1 direct out and the mix.
audio signal
in2audioChannel 2 audio input, multiplied by shape(gain2 + cv2).
audio signal
in3audioChannel 3 audio input, multiplied by shape(gain3 + cv3).
audio signal
in4audioChannel 4 audio input, multiplied by shape(gain4 + cv4).
audio signal
cv1cvChannel 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)
cv2cvChannel 2 gain CV (raw, summed with gain2).
control voltage (CV)
cv3cvChannel 3 gain CV (raw, summed with gain3).
control voltage (CV)
cv4cvChannel 4 gain CV (raw, summed with gain4).
control voltage (CV)

outputs

idcablewhat it does
out1audioChannel 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
out2audioChannel 2 direct VCA out (pre-mix, pre-clip).
audio signal
out3audioChannel 3 direct VCA out (pre-mix, pre-clip).
audio signal
out4audioChannel 4 direct VCA out (pre-mix, pre-clip).
audio signal
mixaudioThe 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

idlabelrangedefaultcurve
gain1Ch10..20linear
gain2Ch20..20linear
gain3Ch30..20linear
gain4Ch40..20linear
resp1Resp10..10discrete
resp2Resp20..10discrete
resp3Resp30..11discrete
resp4Resp40..11discrete

controls

controlwhat it does
Ch1Channel 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.
Ch2Channel 2 VCA gain, linear 0..2 (default 0). Sums with CV2.
Ch3Channel 3 VCA gain, linear 0..2 (default 0). Sums with CV3.
Ch4Channel 4 VCA gain, linear 0..2 (default 0). Sums with CV4.
Resp1Channel 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.
Resp2Channel 2 response toggle (0 = linear, 1 = exponential). Default LINEAR.
Resp3Channel 3 response toggle (0 = linear, 1 = exponential). Default EXPONENTIAL (audio-friendly out of the box).
Resp4Channel 4 response toggle (0 = linear, 1 = exponential). Default EXPONENTIAL.

source

veils.ts on GitHub.

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