mirror of
https://github.com/kennethreitz/kennethreitz.org.git
synced 2026-06-05 22:50:17 +00:00
Add Interpretations album page to music section
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,8 +6,11 @@ I'm a percussionist by training. Twenty years of drums, starting with marching b
|
||||
|
||||
Currently making music on a **Teenage Engineering OP-XY**. Small, immediate, no screen to get lost in. The constraint is the point.
|
||||
|
||||
The latest project is something different entirely — a full album written in Python.
|
||||
|
||||
## Discography
|
||||
|
||||
- [**Interpretations**](/music/interpretations) (2025) — 24 tracks composed entirely in Python using pytheory. Indian classical raga, acid house, ambient drone, trap, and everything between. The code is the score.
|
||||
- [**Unmastered Impulses**](/music/unmastered-impulses) (2016) — The debut. 13 tracks, almost entirely analog. Raw and unpolished on purpose.
|
||||
- [**Resolution**](/music/resolution) (2017) — Recorded in my home studio in the spring. Closure and new beginnings.
|
||||
- [**Messengers Rising**](/music/messengers-rising) (2017) — 14 tracks processing the bipolar diagnosis and its aftermath.
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
# Interpretations
|
||||
*2025*
|
||||
|
||||
A full-length album of 24 original compositions, written entirely in Python. Not generated — *composed*. Every note, every drum hit, every filter sweep, hand-written in code using [pytheory](https://github.com/kennethreitz/pytheory), a music theory and synthesis library I built for this purpose.
|
||||
|
||||
The album is the answer to a question I've been asking for years: what happens when you treat Python not as a tool for making music, but as the instrument itself?
|
||||
|
||||

|
||||
|
||||
## The Sound
|
||||
|
||||
Interpretations spans Indian classical raga, acid house, lo-fi hip hop, ambient drone, trap, drum and bass, and a few things that don't have names yet. The tracklist is a journey — opening with a sitar raga over 808s, climbing through electronic energy, descending into raw emotional territory, then dissolving into sacred space before finally settling into silence.
|
||||
|
||||
Three tuning systems live side by side: standard Western equal temperament for the electronic tracks, 22-tone shruti intonation for the Indian classical pieces, and just intonation for the meditative closers. Some tracks run at A=432Hz. The tuning is part of the composition, not an afterthought.
|
||||
|
||||
Reverb is treated as an instrument. The Taj Mahal impulse response appears on nearly every melodic part — it's the signature acoustic space of the record. Cathedral reverb for the organ pieces. Algorithmic reverb for tight electronic production.
|
||||
|
||||
## The Process
|
||||
|
||||
Every track is a Python file. A `Score` object defines the time signature and tempo. `Part` objects define instruments with their effects chains. Notes are added one at a time — pitch, duration, velocity. Drum patterns are hand-written step sequences. Filter sweeps are LFO automations. There is no DAW, no MIDI, no audio samples. The Python script *is* the score, and pytheory renders it to audio.
|
||||
|
||||
```bash
|
||||
uv run play # Interactive player
|
||||
uv run play tracks/raga_midnight.py # Play a specific track
|
||||
```
|
||||
|
||||
The interactive player is a curses TUI that shows the full tracklist with keys, tempos, and tuning systems. It renders tracks to WAV on first play, then caches them for instant playback.
|
||||
|
||||
## Why Python
|
||||
|
||||
Twenty years of drums. A studio full of analog synthesizers, all sold. An OP-XY for portable sketches. And now this — an album where the composition language is the programming language I've spent my career thinking in.
|
||||
|
||||
Python is how I think. Writing music in Python isn't a constraint — it's a removal of constraints. No mouse clicking in a piano roll. No menu diving. Just the musical idea, expressed as directly as I can express it, in the language closest to how my mind works.
|
||||
|
||||
The same philosophy that made [Requests](/software/requests) feel obvious — that tools should match human mental models — applies here. pytheory's API is designed so that writing music reads like describing music. A sitar plays a note in D Phrygian with shruti tuning and Taj Mahal reverb. That's what the code says, and that's what you hear.
|
||||
|
||||
## Listen
|
||||
|
||||
Coming soon to Spotify, Apple Music, and all major streaming platforms.
|
||||
|
||||
The source code is the album. Clone the repo, run the player, read the scores. The music and the code that creates it are the same artifact.
|
||||
|
||||
- [GitHub](https://github.com/kennethreitz/interpretations)
|
||||
|
||||
## The Tracklist
|
||||
|
||||
1. **Raga Midnight** — D Phrygian, 90 BPM, shruti. Traditional Hindustani form: alap, jor, gat, jhala. Tambura drone, sitar melody, dhol, hand-written tabla solo. Then the 808 drops.
|
||||
2. **Shruti Lofi** — Dm, 75 BPM, shruti. Microtonal lo-fi hip hop. Vinyl crackle, kalimba loops, Rhodes chords in 22-tone tuning.
|
||||
3. **Ghost Protocol** — Fm, 128 BPM. Portishead darkness into a deadmau5 Strobe-style build. Dark Rhodes, trip-hop drums, hypnotic saw arpeggios.
|
||||
4. **Silk Road** — Dm, 95 BPM. A caravan across continents: koto (China), sitar (India), mandolin (Persia), guitar (Mediterranean).
|
||||
5. **The Observatory** — Gm, 112 BPM. Chapel organ through shortwave static. Theremin signal emerging from noise.
|
||||
6. **Acid Reign** — Am, 140 BPM. Dual 303 acid lines with massive filter sweeps. Cajon and Rhodes grounding the chaos.
|
||||
7. **Beast Mode** — Gm, 135 BPM. Trap drums, 808 slides, sitar hook, mellotron strings, timpani rolls.
|
||||
8. **Apex** — Ebm, 140 BPM. Koto hook over wavefold bass. Mellotron strings and 32nd-note shreds.
|
||||
9. **Voltage** — Fm, 138 BPM. Pure oscillators: sine, saw, pulse. Raw synthesis as composition.
|
||||
10. **An Exception Occurred** — Eb, 80 BPM. Piano arc through major to minor. Theremin psychosis. Hymn recovery.
|
||||
11. **Voices** — F#m, 65 BPM. Five vocal parts multiplying over piano. Auditory hallucinations rendered in polyphony.
|
||||
12. **Intrusive** — Bbm, 92 BPM. A repeating saw synth you can't shake — the musical form of an intrusive thought.
|
||||
13. **Gravity** — Cm, 88 BPM. Hip hop meets Eastern devotional. 808 boom bap, singing bowls, sitar bends.
|
||||
14. **The Interruption** — Dm, 85 BPM. String quartet for 32 bars. Then drum and bass crashes in at bar 33. The strings fight back.
|
||||
15. **Sleight of Hand** — Dm, 100 BPM. Nine genre shifts in 72 bars. The moment where a 303 plays through a choir reverb.
|
||||
16. **Waveforms** — Fm, 118 BPM. A tour of every oscillator: sine, triangle, square, saw, FM, PWM, wavefold, noise.
|
||||
17. **Emergence** — Em, 100 BPM. Acoustic instruments (bowls, didgeridoo, sitar) gradually give birth to electronic ones.
|
||||
18. **Chakra** — 60 BPM, A=432Hz, shruti. Root to crown through seven sections. Metric modulation accelerates from 60 to 135 BPM.
|
||||
19. **The Temple** — A Phrygian, 65 BPM, A=432Hz, shruti. Devotional layers in a stone chamber. Singing bowls, tambura, tabla, theremin.
|
||||
20. **The Dialogue** — E Phrygian, 75 BPM, A=432Hz, shruti. Sitar (human) and theremin (machine) finding each other through call and response.
|
||||
21. **Cathedral** — Dm, 60 BPM. Tubular bells, bagpipe drone, mellotron choir, pipe organ, timpani. Cathedral reverb on everything.
|
||||
22. **Tape Memory** — Dbm, 90 BPM. Mellotron flute, FM bells, theremin, wavefold synthesis, hard sync. Analog nostalgia through digital means.
|
||||
23. **Music Box Factory** — G, 108 BPM. Pure tuned percussion: kalimba, vibraphone, celesta, marimba, glockenspiel. No synths, no strings.
|
||||
24. **Deep Time** — Bm, 40 BPM, just intonation. Seven and a half minutes of ambient drone. Tingsha, singing bowls, didgeridoo, sine drones, theremin, cello. The album dissolves into silence.
|
||||
Reference in New Issue
Block a user