# 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: ```js // 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 `@`: ```js 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: ```js // 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 |