921 vco

moog921Vco · sources

921 voltage-controlled oscillator (first module of the moogafakkin System 55/35 clone — categorized under Ports -> moogafakkin). Faithful to the original 921: ONE oscillator core presents FOUR simultaneous waveform jacks — sine, triangle, sawtooth, and rectangular with variable pulse width — all phase-coherent off the shared core. Pitch input is exponential 1V/oct (0V = C4); a dedicated LINEAR frequency-control input (lin_fm, scaled by the Lin FM depth) adds +/-Hz rather than octaves — it is one-sided in practice, because the core clamps at a positive 0.01 Hz floor, so a large negative excursion parks the oscillator instead of driving it through zero. A sync input drives the three-position SOFT / OFF / HARD sync switch for classic sync timbres. RANGE sets the coarse octave (+/-5 oct) and FREQ the fine tune (+/-12 st): together those two dials span 12 octaves, 4.09 Hz to 16.74 kHz, and both read 0 at the factory settings where it sings C4. WIDTH sets the rectangular duty cycle (with audio-rate width_cv) and is a pure timbre control — the tap level does not change across its span; LEVEL is the output gain on all four taps. The four jacks are NOT level-matched: at one LEVEL setting they sit within 4.8 dB of each other, rectangular loudest and sawtooth quietest. DSP is own-code: a clean-room polyBLEP/polyBLAMP band-limited oscillator (not a port of any moogafakkin schematic or copyleft source - permissive only). Beige moogafakkin faceplate (the intrinsic always-on look shared by the moogafakkin module family).

A clean-room recreation of the Moog 921 Voltage Controlled Oscillator — the standalone, fully self-contained version of the System 55/35 oscillator (the 921A driver + 921B slave packed into one module). One oscillator core presents FOUR simultaneous waveform jacks off the same pitch — sine, triangle, sawtooth, and a rectangular pulse whose duty cycle you set with WIDTH — so you can take a pure sine to one place and a buzzy saw to another from a single voice. Pitch is exponential 1V/oct (0 V at the PITCH jack = C4), set by the RANGE (octave) and FREQ (fine) knobs: those two dials alone span 12 octaves, 4.09 Hz to 16.74 kHz, and the core clamps to 0.01 Hz at the bottom and to just under Nyquist at the top (23 520 Hz at a 48 kHz sample rate, 21 609 Hz at 44.1 kHz). There is a dedicated LINEAR FM input for clangorous FM and bell timbres — it adds Hz rather than octaves, and it is one-sided in practice, because the same 0.01 Hz floor means a negative excursion parks the oscillator instead of driving it through zero. A sync input locks the core's phase to an external source. Mental model: it's a normal analog VCO with the Moog-ladder oscillator's band-limited (polyBLEP) waveshapes, four taps instead of a waveform selector.

the faceplate

921 vcopitchpitchlin_fmaudiosyncaudiowidth_cvcvoctavecvtunecvlinFmAmountcvlevelcvsineaudiotriangleaudiosawtoothaudiorectangularaudioaudiocvgatepitch
8 inputs · 4 outputs · 6 params

inputs

idcablewhat it does
pitchpitch1V/oct exponential pitch CV: 0 V plays C4 and every +1.0 raises the oscillator one octave. Patch a keyboard, sequencer, or the 921A driver bus here to play it; it sums on top of the RANGE + FREQ knobs.
V/oct pitch CV
lin_fmaudioAudio-rate LINEAR frequency modulation input — adds to the frequency in Hz (not exponentially), so the modulation depth stays constant in pitch terms across the keyboard rather than widening with pitch. Its depth is set by the LIN FM knob, and at the shipped depth of 0 this jack is bit-exactly silent: patching it changes nothing at all until you raise LIN FM. At full depth a full-scale input is worth ±2000 Hz. Patch another oscillator here for clangorous FM/bell timbres.
audio signal
syncaudioExternal sync source: each rising edge restarts the oscillator's phase to lock it to the incoming signal, per the SYNC switch — patch a second oscillator here and sweep this one's pitch for the classic hard-sync sweep. At the shipped SYNC setting of OFF this jack is bit-exactly silent, so it does nothing until you move the switch.
audio signal
width_cvcvPulse-width CV: summed onto the WIDTH knob per sample so an LFO here animates the rectangular output's duty cycle (pulse-width modulation). It only affects the rectangular tap; the sine/triangle/saw stay fixed.
control voltage (CV); modulates width (summed directly (the destination DSP scales it))
octavecvCV that displaces the RANGE knob in octaves (coarse pitch); a bipolar LFO/envelope here transposes the oscillator by whole octaves around the knob setting.
control voltage (CV); modulates octave (additive offset — ±1 CV sweeps the full range, centered on the knob)
tunecvCV that displaces the FREQ fine knob in semitones; use it for subtle vibrato or fine detune layered on top of the 1V/oct pitch.
control voltage (CV); modulates tune (additive offset — ±1 CV sweeps the full range, centered on the knob)
linFmAmountcvCV that displaces the LIN FM depth knob, so you can modulate how much linear FM the lin_fm input applies (e.g. open the FM with an envelope for a percussive attack).
control voltage (CV); modulates linFmAmount (additive offset — ±1 CV sweeps the full range, centered on the knob)
levelcvCV that displaces the output LEVEL, acting as a built-in VCA on every waveform tap — patch an envelope here to shape the oscillator's amplitude without an external VCA.
control voltage (CV); modulates level (additive offset — ±1 CV sweeps the full range, centered on the knob)

outputs

idcablewhat it does
sineaudioThe pure sine tap — the fundamental with no harmonics. Same pitch as the other three taps, but NOT the same level: measured at one LEVEL setting the four jacks sit −0.044 dB (rectangular), −3.011 dB (sine), −4.771 dB (triangle) and −4.834 dB (sawtooth), so swapping which tap you patch is worth up to 4.8 dB and you may need to re-trim downstream.
audio signal
triangleaudioThe triangle tap — a soft, hollow tone with only odd harmonics rolling off steeply (mellower than the saw). The quietest tap but one: about 4.7 dB below the rectangular jack at the same LEVEL.
audio signal
sawtoothaudioThe band-limited sawtooth tap — the brightest, fullest waveform (all harmonics), the staple for subtractive bass and leads. It is the QUIETEST of the four jacks, about 4.8 dB below the rectangular one at the same LEVEL.
audio signal
rectangularaudioThe rectangular / pulse tap — its duty cycle is set by the WIDTH knob (and width_cv); a 50% square is hollow, off-square pulses get nasal and thin, and sweeping the width is pulse-width modulation. It is the LOUDEST of the four jacks, and its level does not change with WIDTH — a 2% sliver and a 50% square measure the same RMS, so WIDTH is a pure timbre control.
audio signal

params

idlabelrangedefaultcurve
octaveRange-5..5oct0linear
tuneFreq-12..12st0linear
widthWidth0.02..0.980.5linear
linFmAmountLin FM-1..10linear
syncSync-1..10discrete
levelLevel0..21linear

controls

controlwhat it does
LevelOutput gain on every waveform tap, 0 to 2 (1 = unity). Acts as the oscillator's own VCA; the level CV input adds on top.
Lin FMHow much the LINEAR FM input bends the pitch, ±1 — at the shipped 0 the lin_fm jack is bit-exactly silent; raise it for FM/bell timbres. Full depth is worth ±2000 Hz against a full-scale input. Negative depths do not invert through zero: the core clamps at a positive 0.01 Hz floor, so a large negative excursion parks the oscillator instead.
RangeCoarse pitch in whole octaves (RANGE), -5 to +5 around the patched 1V/oct pitch. Together with FREQ it spans 12 octaves — 4.09 Hz to 16.74 kHz — and neither dial prints that: both read 0 at the factory settings, where the oscillator sings C4. The octave CV input adds on top of this.
SyncSYNC mode switch, a three-position centre-off switch rather than a dial: SOFT, OFF (shipped) and HARD. HARD resets the phase to 0 on every rising edge of the sync input. SOFT resets it only when the phase is already past the half-cycle — which is a conditional version of the same reset, not a gentler differently-shaped one, and on many slave pitches it converges to exactly what HARD produces (#1883). At OFF the sync jack is bit-exactly silent. The DSP compares against ±0.5, so there is nothing between the three detents.
FreqFine pitch trim in semitones (FREQ), ±12 (one octave each way) for tuning the oscillator against others or detuning for thickness. It ADDS to RANGE, so the two together reach a full octave beyond either one alone.
WidthDuty cycle of the rectangular tap, 2% to 98% (0.5 = a 50% square). Only the rectangular output responds; sweep it (or modulate with width_cv) for pulse-width modulation. It is a pure timbre control — the tap's level does not change across the whole span. NOTE the width_cv jack carries more authority than the knob's span can absorb (a ±1 swing against a 0.96-wide range, 2.08x), so a full-scale LFO there spends about 68% of every cycle pinned at 2% or 98% rather than sweeping; attenuate it for smooth PWM.

source

moog921-vco.ts on GitHub.

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