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:
drawGridwithxDivisionsmatching the number of octaves shown,yDivisionsmatching octaves too. No center line (voltage range is unipolar). - Axes:
drawAxeswithxLabel: 'V',yLabel: 'Pitch'. - Line variant: a single primary-colored diagonal in
colors.primary, doubled by faint reference grid lines at each whole volt incolors.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 (usecolors.textMutedfor the key outlines). - Font: all numeric labels in
fonts.mono; piano-key labels (C, D, E…) infonts.labelatfontSizes.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)