Music
Music/13 min read

Music Theory Through the Lens of Programming

Exploring the mathematical and algorithmic nature of music composition.

Artiphishle|
music-theoryalgorithmscreativity

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']
2
3// 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]
5
6class="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.