Chords, Diatonic Harmony and Voicing
Learning objectives
- learner can build triads, seventh chords and extensions and invert them
- learner can derive the diatonic chord set of a key and voice a progression with good voice leading
- learner can voice chords with octave doubling, spacing, parallel motion and inversions for a target sound
Capstone — one whole task that evidences the objectives
Write and voice an 8-bar chord progression in a chosen key: use diatonic triads and at least two seventh/extended chords, apply inversions and octave-displaced voice leading so the top line is nearly stepwise, and render it as a playable pad.
Prerequisite modules
This module builds toward the bread-and-butter task of a live coder or electronic producer: writing an 8-bar pad progression that sounds intentional rather than block-chorded. In a deep house or ambient set, the pad is the harmonic bed everything else sits on — and what separates a warm, flowing pad from a stiff one is not the chord names but the voicing: which note is on top, how the voices move between changes, and where the sevenths and extensions sit.
The arc starts fully supported. You begin by drilling raw material to automaticity — stacking thirds into major, minor, diminished and augmented triads, then extending them with sevenths (the semitone rules for each type are your JIT reference). Next you derive the full diatonic chord set of your chosen key, so every chord choice in the capstone comes from a closed, functional system rather than guesswork. The middle exercises are guided voicing studies: re-spelling a fixed progression through inversions, then applying octave displacement so the top voice steps rather than leaps — the “melody emerging from the chords” move. The capstone strips the scaffolding: you pick the key, the progression, and the voicing strategy, and render the result as a playable pad.
Every required atom gates that outcome: you cannot voice a stepwise top line without inversion and voice-leading concepts, cannot pick chords without the diatonic set (major and minor), and cannot meet the seventh/extended requirement without the construction rules; parallel harmony gives you the deliberate contrast case for the target sound. Supporting atoms enrich rather than gate — minor-ninth colour, deep house’s seventh-chord idiom, mix-friendly chord reduction, and arpeggiation as an alternative presentation of the same harmony.
Runnable examples
Generated from the context/ instrument corpus by concept (redistributable idioms only). Do not edit — regenerate with gen-module-examples.mjs.
drone
osc 55 >> audio
punctual-0001 · CC0-1.0
SinOsc s => dac;
chuck-0001 · MIT
chord-stab
chord("<Cm7 Fm7>").voicing()
strudel-0010 · CC0
~stab: mix ~n1 ~n2 ~n3 >> mul ~env
glicol-0015 · MIT
arpeggio
n("0 2 4").scale("c:minor").arp("up")
strudel-0012 · CC0
d1 $ arp "up" $ n "c'min7" # sound "superpiano"
tidal-0012 · CC0
scale-constraint
n("0 2 4 6").scale("c:minor")
strudel-0009 · CC0
play (scale :c4, :minor).tick; sleep 0.25
sonicpi-0012 · CC0
chord-progression
play_chord progression.tick, release: 4, amp: 0.5; sleep 4
sonicpi-0017 · CC0
Pbind(\degree, Pseq([[0, 2, 4], [3, 5, 7], [4, 6, 8], [0, 2, 4]], 1), \dur, 2).play
supercollider-0031 · CC0
motif-development
d1 $ n (run 8) # sound "arpy" # room 0.3
tidal-0043 · CC0
play (scale :e3, :minor_pentatonic).tick + (ring 0, 12, 7).look; sleep 0.25
sonicpi-0021 · CC0
chord-extension
[60,63,67,70] @=> int ch[]; SawOsc s => ADSR e => dac; e.set(2::ms,120::ms,0,2::ms);
for(0=>int i;i<ch.size();i++){ Std.mtof(ch[i]) => s.freq; e.keyOn(); 150::ms => now; }
chuck-0035 · MIT
Atoms in this module
Required — these gate the capstone
Supporting — enrichment, not gating
Part of curricula
- Electronic Music Producer — from raw sound to a released track — Design your palette — synthesis and groove required
- Live Coder — zero to performing live-coded music — Patterns, Grooves & Voices recommended
Unlocks — modules that require this one