first strudel via AI
This commit is contained in:
203
agentic_workflow/music_theory.md
Normal file
203
agentic_workflow/music_theory.md
Normal file
@@ -0,0 +1,203 @@
|
||||
# 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 |
|
||||
Reference in New Issue
Block a user