Takazudo Modular Docs

Type to search...

to open search from anywhere

Basic Signal Chain (VCO → VCF → VCA)

Basic Signal Chain (VCO → VCF → VCA)

A patch-register recipe for the canonical mono synth voice: oscillator into filter into amplifier, with an envelope modulating the VCA’s gain.

Pedagogical intent

VCO → VCF → VCA is the first diagram every beginner must internalize. Before a student can understand FM, ring modulation, or complex modular architectures, they need to know why a synthesizer has three separate modules for making a single sound:

  • VCO (voltage-controlled oscillator) — generates the raw waveform at the desired pitch. It produces audio continuously regardless of whether a key is held; on its own it is just an uninterrupted tone.
  • VCF (voltage-controlled filter) — shapes the timbre by attenuating certain frequencies. A low-pass filter at a low cutoff produces a muffled sound; opening the cutoff brightens it. This is where the characteristic “synth sweep” lives.
  • VCA (voltage-controlled amplifier) — controls the volume over time. Without a VCA the oscillator plays forever; the VCA — driven by an envelope — gives the sound its loudness contour and ultimately silences it after the release segment.

The foundational insight is that pitch, tone, and loudness are each controlled by a dedicated module. This separation is not a quirk of modular synthesis — it is the architectural principle behind every subtractive synthesizer, hardware or software.

The envelope-to-VCA-CV cable is the second teaching moment: it illustrates a control-voltage relationship (CV kind, not audio kind). The purple CV cable visually separates the control path from the cyan audio signal chain, making the audio-vs-CV distinction tangible at a glance.

This is firmly patch register — it shows how modules connect, not what signal shapes look like. The companion plot-register diagrams for this lesson are adsr-comparison.svg (the envelope shape) and waveform-sine.svg (the oscillator output). Never mix these into one SVG; they answer different questions.

Visual recipe

  • Canvas: [720, 340] — wide enough for four symbols with comfortable cable routes; tall enough for the env-adsr below the main chain.
  • Layout: audio chain runs left-to-right at y ≈ 90–130; env-adsr sits below at y ≈ 220. This places the CV cable on a clear vertical path into the VCA’s top (vca.cv).
  • Cable kinds:
    • VCO → VCF → VCA: kind: 'audio' (cyan), route: 'straight' — short horizontal hops.
    • env-adsr → vca.cv: kind: 'cv' (purple), route: 'orthogonal' — routes around the VCA’s bottom-right corner to arrive on the top.
  • Labels: “Audio Out” to the right of VCA; “env modulates VCA gain” below env-adsr.
  • Attribution: attribution: true — mandatory for all patch-register diagrams.

The vertical offset between circle-housed symbols (VCO, env-adsr; h = 80) and triangle-housed symbols (VCF, VCA; h = 88) is bridged by nudging the triangle symbols to triangleY = audioY - 4, so the audio center-lines align horizontally at y ≈ 130.

Composer call

import { patch, sym, cable, label, at, near, from, to } from '../core/patch.js';

const audioY = 90;      // top-y for circle-housed symbols (h=80)
const triangleY = 86;   // top-y for triangle-housed symbols (h=88) — centers align
const envY = 220;

const svg = patch({
  size: [720, 340],
  symbols: [
    sym('vco-sine', at(40, audioY)),
    sym('vcf-lowpass', at(200, triangleY)),
    sym('vca', at(400, triangleY)),
    sym('env-adsr', at(400, envY)),
  ],
  cables: [
    cable(from('vco-sine.out'), to('vcf-lowpass.in'), { kind: 'audio', route: 'straight' }),
    cable(from('vcf-lowpass.out'), to('vca.in'), { kind: 'audio', route: 'straight' }),
    cable(from('env-adsr.out'), to('vca.cv'), { kind: 'cv', route: 'orthogonal' }),
  ],
  labels: [
    label('Audio Out', near('vca', 'right')),
    label('env modulates VCA gain', near('env-adsr', 'bottom')),
  ],
  attribution: true,
});

This is the exact call shape used in generateBasicSignalChain() in sub-packages/synth-svg/src/generators/patch-diagrams.ts. The compiled SVG is written to static/images/synth-svg/patch-basic-signal-chain.svg via generate:files.

MDX reference: /images/synth-svg/patch-basic-signal-chain.svg.

Symbol ids used:

  • vco-sine — circle-housed; anchors: out (right edge)
  • vcf-lowpass — triangle-housed; anchors: in (left edge), out (right edge)
  • vca — triangle-housed; anchors: in (left edge), out (right edge), cv (top edge — synthetic anchor added in ptAnchors)
  • env-adsr — circle-housed; anchors: out (right edge)

Source articles

  • synth-kw-signal-flow — the primary target article for this diagram. Planned, not yet using patch diagrams (as of 2026-05); the article currently describes the chain in prose. When the article adopts patch diagrams, reference /images/synth-svg/patch-basic-signal-chain.svg as the opening full-chain illustration, followed by plot-register diagrams for envelope shape and waveform.
  • Any future mm-deep-* article that introduces modular synthesis architecture — this diagram is the canonical starting point before showing any specialized patch.
  • Generator implementation: sub-packages/synth-svg/src/generators/patch-diagrams.ts (generateBasicSignalChain)