Files
Strudel-AI-music/agentic_workflow/music_theory.md
2026-03-20 21:16:20 +01:00

6.7 KiB

Music Theory for Strudel Production

Practical music theory for generating professional-sounding Strudel code.

1. Notes & Octaves

Note Names (Strudel format)

C  C#/Db  D  D#/Eb  E  F  F#/Gb  G  G#/Ab  A  A#/Bb  B

Octave range: 0-8. Middle C = c4 (MIDI 60). Sub bass = c1-c2. Melody sweet spot = c4-c6.

MIDI Note Numbers

C1=24, C2=36, C3=48, C4=60, C5=72, C6=84

2. Scales

When to Use Which Scale

Scale Mood/Feel Best for
minor Sad, dark, introspective R&B, trap, lo-fi, ambient
major Happy, bright, uplifting Pop, dance, house
dorian Minor but warm/jazzy Neo-soul, funk, lo-fi hip-hop
mixolydian Major but bluesy Funk, rock, blues
minor:pentatonic Universal minor Any genre, safe choice
major:pentatonic Universal major Pop, EDM, any happy genre
phrygian Dark, Spanish, exotic Metal, flamenco, dark electronic
lydian Dreamy, ethereal, floating Ambient, film score, dream pop
blues Gritty, raw Blues, blues-rock, jazz
harmonicMinor Dramatic, Middle Eastern Dramatic builds, ethnic music
chromatic Dissonant, all notes Sound effects, transitions

Scale Formulas (semitones from root)

Scale Steps
major 0 2 4 5 7 9 11
minor 0 2 3 5 7 8 10
dorian 0 2 3 5 7 9 10
mixolydian 0 2 4 5 7 9 10
phrygian 0 1 3 5 7 8 10
lydian 0 2 4 6 7 9 11
minor:pentatonic 0 3 5 7 10
major:pentatonic 0 2 4 7 9
blues 0 3 5 6 7 10

3. Chords

Building Chords in Strudel

Chords are multiple notes played at once using commas or brackets:

// Method 1: explicit notes
note("[c3,eb3,g3]")               // Cm chord

// Method 2: scale degrees
n("[0,2,4]").scale("C:minor")     // same Cm chord

// Method 3: voicing function
voicing("Cm7")                     // automatic voicing

Essential Chord Types

Name Formula (semitones) Strudel notes (from C) Feel
Major 0,4,7 [c,e,g] Happy, resolved
Minor 0,3,7 [c,eb,g] Sad, introspective
Major 7 0,4,7,11 [c,e,g,b] Dreamy, lush
Minor 7 0,3,7,10 [c,eb,g,bb] Warm, jazzy
Dominant 7 0,4,7,10 [c,e,g,bb] Tension, bluesy
Diminished 0,3,6 [c,eb,gb] Tense, unstable
Suspended 2 0,2,7 [c,d,g] Open, ambiguous
Suspended 4 0,5,7 [c,f,g] Yearning
Add9 0,4,7,14 [c,e,g,d4] Modern, bright
Minor 9 0,3,7,10,14 [c,eb,g,bb,d4] Rich R&B

4. Chord Progressions

By Genre

Pop / Dance / Happy

Name Numerals In C Major Strudel
Classic Pop I-V-vi-IV C-G-Am-F note("<[c3,e3,g3] [g2,b2,d3] [a2,c3,e3] [f2,a2,c3]>")
Four Chord I-IV-vi-V C-F-Am-G note("<[c3,e3,g3] [f2,a2,c3] [a2,c3,e3] [g2,b2,d3]>")

Sad / Dark / R&B / Trap

Name Numerals In C Minor Strudel
Sad Minor i-VI-III-VII Cm-Ab-Eb-Bb note("<[c3,eb3,g3] [ab2,c3,eb3] [eb3,g3,bb3] [bb2,d3,f3]>")
Dark Trap i-iv-VI-V Cm-Fm-Ab-G note("<[c3,eb3,g3] [f2,ab2,c3] [ab2,c3,eb3] [g2,b2,d3]>")
Neo-Soul i7-iv7-VII7-III7 Cm7-Fm7-Bb7-Eb7 note("<[c3,eb3,g3,bb3] [f2,ab2,c3,eb3] [bb2,d3,f3,ab3] [eb3,g3,bb3,db4]>")

Lo-fi / Chill

Name Numerals In D Dorian Strudel
Dorian Chill i7-IV7 Dm7-G7 note("<[d3,f3,a3,c4] [g2,b2,d3,f3]>")
Jazz ii-V-I ii7-V7-Imaj7 Dm7-G7-Cmaj7 note("<[d3,f3,a3,c4] [g2,b2,d3,f3] [c3,e3,g3,b3]>")

House / Techno

Name Numerals In A Minor Strudel
Minimal i-VII Am-G note("<[a2,c3,e3] [g2,b2,d3]>")
Deep House i7-iv7 Am7-Dm7 note("<[a2,c3,e3,g3] [d3,f3,a3,c4]>")

Dramatic / Cinematic

Name In C Minor Strudel
Epic Cm-Ab-Bb-Cm note("<[c3,eb3,g3] [ab2,c3,eb3] [bb2,d3,f3] [c3,eb3,g3]>")

5. Rhythm Theory

Time Signatures & Subdivision

Standard 4/4: 1 cycle = 1 bar = 4 beats.

  • Whole notes: "c" — 1 per cycle
  • Half notes: "c c" — 2 per cycle
  • Quarter notes: "c c c c" — 4 per cycle
  • Eighth notes: "c*8" or 8 items — 8 per cycle
  • Sixteenth notes: "c*16" — 16 per cycle
  • Triplets: "c*3" or "c*6" or "c*12"

Swing / Shuffle

Shuffle feel: elongate first of each pair with @:

note("[c@2 e] [g@2 b]")  // swing feel

Common Drum Patterns (16-step grid notation)

Each [ ] = one beat (4 sixteenths), x=hit, -=rest:

Four-on-the-floor (house/techno)

Kick:  [x---] [x---] [x---] [x---]
Snare: [----] [x---] [----] [x---]
HH:    [--x-] [--x-] [--x-] [--x-]

s("bd*4, [~ sd]*2, [~ hh]*4")

Boom-bap (hip-hop)

Kick:  [x---] [----] [--x-] [----]
Snare: [----] [x---] [----] [x---]
HH:    [x-x-] [x-x-] [x-x-] [x-x-]

s("bd ~ ~ ~ ~ ~ bd ~, ~ ~ ~ ~ sd ~ ~ ~, hh*8").slow(2) adjusted to taste

Trap

Kick:  [x------x] placed irregularly, sparse
Snare: on beat 3 (every 2 beats)
HH:    very fast rolls *16 to *32 with velocity variation

Breakbeat / DnB

Kick:  [x---] [----] [--x-] [----]
Snare: [----] [x---] [----] [x---]

→ Syncopated, off-grid kicks, fast tempo 170+

6. Arrangement Principles

Song Sections

Use <... > alternation and /N slowing for section changes:

// 4-bar chord progression cycling
note("<[c3,e3,g3] [a2,c3,e3] [f2,a2,c3] [g2,b2,d3]>")

// 8-bar pattern: 4 bars of A then 4 bars of B
note("<[pattern A]*4 [pattern B]*4>/8")

Building Tension

  • Gradually open filter: .lpf(sine.range(300, 3000).slow(16))
  • Add density: .every(4, x => x.ply(2))
  • Raise pitch: .add("<0 0 0 12>")
  • Increase delay feedback over time

Drop Technique

  • Build section: filtered, rising, less drums
  • Drop: full drums, open filter, bass hits hard

7. Frequency Ranges for Mixing

Range Hz Role Strudel tip
Sub bass 20-80 Felt not heard .lpf(80) on sub, sine waveform
Bass 80-300 Bass body .lpf(300) for warmth
Low-mid 300-800 Warmth/mud Be careful, can muddy mix
Mid 800-2000 Presence Melody/vocal territory
High-mid 2000-6000 Clarity/bite Lead synths, snares
High 6000-20000 Air/sparkle Hi-hats, cymbals

Gain Staging Guidelines

Element Gain range Notes
Kick 1.0-1.2 Loudest element
Snare/Clap 0.6-0.8 Prominent but below kick
Hi-hats 0.15-0.35 Subtle, dynamic
Bass 0.4-0.6 Strong but not overpowering
Pads/Chords 0.1-0.25 Background wash
Lead melody 0.15-0.3 Present but not harsh
FX/Textures 0.05-0.15 Barely audible atmosphere