Takazudo Modular Docs

Type to search...

to open search from anywhere

1V/oct Voltage-to-Pitch Staircase

1V/oct Voltage-to-Pitch Staircase

A plot-register recipe for visualizing the 1V/oct CV standard: how control voltage maps to pitch in modular synths.

Pedagogical intent

1V/oct is the single most important convention in modular synthesis, but it’s also one of the most abstract for beginners. The word “octave” doubles the frequency; the word “volt” is electrical; the lesson is “+1 V at the VCO’s V/oct input doubles the pitch.”

This diagram makes the mapping concrete: voltage on the x-axis, pitch on the y-axis, and a clean staircase (or line) showing the linear relationship. Overlaying piano keys on the y-axis ties the abstract voltage to a familiar musical reference.

This is firmly plot register — it’s a function (voltage → pitch), not a routing graph. The companion patch-register diagram for the same lesson is “keyboard CV out → VCO 1V/oct in,” which shows where the signal flows but not what the function does.

Two variants exist because they teach slightly different angles:

  • Continuous line (generateVoltagePitch) — emphasizes that the mapping is mathematical and continuous; any voltage produces some pitch.
  • Staircase (generateVoltagePitchStaircase) — emphasizes the quantized musical interpretation: each whole-volt step is an octave; each 1/12 V step is a semitone.

Use the staircase variant when teaching a quantizer or when the lesson focuses on equal-temperament chromatic intervals.

Visual recipe

  • Canvas: dimensions.standard (800 × 300) for the line variant; dimensions.tall (800 × 350) for the staircase to fit the piano keys overlay.
  • Padding: padding.labeled — both axes carry labels (V on x, pitch / octave on y).
  • Grid: drawGrid with xDivisions matching the number of octaves shown, yDivisions matching octaves too. No center line (voltage range is unipolar).
  • Axes: drawAxes with xLabel: 'V', yLabel: 'Pitch'.
  • Line variant: a single primary-colored diagonal in colors.primary, doubled by faint reference grid lines at each whole volt in colors.gridMajor.
  • Staircase variant: stepped polyline in colors.primary; each step rises one octave at each whole-volt mark. Optional piano-key band along the y-axis (use colors.textMuted for the key outlines).
  • Font: all numeric labels in fonts.mono; piano-key labels (C, D, E…) in fonts.label at fontSizes.tiny.

Reuse the axis primitives — do not draw your own grid. The staircase’s step-rendering itself is the only custom polyline; everything else is shared vocabulary.

Generator call

import {
  generateVoltagePitch,
  generateVoltagePitchStaircase,
} from '../generators/voltage-pitch.js';

// Line variant — 5 octaves starting from octave 2 (the default canonical range)
const lineSvg = generateVoltagePitch({ startOctave: 2, numOctaves: 5 });

// Staircase variant — 3 octaves starting at octave 3
// (zoomed in so individual semitone steps are readable)
const staircaseSvg = generateVoltagePitchStaircase({ startOctave: 3, numOctaves: 3 });

Both are already registered in src/scripts/generate-files.ts as voltage-pitch.svg and voltage-pitch-staircase.svg. MDX references:

  • /images/synth-svg/voltage-pitch.svg
  • /images/synth-svg/voltage-pitch-staircase.svg

Source articles

  • synth-kw-cv (CV fundamentals — primary user, both variants)
  • Any article that introduces a quantizer (use the staircase variant)
  • Any article introducing the 1V/oct keyboard or MIDI-to-CV interface
  • Generator implementation: sub-packages/synth-svg/src/generators/voltage-pitch.ts (generateVoltagePitch, generateVoltagePitchStaircase)