Commit Graph

43 Commits

Author SHA1 Message Date
kennethreitz ea1dafa8dd play.py: Ctrl+C/q returns to menu during play-all, auto-advance on track end
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 16:56:38 -04:00
kennethreitz 9fd3698082 play.py: next/prev track with n/p keys during playback
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 16:54:16 -04:00
kennethreitz 7a1c3f9e7e play.py: numbered WAV filenames matching album order (01_raga_midnight.wav)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 14:37:59 -04:00
kennethreitz 9f928d7fa7 play.py: skip ahead/back during playback (+/-/f/s/d/a/space/q)
Callback-based playback with raw terminal input. Single char keys
only — no escape sequences. The Interruption: reese sidechain 0.55.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 14:14:40 -04:00
kennethreitz d5193b0b66 play.py: widen selection bar to fit tuning/Hz
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:06:35 -04:00
kennethreitz 1cee7b342e play.py: fixed-width selection bar — no more size jumping
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:06:04 -04:00
kennethreitz 9e789bfee9 play.py: hide Hz/tuning from selection bar, show only on unselected
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:05:21 -04:00
kennethreitz 46a440650f play.py: left-justify key names in picker
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:04:23 -04:00
kennethreitz 420462d830 play.py: fixed-width columns in picker for table alignment
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:03:14 -04:00
kennethreitz d656a7392b Chakra: add key variable, picker shows (multi) for multi-key tracks
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:01:49 -04:00
kennethreitz 5538951629 play.py: just show system name (shruti), move after Hz
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:00:30 -04:00
kennethreitz 33257f9147 play.py: show tuning system in picker for non-standard tracks
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:59:44 -04:00
kennethreitz 2d9802c354 play.py: shorten key names in picker (Fm, D phr, G)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:58:10 -04:00
kennethreitz 14aba6b396 play.py: show key in track picker
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:56:10 -04:00
kennethreitz 3c9f5f2962 play.py: show track titles in picker, reference pitch for 432Hz tracks
Picker shows docstring titles (RAGA MIDNIGHT, BEAST MODE) instead of
filenames. Non-440 reference pitch shown next to BPM.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:52:35 -04:00
kennethreitz 782cf0075a Reorder album, README tracklist as linked table with tuning
Album arc: opener → cool down → world → energy peak → emotional
heart → exploration → sacred → closing. Track names link to source.
Table shows key, BPM, tuning system, vibe.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:51:23 -04:00
kennethreitz 8458eda73b play.py: render-all logging — time, size, errors, total elapsed
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:43:50 -04:00
kennethreitz 29934b5420 play.py: parallel rendering with ThreadPoolExecutor + subprocesses
First-run prompt and 'R' render-all both use 4 parallel workers.
Each track renders in its own subprocess. Colored first-run UI.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:41:59 -04:00
kennethreitz 5090411405 Add Apex (track 24), play all/render all, first-run prompt, 30fps picker
Apex: Eb minor, 140 BPM — koto hook, wavefold bass, mellotron strings,
timpani, 32nd koto shreds. Beast Mode's meaner sibling.

play.py: 'a' play all, 'R' render all, first-run render prompt,
30fps picker refresh, WAV cache checkmarks.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:40:01 -04:00
kennethreitz 9f6ea88665 play.py: WAV caching, instant playback, 'r' to render in picker
Tracks auto-cache to wavs/ on first play. Subsequent plays load the
WAV instantly (no render wait). 'r' key in picker force-renders.
Checkmark shows cached tracks. Picker returns to loop after playback.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:26:44 -04:00
kennethreitz 860dc1f323 Add Shruti Lofi (track 23) — microtonal lo-fi hip hop
D minor, shruti just intonation, 75 BPM. Kalimba blips, Rhodes
chords, sitar hook with microtonal bends, mellotron flute pad,
tambura Sa-Pa drone, lazy boom bap with ghost snares, 808 sub,
vinyl crackle. Singing bowl bookends.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 01:20:53 -04:00
kennethreitz a1d6559bf3 Add Beast Mode (track 22) — trap + sitar + mellotron at 135 BPM
G minor, 135 BPM. Sitar hook, 808 slides, distorted saw bass with
sidechain, trap hats with 32nd rolls, mellotron flute drop, timpani
war drums, sitar 32nd shred solo. Singing bowl section markers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 01:01:34 -04:00
kennethreitz a9dbff25d3 Add Music Box Factory (20) + Cathedral (21)
Music Box Factory: G major, 108 BPM — 8 tuned percussion instruments.
Kalimba, vibraphone, celesta, marimba, glockenspiel, xylophone,
crotales, timpani. No synths, no strings.

Cathedral: D minor, 60 BPM — tubular bells in taj_mahal, bagpipe
drone, mellotron choir, timpani thunder, pipe organ, kick in
cathedral reverb. Mellotron choir solo at the heart.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 00:43:18 -04:00
kennethreitz 1abd7f7d1a Add Emergence (track 19) — acoustic births electronic
E minor, 100 BPM. Singing bowls + tingsha opening, didgeridoo,
mellotron flute, sitar 16th arps with dynamic velocity and 32nd
shreds. Synths emerge at bar 33. Both worlds collide at the peak.
Mellotron solo bridges them. Bowls alone at the end.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 00:23:01 -04:00
kennethreitz 395571cc94 Add Tape Memory (track 18), play.py loops back to picker
Tape Memory: Db minor, 90 BPM — mellotron flute, FM bells, drift,
crotales, granular texture, hard_sync, PWM, wavefold, ring_mod.
Theremin solo at the peak. Singing bowls + tingsha throughout.
Play.py now returns to track picker after playback finishes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 00:01:35 -04:00
kennethreitz 5e083ade8c Add Waveforms (17), Intrusive (16), Voices (15) — update all listings
Waveforms: F minor, 118 BPM — percussive synth blips stacking with
occasional sustained pads, 808 sub, rhythmic drums with ghost notes.
Intrusive: saw phrase loops, acceptance arc with sub and cello.
Voices: five vocal parts multiplying, piano as reality.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:33:51 -04:00
kennethreitz e949ca3d81 Add Intrusive (track 16) — invasive thoughts as a repeating synth phrase
Bb minor, 92 BPM. One saw synth phrase loops endlessly. Rhodes tries
to play something else, drums try to drown it — fighting makes it
louder. Acceptance at bar 33: stop fighting, sub bass enters as
ground, cello warmth, the thought slows and passes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 02:32:44 -04:00
kennethreitz 99530578bd Add Voices (track 15) — auditory hallucinations in music
F# minor, 65 BPM. Five vocal parts multiplying across the stereo
field, each with different vowels/delay/reverb/pan. Overwhelm at
bar 25. Piano enters as reality at bar 33. Voices fade one by one.
One last whisper at bar 55, then silence.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 02:24:00 -04:00
kennethreitz a181fc5128 play.py: word-wrapped multi-line track descriptions in picker
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 02:14:37 -04:00
kennethreitz fb67a82cf9 Add An Exception Occurred (track 14) — mental health arc in music
Eb major→minor→major, 80 BPM. Piano-driven arc: stability → spiritual
seeking (tambura, sitar, om vocal, tabla, tingsha) → psychosis (wild
theremin ±5 semitone bends, chaos drums, sub bass) → despair → hymn
(pipe organ in cathedral) → recovery (cello) → gratitude. Every note
hand-placed. Based on kennethreitz.org/essays/mentalhealtherror.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 02:06:15 -04:00
kennethreitz 12f4a8e26d Add Sleight of Hand (track 13) — nine genre shifts, one track
D minor, 100 BPM. Music box → didgeridoo → jazz piano → 808 drop →
solo theremin → choir → acid 303 through the choir → music box over
boom bap → everything at once. Singing bowl marks every transition.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 01:44:43 -04:00
kennethreitz 95350a43e3 Add Gravity (track 12) — hip hop with eastern touches
C minor, 88 BPM. Sparse piano stabs, continuous 808 sub, boom bap
kick with trap hat evolution. Rhodes melody, string swell. Buried
tambura drone, singing bowl bookends, sitar bend in the breakdown.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 01:38:16 -04:00
kennethreitz 1123e773e4 Silk Road: dry-to-wet koto, tabla grows with caravan, remove Culture Clash
Koto starts bone dry, reverb fades in like mist over 16 bars.
Tabla volume/velocity increases as each civilization joins.
Culture Clash removed for rework.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 22:21:08 -04:00
kennethreitz 50af979eee Add The Observatory (track 12), Voltage tweaks, The Dialogue/Temple updates
The Observatory: G minor, 112 BPM — chapel through shortwave, by ChatGPT.
Voltage: spring/taj_mahal reverb, delay, kick maxed.
Remove Digital Raga and 3AM (for rework).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:54:35 -04:00
kennethreitz 78c529acb9 The Interruption: 32nd note hat fills, fix play.py --from-time counter
Hat fills every 4 bars, bigger fills every 8. Play counter now shows
correct time when using --from-time.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 13:21:03 -04:00
kennethreitz 2fbe7dab3f Add Voltage (track 11), The Dialogue tweaks, remove 3AM
Voltage: F minor, 138 BPM — raw oscillators, arp solos, 32nd note peak.
The Dialogue: theremin octave up, sitar reverb tuned, house beat added.
Raga Midnight: sitar reverb reduced. 3AM removed for rework.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 12:43:12 -04:00
kennethreitz b0738dfb1d Add The Dialogue (track 10), house beat, reverb tweaks
New track: E Phrygian, 75 BPM, shruti/just/432 Hz. Sitar (human) and
theremin (machine) find each other through call-and-response. House
kick + hats + clap enter at bar 41. Raga Midnight sitar reverb reduced.
Track picker now wraps around.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 12:02:25 -04:00
kennethreitz fa79b6dc62 Add album order to track picker and --list
New tracks not in ALBUM_ORDER sort to the end.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 11:45:08 -04:00
kennethreitz 418443d8aa Compact metadata display — two lines, non-default tuning only
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 11:35:45 -04:00
kennethreitz 710e31791f Simplify playback UI — progress bar, no raw terminal input
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 11:34:15 -04:00
kennethreitz 213d46fddd Add curses track picker and interactive playback UI
Track picker with animated header, colored track names, arrow nav.
Playback UI with play/pause, seeking, progress bar, transport controls.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 11:09:33 -04:00
kennethreitz cd260cc783 Add --from-time, --to-time, and --pitch flags to play.py
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 10:55:35 -04:00
kennethreitz 359ef3bd24 Add play.py — score runner with solo/mute/export/loop support
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 10:44:09 -04:00