Diatonic Harmony

EDM.9a: build every chord in a key from scratch

You know scales. You know chords. Now: where do chords come from? Not from a chart. Not from memorization. From the scale itself. Take a scale, stack every other note, and you get seven chords. Their qualities—major, minor, dominant, half-diminished—are fixed. The scale decides everything.

what you already know

s(), note(), n(), .scale(), stack(), cat(), setcpm(35), mini-notation (~ * [] <> / @), .gain(), .pan(), .lpf(), .lpq(), .attack(), .decay(), .sustain(), .release(), .room(), .size(), .delay(), .delaytime(), .delayfeedback(), .distort(), chord notation [c3,eb3,g3], progressions with <>, .every(), .sometimes(), .jux(), .off(), scales ("C:major", "C:minor"), modes, melody over changes, and the phonk palette from EDM.4–8.

00Stacking Thirds

A chord is built by stacking notes a third apart from the scale. C major scale has seven degrees: 0 1 2 3 4 5 6. Pick degree 0, skip one, take 2, skip one, take 4. That’s C E G. A C major triad.

C major triad from scale degrees

Three notes, all from C major, all a third apart. Now add a fourth note—skip one more, take degree 6. That’s C E G B.

Cmaj7 — add the 7th

Four notes stacked in thirds. Cmaj7. Richer, more complex. Now do the same thing starting on every degree of the scale. Seven starting points, seven chords:

all 7 diatonic 7th chords in C major

Seven chords, all from C major scale notes only. Each one sounds different. Some bright, some dark, one unstable. You didn’t choose the qualities. The scale did.

diatonic harmony

Diatonic harmony means chords built entirely from the notes of a single scale by stacking thirds. Every key has 7 diatonic chords. Their qualities are fixed by the scale’s interval pattern. You don’t pick major or minor for each chord—the scale decides.

01The Four Qualities

Those seven chords fall into four types. Listen to the first two—Cmaj7 (built on degree I) and Dm7 (built on degree ii):

Cmaj7 vs Dm7 — hear the quality difference

First chord: bright, open, stable. Second chord: darker, warmer. Both built from the same C major scale. The interval pattern inside each chord is different, so the quality is different.

Now the last two—G7 (built on degree V) and Bm7b5 (built on degree vii):

G7 (dominant) vs Bm7b5 (half-diminished)

G7 is tense—it wants to move somewhere. Bm7b5 is dark and unstable, like the ground is tilting. Four qualities total:

chord quality

Chord quality is the specific interval pattern within a chord. Major 7th (maj7): bright, stable. Minor 7th (min7): dark, warm. Dominant 7th (dom7): tense, wants to resolve. Half-diminished (m7b5): dark and unstable. Quality is determined by the scale, not by choice.

degreechordqualitysound
ICmaj7maj7bright, stable
iiDm7min7dark, warm
iiiEm7min7dark, warm
IVFmaj7maj7bright, stable
VG7dom7tense, wants to resolve
viAm7min7dark, warm
vii°Bm7b5m7b5dark, unstable

Arpeggios

An arpeggio breaks a chord into individual notes, played one at a time. In strudel, you can arpeggiate chords by writing the notes as a sequence instead of a stack. Compare:

chord then arpeggiated

First cycle: all four notes at once (comma-separated = chord). Second cycle: the same four notes, low to high, one at a time (space-separated = sequence). That’s manual arpeggiation. Different note orders change the character:

arp patterns over a progression

Each chord gets a different note order. Up goes low to high. Down goes high to low. Up-down bounces. Converge plays from the outside in. You control the pattern by writing the notes in whatever order you want.

arpeggio

An arpeggio is a chord with its notes played one at a time instead of together. In strudel mini-notation: [c3,e3,g3] (commas) plays notes simultaneously as a chord. [c3 e3 g3] (spaces) plays them as a sequence. You can also use .arp() with index numbers: .arp("0 1 2 3") for ascending, .arp("3 2 1 0") for descending. The indices refer to chord tones from lowest to highest.

tweak it

Try .arp("3 2 1 0") for a descending arpeggio. Or .arp("0 1 2 3 2 1") for an up-down bounce. Each index pattern creates a different melodic contour from the same chord tones.

rabbit hole — the circle of fifths

12 keys in a circle

Arrange all 12 keys around a circle. Each step clockwise adds one sharp. Each step counter-clockwise adds one flat. Keys next to each other on the circle share 6 of 7 notes—they sound closely related.

C G D A E B F#/Gb Db Ab Eb Bb F ii (Dm) V (G) I (C)

Why fifths?

A fifth is the interval from C to G—7 semitones. It’s the most consonant interval after the octave. Moving by fifths connects keys that share the most notes. C major and G major differ by one note (F becomes F#). G major and D major differ by one note (C becomes C#). And so on around the circle.

ii-V-I traces an arc

The most common chord progression in Western music—ii-V-I—is three adjacent keys on the circle. In C major: Dm (ii) → G (V) → C (I). Three steps counter-clockwise on the circle, landing on home. That’s why it sounds so satisfying. Each chord is the most closely related to the next.

keysharps/flatsnotes different from C
C0
G1#F#
D2#F#, C#
F1bBb
Bb2bBb, Eb
Eb3bBb, Eb, Ab

Every step around the circle adds or removes one accidental. Keys on opposite sides of the circle (C and F#/Gb) share the fewest notes—they sound the most distant.

02Roman Numerals

Now you can name what the phonk progression was doing all along. Cm → Ab → Bb → G. In C minor, that’s i → VI → VII → V. Hit play:

the phonk progression with Roman numerals

Uppercase = major. Lowercase = minor. The numeral shows which scale degree the chord is built on. i = chord built on degree 1, minor. V = chord built on degree 5, major. Roman numerals describe function, not just name. A V chord in any key has the same tension. A i chord in any key is home.

Roman numeral analysis

Roman numeral analysis names chords by their position in a key. Uppercase = major. Lowercase = minor. The numeral is the scale degree the chord is built on. i = minor chord on degree 1. V = major chord on degree 5. The system describes function—what a chord does—not just its name.

Chord symbols in strudel

In strudel, chord() with .voicing() generates smooth voicings from chord symbols. Here’s the phonk progression using the chord() API:

chord symbols with .voicing()

Smoother than root position. The notes are closer together—less jumping between octaves. Each chord shares common tones with the next. That’s voice leading: choosing inversions so each note moves the smallest possible distance to the next chord.

voicings

Voicings are compact chord arrangements—notes clustered close together, smooth movement between chords. In strudel, chord("<Cm Ab Bb G>").voicing() generates these automatically from chord symbols. You can also write explicit note arrays like [c3,eb3,g3,bb3] for total control over inversion and spacing. Both approaches produce voice-led progressions.

03Diatonic Harmony

The phonk track, now with diatonic chord layers. Drums, 808 bass, pad, cowbell—everything from the last five lessons. New layers: chord().voicing() as a pad, and .arp() with index patterns on top with delay. Chord symbols and automated voicings working together.

// TITLE: diatonic harmony
compose
  1. Change the note order in the arp line. Try high-to-low for all chords, or bounce patterns like [c3 eb3 g3 bb3 g3 eb3]. Different orderings, different melodic contours.
  2. Replace the chord progression with a ii-V-I. Dm7: [d3,f3,a3,c4], G7: [g2,b2,d3,f3], Cmaj7: [c3,e3,g3,b3]. The most important progression in Western music.
  3. Add .every(4, rev) to the arpeggio line. Every fourth bar, the arp plays backward.
  4. Share it. The track has drums, bass, pad, voicings, and arpeggios. All from diatonic harmony.
what you earned
tooldoeslooks like
diatonic harmonychords built from a single scale by stacking thirds7 chords per key, qualities fixed
stacking thirdstake every other scale degree to build a chordn("[0,2,4,6]").scale("C:major")
maj7major 7th quality — bright, stableon degrees I and IV
min7minor 7th quality — dark, warmon degrees ii, iii, vi
dom7dominant 7th quality — tense, wants to resolveon degree V only
m7b5half-diminished — dark, unstableon degree vii only
Roman numeralsname chords by scale degree — uppercase=major, lowercase=minori → VI → VII → V
chord().voicing()auto-voiced chords from chord symbolschord("<Cm Ab Bb G>").voicing()
.arp("indices")arpeggiate chord tones by index number.arp("0 1 2 3") = ascending
arp patternsascending, descending, bounce, converge.arp("<[0 1 2 3] [3 2 1 0]>")
diatonic harmony checklist

Stack thirds from a scale to get 7 chords. Four qualities: maj7, min7, dom7, m7b5. Roman numerals name the function. Use chord("<Cm Ab>").voicing() for auto-voiced progressions. Arpeggiate with .arp("0 1 2 3") using index numbers. The scale decides the harmony. You decide the arrangement.

Next: ii-V-I. The most important chord progression in Western music.

listening

Tracks that demonstrate this lesson’s concepts.

artisttrackwhy
Shoji MeguroPersona 5: Beneath the Mask (2016)(VGM) extended diatonic harmony, acid jazz over JRPG
Michiru YamaneCastlevania SotN: Dracula’s Castle (1997)(VGM) Baroque voice leading meets electric guitar
A Tribe Called QuestElectric Relaxation (1993)(hip-hop) jazz organ, harmonic ambiguity over hip-hop
Flying LotusDo the Astral Plane (2010)(IDM) free jazz + IDM, unconventional harmony
Jean-Philippe RameauPièces de clavecin (1724)(hip-hop) the composer who formalized chord-from-scale theory
history

The idea that chords emerge from scales — rather than being arbitrary combinations — took centuries to formalize.

Rameau’s Traité de l’harmonie (1722)

Jean-Philippe Rameau published the first comprehensive theory of harmony based on chord roots and inversions. Before Rameau, chords were understood as intervals between voices (counterpoint). Rameau argued that a chord has a “fundamental bass” (root) regardless of which note is in the bottom voice. This insight — that C-E-G, E-G-C, and G-C-E are all “C major” — created the framework for Roman numeral analysis.

Functional harmony (19th century)

Hugo Riemann formalized the idea that every chord in a key has a FUNCTION — tonic (rest), dominant (tension), or pre-dominant (preparation). His Vereinfachte Harmonielehre (1893) influenced a century of music theory pedagogy. The I-IV-V-I framework that underpins pop, rock, blues, and electronic music descends directly from Riemann’s functional categories.

Sources: Christensen, Rameau and Musical Thought in the Enlightenment (1993); Harrison, Harmonic Function in Chromatic Music (1994).

→ explore the full timeline