wavetable vco
wavetableVco · sources · schema v3Wavetable oscillator that morphs saw -> square -> triangle -> sine across a 16-frame table.
the faceplate
8 inputs · 1 outputs · 5 params
inputs
| id | cable | what it does |
|---|---|---|
pitch | pitch | 1V/oct pitch input — 0V plays C4 and each ±1 shifts the oscillator a full octave. Sums with the TUNE and FINE controls (and the TUNE/FINE CV inputs) to set the playback frequency, which is clamped to roughly 1 Hz–20 kHz. V/oct pitch CV |
fm | audio | Audio-rate frequency-modulation input, depth set by the FM AMT control (FM AMT 0 = no effect). Modulation is EXPONENTIAL, not linear/through-zero: the incoming signal is added in the semitone domain (±1 in × FM AMT = up to ±12 semitones of pitch wobble), so a positive input raises pitch and a negative input lowers it, but the frequency is floored at 1 Hz and never crosses to the other side of zero. A negative FM AMT flips the modulator's polarity. audio signal |
wavePos | cv | CV that scans the wavetable, summing with the WAVE control to pick the morph frame (saw → square → triangle → sine). Audio-rate and clamped to 0..1, so an LFO or envelope here continuously sweeps the timbre; full-scale ±1 covers the whole table from the WAVE setting. control voltage (CV); modulates wavePos (summed directly (the destination DSP scales it)) |
pm | audio | Audio-rate phase-modulation input, depth set by the PM AMT control (PM AMT 0 = no effect). It offsets where the oscillator reads into the wavetable without changing the underlying frequency: ±1 in × PM AMT = ±1 up to a full cycle of phase shift, which adds harmonics for FM/DX-style metallic and bell-like tones. A negative PM AMT inverts the direction of the offset. audio signal |
tune | cv | CV that displaces the TUNE control, shifting coarse pitch in semitones (its full natural range of about ±36 semitones, centered on the knob). control voltage (CV); modulates tune (additive offset — ±1 CV sweeps the full range, centered on the knob) |
fine | cv | CV that displaces the FINE control, shifting pitch in cents (its full natural range of about ±100 cents, centered on the knob) for detuning. control voltage (CV); modulates fine (additive offset — ±1 CV sweeps the full range, centered on the knob) |
fmAmount | cv | CV that displaces the FM AMT control, modulating how deep the FM input drives the pitch. control voltage (CV); modulates fmAmount (additive offset — ±1 CV sweeps the full range, centered on the knob) |
pmAmount | cv | CV that displaces the PM AMT control, modulating how deep the PM input shifts the readout phase. control voltage (CV); modulates pmAmount (additive offset — ±1 CV sweeps the full range, centered on the knob) |
outputs
| id | cable | what it does |
|---|---|---|
audio | audio | The oscillator's audio output — the interpolated wavetable signal at the current pitch and WAVE position, including any FM and PM applied. Mono, roughly ±1 in level; patch it into a filter, VCA, or mixer. audio signal |
params
| id | label | range | default | curve |
|---|---|---|---|---|
tune | Tune | -36..36st | 0 | linear |
fine | Fine | -100..100¢ | 0 | linear |
wavePos | Wave | 0..1 | 0 | linear |
fmAmount | FM | -1..1 | 0 | linear |
pmAmount | PM | -1..1 | 0 | linear |
controls
| control | what it does |
|---|---|
| Fine | Fine tuning in cents, ±100 (±1 semitone), for detuning or beating against another oscillator. 0 is no offset. |
| FM | Depth of the FM input: how strongly the audio-rate signal at the FM input modulates pitch (up to ±12 semitones at full input). 0 ignores the FM input; negative values invert the modulator's polarity. |
| PM | Depth of the PM input: how strongly the audio-rate signal at the PM input offsets the wavetable readout phase (up to a full cycle at full input). 0 ignores the PM input; negative values invert the direction of the phase offset. |
| Tune | Coarse tuning in semitones, ±36 (±3 octaves), added to the 1V/oct pitch input. 0 leaves the incoming pitch untouched. |
| Wave | Scans the position into the 16-frame table from 0 (the first frame) to 1 (the last), morphing the timbre saw → square → triangle → sine; the WAVE POSITION CV input sums on top of this. Sets where in the table the oscillator reads — the table itself is fixed. |
source
wavetable-vco.ts on GitHub.