457 lines
9.7 KiB
Markdown
457 lines
9.7 KiB
Markdown
# Notes & Harmony
|
|
|
|
This tutorial covers everything pitch-related: notes, intervals, chords, voicings, transposition, scales, and diatonic harmony. Each section builds on the previous one.
|
|
|
|
## Notes
|
|
|
|
A note name followed by an octave number compiles to a MIDI integer:
|
|
|
|
```forth
|
|
c4 note sine s .
|
|
```
|
|
|
|
That plays middle C (MIDI 60). `a4` is concert A (69), `e3` is 52. Sharps use `s` or `#`, flats use `b`:
|
|
|
|
```forth
|
|
fs4 note 0.5 decay saw s .
|
|
```
|
|
|
|
```forth
|
|
eb4 note 0.8 decay tri s .
|
|
```
|
|
|
|
`fs4` and `f#4` both mean F sharp 4 (MIDI 66). `bb3` is B flat 3 (58). Octave range is -1 to 9.
|
|
|
|
Notes are just integers. They work anywhere an integer works — you can do arithmetic on them, store them in variables, pass them to any word that expects a number.
|
|
|
|
## Intervals
|
|
|
|
An interval duplicates the top of the stack and adds semitones. Stack two intervals to build a chord by hand:
|
|
|
|
```forth
|
|
c4 M3 P5 note 1.5 decay sine s .
|
|
```
|
|
|
|
That builds a C major triad from scratch: C4 (60), then a major third above (64), then a perfect fifth above the root (67). Three notes on the stack, all played together.
|
|
|
|
```forth
|
|
a3 m3 P5 note 1.2 decay va s .
|
|
```
|
|
|
|
A minor triad: A3, C4, E4.
|
|
|
|
**Simple intervals** (within one octave):
|
|
|
|
| Interval | Semitones | Name |
|
|
|----------|-----------|------|
|
|
| `P1` / `unison` | 0 | Perfect unison |
|
|
| `m2` | 1 | Minor 2nd |
|
|
| `M2` | 2 | Major 2nd |
|
|
| `m3` | 3 | Minor 3rd |
|
|
| `M3` | 4 | Major 3rd |
|
|
| `P4` | 5 | Perfect 4th |
|
|
| `aug4` / `dim5` / `tritone` | 6 | Tritone |
|
|
| `P5` | 7 | Perfect 5th |
|
|
| `m6` | 8 | Minor 6th |
|
|
| `M6` | 9 | Major 6th |
|
|
| `m7` | 10 | Minor 7th |
|
|
| `M7` | 11 | Major 7th |
|
|
| `P8` | 12 | Octave |
|
|
|
|
**Compound intervals** (beyond one octave):
|
|
|
|
| Interval | Semitones |
|
|
|----------|-----------|
|
|
| `m9` | 13 |
|
|
| `M9` | 14 |
|
|
| `m10` | 15 |
|
|
| `M10` | 16 |
|
|
| `P11` | 17 |
|
|
| `aug11` | 18 |
|
|
| `P12` | 19 |
|
|
| `m13` | 20 |
|
|
| `M13` | 21 |
|
|
| `m14` | 22 |
|
|
| `M14` | 23 |
|
|
| `P15` | 24 |
|
|
|
|
Custom voicings with wide intervals:
|
|
|
|
```forth
|
|
c3 P5 P8 M10 note 1.5 decay sine s .
|
|
```
|
|
|
|
C3, G3, C4, E4 — an open-voiced C major spread across two octaves.
|
|
|
|
## Chords
|
|
|
|
Chord words replace a root note with all the chord tones. They're shortcuts for what intervals do manually:
|
|
|
|
```forth
|
|
c4 maj note 1.5 decay sine s .
|
|
```
|
|
|
|
That's the same C major triad, but in one word instead of `M3 P5`. A few more:
|
|
|
|
```forth
|
|
d3 min7 note 1.5 decay va s .
|
|
```
|
|
|
|
```forth
|
|
e3 dom9 note 1.2 decay saw s .
|
|
```
|
|
|
|
```forth
|
|
a3 sus2 note 1.5 decay tri s .
|
|
```
|
|
|
|
Common triads:
|
|
|
|
| Word | Intervals |
|
|
|------|-----------|
|
|
| `maj` | 0 4 7 |
|
|
| `m` | 0 3 7 |
|
|
| `dim` | 0 3 6 |
|
|
| `aug` | 0 4 8 |
|
|
| `sus2` | 0 2 7 |
|
|
| `sus4` | 0 5 7 |
|
|
| `pwr` | 0 7 |
|
|
|
|
Common seventh chords:
|
|
|
|
| Word | Intervals |
|
|
|------|-----------|
|
|
| `maj7` | 0 4 7 11 |
|
|
| `min7` | 0 3 7 10 |
|
|
| `dom7` | 0 4 7 10 |
|
|
| `dim7` | 0 3 6 9 |
|
|
| `m7b5` | 0 3 6 10 |
|
|
| `minmaj7` | 0 3 7 11 |
|
|
| `aug7` | 0 4 8 10 |
|
|
| `augmaj7` | 0 4 8 11 |
|
|
| `7sus4` | 0 5 7 10 |
|
|
|
|
Extended, add, altered, and other chord types are listed in the Reference section at the end.
|
|
|
|
## Voicings
|
|
|
|
Four words reshape chord voicings without changing the harmony.
|
|
|
|
`inv` moves the bottom note up an octave (inversion):
|
|
|
|
```forth
|
|
c4 maj inv note 1.5 decay sine s .
|
|
```
|
|
|
|
The root C goes up, giving E4 G4 C5 — first inversion. Apply it twice for second inversion:
|
|
|
|
```forth
|
|
c4 maj inv inv note 1.5 decay sine s .
|
|
```
|
|
|
|
G4 C5 E5. `dinv` does the opposite — moves the top note down an octave:
|
|
|
|
```forth
|
|
c4 maj dinv note 1.5 decay sine s .
|
|
```
|
|
|
|
G3 C4 E4. The fifth drops below the root.
|
|
|
|
`drop2` and `drop3` are jazz voicing techniques for four-note chords. `drop2` takes the second-from-top note and drops it an octave:
|
|
|
|
```forth
|
|
c4 maj7 drop2 note 1.2 decay va s .
|
|
```
|
|
|
|
From C4 E4 G4 B4, the G drops to G3: G3 C4 E4 B4. `drop3` drops the third-from-top:
|
|
|
|
```forth
|
|
c4 maj7 drop3 note 1.2 decay va s .
|
|
```
|
|
|
|
E drops to E3: E3 C4 G4 B4. These create wider, more open voicings common in jazz guitar and piano.
|
|
|
|
## Transposition
|
|
|
|
`tp` shifts every note on the stack by N semitones:
|
|
|
|
```forth
|
|
c4 maj 3 tp note 1.5 decay sine s .
|
|
```
|
|
|
|
C major transposed up 3 semitones becomes Eb major. Works with any number of notes:
|
|
|
|
```forth
|
|
c4 min7 -2 tp note 1.5 decay va s .
|
|
```
|
|
|
|
Shifts the whole chord down 2 semitones (Bb minor 7).
|
|
|
|
`oct` shifts a single note by octaves:
|
|
|
|
```forth
|
|
c4 1 oct note 0.3 decay sine s .
|
|
```
|
|
|
|
C5 (one octave up). Useful for bass lines:
|
|
|
|
```forth
|
|
0 2 4 5 7 5 4 2 8 cycle minor note
|
|
-2 oct 0.8 gain sine s .
|
|
```
|
|
|
|
## Scales
|
|
|
|
Scale words convert a degree index into a MIDI note. By default the root is C4 (MIDI 60):
|
|
|
|
```forth
|
|
0 major note 0.5 decay sine s .
|
|
```
|
|
|
|
Degree 0 of the major scale: C4. Degrees wrap with octave transposition — degree 7 gives C5 (72), degree -1 gives B3 (59).
|
|
|
|
Walk through a scale with `cycle`:
|
|
|
|
```forth
|
|
0 1 2 3 4 5 6 7 8 cycle minor note 0.5 decay sine s .
|
|
```
|
|
|
|
Random notes from a scale:
|
|
|
|
```forth
|
|
0 7 rand pentatonic note 0.8 decay va s .
|
|
```
|
|
|
|
### Setting the key
|
|
|
|
By default scales are rooted at C4. Use `key!` to change the tonal center:
|
|
|
|
```forth
|
|
g3 key! 0 major note 0.5 decay sine s .
|
|
```
|
|
|
|
Now degree 0 is G3 (55) instead of C4. The key persists across steps until changed again:
|
|
|
|
```forth
|
|
a3 key! 0 3 5 7 3 cycle minor note 0.8 decay tri s .
|
|
```
|
|
|
|
A minor melody starting from A3.
|
|
|
|
**Common modes:**
|
|
|
|
| Word | Pattern |
|
|
|------|---------|
|
|
| `major` | 0 2 4 5 7 9 11 |
|
|
| `minor` | 0 2 3 5 7 8 10 |
|
|
| `dorian` | 0 2 3 5 7 9 10 |
|
|
| `phrygian` | 0 1 3 5 7 8 10 |
|
|
| `lydian` | 0 2 4 6 7 9 11 |
|
|
| `mixolydian` | 0 2 4 5 7 9 10 |
|
|
| `pentatonic` | 0 2 4 7 9 |
|
|
| `minpent` | 0 3 5 7 10 |
|
|
| `blues` | 0 3 5 6 7 10 |
|
|
| `harmonicminor` | 0 2 3 5 7 8 11 |
|
|
| `melodicminor` | 0 2 3 5 7 9 11 |
|
|
|
|
Jazz, symmetric, and modal variant scales are listed in the Reference section.
|
|
|
|
## Diatonic Harmony
|
|
|
|
`triad` and `seventh` build chords from scale degrees. Instead of specifying a chord type, you get whatever chord the scale produces at that degree:
|
|
|
|
```forth
|
|
0 major triad note 1.5 decay sine s .
|
|
```
|
|
|
|
Degree 0 of the major scale, stacked in thirds: C E G — a major triad. The scale determines the chord quality automatically. Degree 1 gives D F A (minor), degree 4 gives G B D (major):
|
|
|
|
```forth
|
|
4 major triad note 1.5 decay sine s .
|
|
```
|
|
|
|
`seventh` adds a fourth note:
|
|
|
|
```forth
|
|
0 major seventh note 1.2 decay va s .
|
|
```
|
|
|
|
C E G B — Cmaj7. Degree 1 gives Dm7, degree 4 gives G7 (dominant). The diatonic context determines everything.
|
|
|
|
Combine with `key!` to play diatonic chords in any key:
|
|
|
|
```forth
|
|
g3 key! 0 major triad note 1.5 decay sine s .
|
|
```
|
|
|
|
G major triad rooted at G3.
|
|
|
|
A I-vi-IV-V chord progression using `pcycle`:
|
|
|
|
```forth
|
|
( 0 major seventh ) ( 5 major seventh )
|
|
( 3 major seventh ) ( 4 major seventh ) 4 pcycle
|
|
note 1.2 decay va s .
|
|
```
|
|
|
|
Combine with voicings for smoother voice leading:
|
|
|
|
```forth
|
|
( 0 major seventh ) ( 5 major seventh inv )
|
|
( 3 major seventh ) ( 4 major seventh drop2 ) 4 pcycle
|
|
note 1.5 decay va s .
|
|
```
|
|
|
|
Arpeggiate diatonic chords using `arp` (see the *Timing with at* tutorial for details on `arp`):
|
|
|
|
```forth
|
|
0 major seventh arp note 0.5 decay sine s .
|
|
```
|
|
|
|
## Frequency Conversion
|
|
|
|
`mtof` converts a MIDI note to frequency in Hz. `ftom` does the reverse:
|
|
|
|
```forth
|
|
c4 mtof freq sine s .
|
|
```
|
|
|
|
Useful when a synth parameter expects Hz rather than MIDI.
|
|
|
|
## Reference
|
|
|
|
### All Chords
|
|
|
|
**Triads:**
|
|
|
|
| Word | Intervals |
|
|
|------|-----------|
|
|
| `maj` | 0 4 7 |
|
|
| `m` | 0 3 7 |
|
|
| `dim` | 0 3 6 |
|
|
| `aug` | 0 4 8 |
|
|
| `sus2` | 0 2 7 |
|
|
| `sus4` | 0 5 7 |
|
|
| `pwr` | 0 7 |
|
|
|
|
**Seventh chords:**
|
|
|
|
| Word | Intervals |
|
|
|------|-----------|
|
|
| `maj7` | 0 4 7 11 |
|
|
| `min7` | 0 3 7 10 |
|
|
| `dom7` | 0 4 7 10 |
|
|
| `dim7` | 0 3 6 9 |
|
|
| `m7b5` | 0 3 6 10 |
|
|
| `minmaj7` | 0 3 7 11 |
|
|
| `aug7` | 0 4 8 10 |
|
|
| `augmaj7` | 0 4 8 11 |
|
|
| `7sus4` | 0 5 7 10 |
|
|
|
|
**Sixth chords:**
|
|
|
|
| Word | Intervals |
|
|
|------|-----------|
|
|
| `maj6` | 0 4 7 9 |
|
|
| `min6` | 0 3 7 9 |
|
|
| `maj69` | 0 4 7 9 14 |
|
|
| `min69` | 0 3 7 9 14 |
|
|
|
|
**Extended chords:**
|
|
|
|
| Word | Intervals |
|
|
|------|-----------|
|
|
| `dom9` | 0 4 7 10 14 |
|
|
| `maj9` | 0 4 7 11 14 |
|
|
| `min9` | 0 3 7 10 14 |
|
|
| `9sus4` | 0 5 7 10 14 |
|
|
| `dom11` | 0 4 7 10 14 17 |
|
|
| `maj11` | 0 4 7 11 14 17 |
|
|
| `min11` | 0 3 7 10 14 17 |
|
|
| `dom13` | 0 4 7 10 14 21 |
|
|
| `maj13` | 0 4 7 11 14 21 |
|
|
| `min13` | 0 3 7 10 14 21 |
|
|
|
|
**Add chords:**
|
|
|
|
| Word | Intervals |
|
|
|------|-----------|
|
|
| `add9` | 0 4 7 14 |
|
|
| `add11` | 0 4 7 17 |
|
|
| `madd9` | 0 3 7 14 |
|
|
|
|
**Altered dominants:**
|
|
|
|
| Word | Intervals |
|
|
|------|-----------|
|
|
| `dom7b9` | 0 4 7 10 13 |
|
|
| `dom7s9` | 0 4 7 10 15 |
|
|
| `dom7b5` | 0 4 6 10 |
|
|
| `dom7s5` | 0 4 8 10 |
|
|
| `dom7s11` | 0 4 7 10 18 |
|
|
|
|
### All Scales
|
|
|
|
**Modes:**
|
|
|
|
| Word | Pattern |
|
|
|------|---------|
|
|
| `major` | 0 2 4 5 7 9 11 |
|
|
| `minor` / `aeolian` | 0 2 3 5 7 8 10 |
|
|
| `dorian` | 0 2 3 5 7 9 10 |
|
|
| `phrygian` | 0 1 3 5 7 8 10 |
|
|
| `lydian` | 0 2 4 6 7 9 11 |
|
|
| `mixolydian` | 0 2 4 5 7 9 10 |
|
|
| `locrian` | 0 1 3 5 6 8 10 |
|
|
|
|
**Pentatonic and blues:**
|
|
|
|
| Word | Pattern |
|
|
|------|---------|
|
|
| `pentatonic` | 0 2 4 7 9 |
|
|
| `minpent` | 0 3 5 7 10 |
|
|
| `blues` | 0 3 5 6 7 10 |
|
|
|
|
**Harmonic and melodic minor:**
|
|
|
|
| Word | Pattern |
|
|
|------|---------|
|
|
| `harmonicminor` | 0 2 3 5 7 8 11 |
|
|
| `melodicminor` | 0 2 3 5 7 9 11 |
|
|
|
|
**Chromatic and whole tone:**
|
|
|
|
| Word | Pattern |
|
|
|------|---------|
|
|
| `chromatic` | 0 1 2 3 4 5 6 7 8 9 10 11 |
|
|
| `wholetone` | 0 2 4 6 8 10 |
|
|
|
|
**Jazz / Bebop:**
|
|
|
|
| Word | Pattern |
|
|
|------|---------|
|
|
| `bebop` | 0 2 4 5 7 9 10 11 |
|
|
| `bebopmaj` | 0 2 4 5 7 8 9 11 |
|
|
| `bebopmin` | 0 2 3 5 7 8 9 10 |
|
|
| `altered` | 0 1 3 4 6 8 10 |
|
|
| `lyddom` | 0 2 4 6 7 9 10 |
|
|
|
|
**Symmetric:**
|
|
|
|
| Word | Pattern |
|
|
|------|---------|
|
|
| `halfwhole` | 0 1 3 4 6 7 9 10 |
|
|
| `wholehalf` | 0 2 3 5 6 8 9 11 |
|
|
| `augmented` | 0 3 4 7 8 11 |
|
|
| `tritone` | 0 1 4 6 7 10 |
|
|
| `prometheus` | 0 2 4 6 9 10 |
|
|
|
|
**Modal variants (from melodic minor):**
|
|
|
|
| Word | Pattern |
|
|
|------|---------|
|
|
| `dorianb2` | 0 1 3 5 7 9 10 |
|
|
| `lydianaug` | 0 2 4 6 8 9 11 |
|
|
| `mixb6` | 0 2 4 5 7 8 10 |
|
|
| `locrian2` | 0 2 3 5 6 8 10 |
|