stereovca

stereovca · utilities · schema v1

Stereo VCA + ring modulator. Per-channel multiply: out_l = in_l * (strength_l + offset) * level; out_r = in_r * (strength_r + offset) * level. The same math behaves as VCA gain control when strength is slow (CV / LFO / envelope) and as ring modulation when strength is audio-rate — no mode toggle, the perceptual difference emerges from signal content. INDEPENDENT normalling: if in_r is unpatched it copies in_l (mono → stereo); if strength_r is unpatched it copies strength_l (one strength drives both VCAs). The two halves normal independently, so true-stereo audio + mono strength works, as does mono audio + per-side strength. Audio carriers (in_l/in_r) declare cable type `audio`; strength inputs declare `cv` (raw bipolar carrier consumed in the multiply with no scaling — listed in PASSTHROUGH_BY_DESIGN) so any cv source (LFO, ADSR, sequencer step CV) lands without a cross-type cast.

A dual (stereo) voltage-controlled amplifier that doubles as a ring modulator — no mode switch, the behavior is purely a function of how fast the control signal is. Each channel computes out = in × (strength + offset) × level: when the STRENGTH input is slow (an LFO, an envelope, a sequencer step) it acts as a VCA, gating and shaping the audio's volume; when STRENGTH is audio-rate it acts as a ring modulator, multiplying two audio signals into clangorous sum-and-difference tones (this matches the hardware truth that 'CV is just slow audio'). The two channels share the LEVEL and OFFSET knobs but have independent audio and strength inputs, with smart normalling so you can drive both sides from one cable: leave IN R unpatched and it mirrors IN L (mono in, stereo out), leave STRENGTH R unpatched and it mirrors STRENGTH L (one modulator drives both VCAs). The STRENGTH inputs take raw bipolar CV directly with no scaling.

the faceplate

stereovcain_laudioin_raudiostrength_lcvstrength_rcvout_laudioout_raudioaudiocvgatepitch
4 inputs · 2 outputs · 2 params

inputs

idcablewhat it does
in_laudioLeft audio carrier — the signal the left channel multiplies by its strength. For ring modulation patch an audio oscillator here.
audio signal
in_raudioRight audio carrier. If you leave this unpatched it is normalled to IN L, so a single mono source fans out to both output channels (mono-to-stereo).
audio signal
strength_lcvLeft multiplier / modulator (raw bipolar CV, consumed with no scaling). A slow signal makes the channel behave as a VCA (volume control); an audio-rate signal makes it a ring modulator. At strength +1 (and offset 0) the channel passes at unity; at 0 it mutes; negative values invert.
control voltage (CV)
strength_rcvRight multiplier / modulator. If unpatched it is normalled to STRENGTH L, so one CV or LFO controls both VCAs at once; patch it for independent left/right modulation.
control voltage (CV)

outputs

idcablewhat it does
out_laudioLeft result: in_l × (strength_l + offset) × level. Audio (or ring-mod) out for the left channel.
audio signal
out_raudioRight result: in_r × (strength_r + offset) × level, honoring the IN R and STRENGTH R normalling above.
audio signal

params

idlabelrangedefaultcurve
levelLevel0..11linear
offsetOffset-1..10linear

controls

controlwhat it does
LevelMaster output gain applied after the per-channel multiply (0 to 1, default unity) — a final trim on both channels at once without touching the modulation depth.
OffsetA bipolar DC term added to each strength signal before multiplying (-1 to +1, default 0). At 0 an unpatched strength (0 V) mutes the channel; turn offset up toward +1 to lift the floor so the channel stays open at unity even with no modulator, and a strength signal then only ducks it — handy for 'always on with optional duck' patches.

source

stereovca.ts on GitHub.

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