You’ve been composing classically. Every transform you’ve used since EDM.5—.rev(), .fast(), .slow(), .off(), .add(note())—has a name in composition textbooks. Centuries-old names. Bach used them. Mozart used them. You’ve been using them on phonk beats. This lesson connects the two worlds.
s(), note(), 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(),
.rev(), .fast(), .slow(), .add(note()), .superimpose(),
arrangement with cat() and gain automation,
scales, modes, chords, intervals, non-chord tones, diatonic harmony, ii–V–I, cadences, form, and the phonk palette from EDM.4–9d.
Four notes. That’s all you need. A motive is the smallest meaningful musical idea—a few notes with a shape. Hit play:
C up to Eb—minor 3rd. Back down to D—a step. Up to G—perfect 4th. Four notes. A shape: rise, dip, leap. That shape is the DNA. Everything in this lesson grows from it.
The smallest meaningful melodic idea. Three to seven notes, usually. A motive has a distinctive shape—defined by its intervals and rhythm. Everything in a composition can grow from this seed. Beethoven’s Fifth Symphony grows from 4 notes. Your EDM.9c monster grew from n("0(3,8)").
Write your own 4-note motive. Pick any 4 notes from C minor (C, D, Eb, F, G, Ab, Bb). The intervals between them define its character. Replace the notes in the editor and listen. Keep the one you like—you’ll need it later.
Five operations you already know. Five names that have been in music theory textbooks for centuries.
The motive, then its mirror. Original in center. Reversed copy panned right:
The reversed version plays G D Eb C—same notes, backward. In classical music, this is called retrograde. Bach used it in fugues. You’ve been using .rev() since EDM.5.
Same motive at three speeds. Original, stretched, compressed:
Cycle 1: original (1 cycle). Cycles 2–3: augmented—stretched to 2 cycles with .slow(2). Cycle 4: diminished—compressed to half a cycle with .fast(2). Same motive at three speeds. Augmentation stretches time. Diminution compresses it. Composers have used both since the 14th century.
Same shape, different starting pitch. The motive at three pitch levels:
Original. Then transposed up a perfect 4th (5 semitones). Then up a perfect 5th (7 semitones). Same shape, different starting point. This is transposition—and when you repeat a motive at different pitch levels in sequence, that’s called a sequence. It’s how melodies move through chord changes.
The motive starts. A quarter-cycle later, a copy starts a fifth higher. Two voices, staggered:
Two voices playing the same thing, offset in time. That’s a canon—one of the oldest forms of counterpoint. “Row, Row, Row Your Boat” is a canon. .off() has been creating canons since EDM.5.
Five operations. Five words from music theory textbooks. Retrograde (.rev())—play backward. Augmentation (.slow())—stretch in time. Diminution (.fast())—compress in time. Transposition (.add(note()))—shift pitch. Canon (.off())—delayed copy. You’ve been using all of them. The Monster from 9c IS motivic development—a seed transformed by operations until it becomes something complex.
| strudel | classical | what it does |
|---|---|---|
| .rev() | retrograde | play backward |
| .slow(N) | augmentation | stretch in time |
| .fast(N) | diminution | compress in time |
| .add(note(N)) | transposition | shift pitch |
| .off(t, fn) | canon | delayed copy |
| .jux(fn) | inversion (spatial) | mirror in stereo |
| .superimpose(fn) | counterpoint | simultaneous voices |
Take the motive. Transform it once per bar across an 8-bar phrase. The harmony underneath is the phonk progression. Each bar uses the same 4-note shape, bent to fit:
Bar 1: the motive, original. Bar 2: transposed to Ab. Bar 3: transposed to Bb. Bar 4: transposed to G. Bar 5: retrograde. Bar 6: retrograde, transposed down. Bar 7: another transposition. Bar 8: wider intervals, resolving up to C5—octave above where it started. Each bar uses the same shape, transformed. The melody develops through the harmony.
Transforming a motive across a phrase or piece. State it, transpose it, reverse it, stretch it, compress it. The listener hears unity (same shape) and variety (different presentations). This is how composers build large structures from small seeds. A 4-note motive can generate an entire symphony.
Take your own 4-note motive from Section 0. State it in bar 1. Transpose it to the next chord in bar 2. Retrograde in bar 3. Resolve in bar 4. Replace the melody line in the editor above. Keep the pad underneath—just change the notes inside the <> brackets on the melody line.
Bach’s final work. Unfinished. Fourteen fugues and four canons, all built from one subject—a single melodic idea in D minor. Every technique in this lesson appears: retrograde, augmentation, diminution, inversion, stretto (overlapping canons with tighter and tighter entries). The most extreme motivic development ever written.
D, A, F, D, C#, D, E, F, G, F, E, D. That’s it. Twelve notes. From these twelve notes, Bach generated over an hour of music. Each fugue transforms the subject differently. Some stretch it to twice its length. Some compress it. Some play it backward. Some play it upside down. Some combine three or four transformations at once.
A simplified version of the subject, then its retrograde:
First cycle: the subject. Second cycle: retrograde. Same notes, reversed. Bach wrote entire fugues where the subject appears in both directions simultaneously. The same operation as .rev().
Bach proved that constraint breeds creativity. One motive. A handful of operations. Infinite music. That’s the same principle behind live coding—start with a seed, transform it, let the system generate complexity. The tools are different. The thinking is identical.
A phonk track where the lead melody is built entirely from motivic development of a 4-note seed. The motive plays as a canon (.off() creates a fifth above, delayed). Every 4th cycle it retrogrades (.every(4, rev)). The same 4 notes, endlessly developed by the transforms. Classical composition through live coding.
The motive loops twice per cycle: C Eb D G C Eb D G. The .off(1/4, add(note(7))) creates a canon—a copy a fifth higher, delayed by a quarter cycle. .every(4, rev) retrogrades the whole thing every 4th cycle. Delay smears the notes across time. The pad sweeps underneath. The same 4 notes, endlessly developed by the transforms you’ve had all along.
note() patterns on the lead line (the last note() in the stack). Keep the .off() and .every()—they’ll transform whatever you write..every(4, rev) line, add .superimpose(x => x.slow(2).gain(0.2)). A stretched ghost of the motive plays underneath..every(4, rev) with .every(3, x => x.add(note(5))). Every 3rd cycle, the motive jumps up a perfect 4th.| concept | means | strudel |
|---|---|---|
| motive | smallest meaningful melodic idea — a few notes with a shape | note("c4 eb4 d4 g4") |
| retrograde | play the motive backward | .rev() |
| augmentation | stretch the motive in time | .slow(2) |
| diminution | compress the motive in time | .fast(2) |
| transposition | shift the motive to a different pitch level | .add(note(5)) |
| canon | delayed copy — same melody offset in time | .off(1/4, add(note(7))) |
| motivic development | transforming a motive across a phrase or piece | state, transpose, reverse, stretch, compress |
| sequence | same motive repeated at different pitch levels | .add(note(N)) applied progressively |
Every strudel pattern transform maps to a classical composition technique. .rev() = retrograde. .slow() = augmentation. .fast() = diminution. .add(note()) = transposition. .off() = canon. .jux() = spatial inversion. .superimpose() = counterpoint. The tools changed. The thinking didn’t.
Next: The Set. Everything combined. A 2–3 minute piece.
Tracks that demonstrate this lesson’s concepts.
| artist | track | why |
|---|---|---|
| Lena Raine | Celeste: First Steps (2018) | (VGM) emotional minimalism, motif as narrative |
| Koji Kondo | Zelda: Main Theme (1986–2023) | (VGM) one motif developed across 35 years and 20+ games |
| Beethoven | Symphony No. 5 (1808) | (classical) four notes developed across four movements |
| J Dilla | Workinonit (2006) | (hip-hop) the loop as motive, developed through chopping and filtering |
The idea that a whole piece can grow from a small seed — a motive — is one of the most powerful concepts in music. It connects Beethoven to hip-hop to generative code.
Four notes: G G G Eb. Short-short-short-long. Beethoven built an entire symphony from this cell. The motive appears transposed, inverted, augmented, diminished, fragmented, and recombined across four movements. The first movement alone contains over 200 statements of the motive in various forms. This is motivic development at its most extreme — total unity from minimal material.
Bach’s final major work uses a single subject (D minor, simple and vocal) as the basis for 14 fugues and 4 canons. Each piece transforms the subject through retrograde, inversion, augmentation, diminution, stretto (overlapping entries), and combinations thereof. The final fugue, which introduces Bach’s own name as a counter-subject (B-A-C-H in German note names = Bb-A-C-B), breaks off mid-measure — he died before completing it. The work is a catalog of every motivic transformation technique and reads as a textbook written in music.
In sample-based hip-hop, the loop IS the motive. A 2-bar soul sample, chopped and rearranged, becomes the harmonic and melodic seed of the entire track. DJ Premier’s production for Gang Starr layers the same sample at different chop points — motivic development through sampling. Madlib’s Madvillainy (2004) applies the same principle: each beat is a motive (sampled loop) developed through filtering, pitch-shifting, and rearrangement.
Sources: Hopkins, The Nine Symphonies of Beethoven (1981); Hofstadter, Gödel, Escher, Bach (1979); Yearsley, Bach and the Meanings of Counterpoint (2002); Schloss, Making Beats (2004).