← Music
Music/13 min read
Music Theory Through the Lens of Programming
Exploring the mathematical and algorithmic nature of music composition.
Music Theory for Programmers
Music and code share deep structural similarities.
Scales as Arrays
1class="text-category-tech font-medium">const chromaticScale = [class="text-category-music">'C', class="text-category-music">'C#', class="text-category-music">'D', class="text-category-music">'D#', class="text-category-music">'E', class="text-category-music">'F', class="text-category-music">'F#', class="text-category-music">'G', class="text-category-music">'G#', class="text-category-music">'A', class="text-category-music">'A#', class="text-category-music">'B']23// Major scale pattern: W-W-H-W-W-W-H (2-2-1-2-2-2-1 semitones)4class="text-category-tech font-medium">const majorPattern = [0, 2, 4, 5, 7, 9, 11]56class="text-category-tech font-medium">function getMajorScale(root: string) {7 class="text-category-tech font-medium">const rootIndex = chromaticScale.indexOf(root)8 class="text-category-tech font-medium">return majorPattern.map(interval => 9 chromaticScale[(rootIndex + interval) % 12]10 )11}Rhythm as Time Division
Rhythm is recursive division of time -- much like binary trees.
Harmony as Frequency Ratios
The perfect fifth (3:2 ratio) appears everywhere in music because it's mathematically simple.