← Music
Music/13 min read
Music Theory Through the Lens of Programming
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.