kennethreitz
d83e39b910
Add self-hosted Umami analytics
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 02:56:03 -04:00
kennethreitz
b5a05c5518
Add bonus track: Infinite Spark
...
Unlisted bonus track composed by Grok & Claude. A minor, 78 BPM.
Sitar alap builds from a single note to full shred, with singing bowl,
piano, mellotron choir, theremin, and minimal trap drums.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-08 03:02:13 -04:00
kennethreitz
4fd3596498
Add Gauges analytics to embed player
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 13:55:01 -04:00
kennethreitz
2151c26505
Add download and source code links to embed player
...
Each track now shows </> (view Python source on GitHub) and ↓ (download MP3) icons, matching the main site player.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 13:36:14 -04:00
kennethreitz
a1a5463a2f
Add streaming service links to embed player footer
...
Spotify, Apple Music, YouTube Music, GitHub links in footer bar.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 10:44:24 -04:00
kennethreitz
806067ff59
Add embeddable player widget with oEmbed support
...
embed.html: compact player with album art, oscilloscope, track picker.
oembed.json: oEmbed discovery for auto-embedding on WordPress, Notion, etc.
index.html: add oEmbed discovery link tag.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 10:31:28 -04:00
kennethreitz
b6d9d82f1f
Sheet music auto-detects LilyPond for PDF output
...
[s] and --sheet now compile LilyPond PDFs when lilypond is installed,
falling back to abcjs HTML otherwise. No config needed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 10:18:17 -04:00
kennethreitz
c25b9cbcc8
Bump pytheory to >=0.42.1 — LilyPond, MusicXML, tab export
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 10:17:15 -04:00
kennethreitz
338bd0b4c7
Bump pytheory to >=0.41.4 — tie long notes across barlines
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 07:58:01 -04:00
kennethreitz
4fdbd40f08
Bump pytheory to >=0.41.3 — fix unpitched parts in sheet music
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 07:52:35 -04:00
kennethreitz
d13dd02f5e
Add sheet music command — [s] in picker or --sheet flag
...
Opens ABC notation rendered as sheet music in the browser via abcjs.
Auto-detects key from track's Key object, bass clef for low parts.
Bumps pytheory to >=0.41.2 for to_abc() support.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 07:45:02 -04:00
kennethreitz
52967c15c2
README: fix 'no audio files' claim — rendered tracks are checked in
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-06 17:05:27 -04:00
kennethreitz
f09623c162
Website: hardcoded track durations, README pytheory link fix
...
All 24 durations visible immediately without playing. README links
to pytheory.kennethreitz.org instead of GitHub.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-06 17:02:52 -04:00
kennethreitz
1bbfb015bb
README: add Listen Now label
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-06 16:59:51 -04:00
kennethreitz
19f4f56370
README: streaming + web player links under album art
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-06 16:58:59 -04:00
kennethreitz
94de406bdc
Website: Apple Music first
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-06 04:30:18 -04:00
kennethreitz
5b01e3b610
Website: add Apple Music link
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-06 04:28:22 -04:00
kennethreitz
5366dad797
Remove 'every note placed by hand' — not accurate for most tracks
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 23:14:36 -04:00
kennethreitz
a3256ac15d
play.py: slower spectrum decay (0.4/frame) — peaks hold and fall gently
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 14:31:13 -04:00
kennethreitz
b81df2bd22
Remove heart
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 14:08:54 -04:00
kennethreitz
143c7b4852
Website: thanks for listening ♡
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 14:06:19 -04:00
kennethreitz
cce0a750c3
play.py: auto-detect terminal width for spectrum analyzer
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 13:43:20 -04:00
kennethreitz
0d26840ace
Website: pytheory link → pytheory.kennethreitz.org
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 13:41:03 -04:00
kennethreitz
d6c003514a
Website: PWA manifest for iOS home screen install + background audio
...
Add to Home Screen on iOS to get background playback, standalone
app mode, and the album cover as the app icon.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 13:39:27 -04:00
kennethreitz
dec607e6ae
Website: iOS background playback fixes + lock screen seek bar
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 13:36:49 -04:00
kennethreitz
1a1062edeb
Website: Media Session API — background playback + lock screen controls
...
Shows album art, title, artist on lock screen. Play/pause/next/prev
from notification. Audio continues when phone screen is off.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 13:32:34 -04:00
kennethreitz
d53a2c80c1
Website: absolute URLs for Twitter/OG social cards
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 13:29:42 -04:00
kennethreitz
78a2fa715c
Website: source code link per track — links to GitHub .py file
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 13:26:02 -04:00
kennethreitz
01abf2fdb7
Website: add YouTube Music link
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 13:10:28 -04:00
kennethreitz
4d87419eab
Website: add Spotify link
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 13:08:56 -04:00
kennethreitz
8ac8907e5a
Website: album description prose between cover and tracklist
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 08:39:21 -04:00
kennethreitz
361badf2e5
Embed album cover art in all MP3s
...
1024x1024 PNG cover in ID3v2 tags. Shows in any music player.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 08:34:37 -04:00
kennethreitz
419cbd5f3e
Dockerfile: install zip for album download generation
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 08:30:47 -04:00
kennethreitz
cc56d075ee
Website: download all zip (built in Docker), duration, tab title
...
Zip generated at Docker build time — not checked into git.
Album duration shown (83:58). Browser tab shows now playing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 08:29:40 -04:00
kennethreitz
f9d45dcde9
Website: sticky oscilloscope — stays on screen when scrolling
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 08:24:20 -04:00
kennethreitz
265346eaf9
Add Gauges analytics
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 08:21:02 -04:00
kennethreitz
938086337a
Website: album art 560px — go big
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 08:17:40 -04:00
kennethreitz
75b70fabcb
Website: album art 460px — the goldilocks size
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 08:16:04 -04:00
kennethreitz
fdfe46860f
Website: album art 380px — cover + a few tracks above the fold
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 08:14:37 -04:00
kennethreitz
1520a787b3
Website: bigger album art (560px, responsive)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 08:12:35 -04:00
kennethreitz
71eca537ab
Re-encode all MP3s at 320 CBR with ID3 tags
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 08:10:40 -04:00
kennethreitz
5c28ee5fff
Add ID3 tags to all MP3s — artist, album, track number, genre, year
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 08:07:25 -04:00
kennethreitz
0b1c7fa199
Website: MP3 download button per track
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 08:06:03 -04:00
kennethreitz
80bb3ae1de
play.py: bass tilt 30%→10% on spectrum
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 07:59:55 -04:00
kennethreitz
fabcd0de92
play.py: spectrum 76 chars wide — nearly full terminal width
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 07:59:11 -04:00
kennethreitz
ef6e7ab54c
play.py: spectrum peak hold with slow decay
...
Peaks hold and decay by 1 level per frame (~40fps = smooth falloff).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 07:57:43 -04:00
kennethreitz
219ac4974b
play.py: tilt EQ on spectrum — bass reduced 70%, highs untouched
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 07:57:09 -04:00
kennethreitz
054d837454
play.py: spectrum log 8→3 — quiet parts nearly silent on display
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 07:56:09 -04:00
kennethreitz
76bcc531f9
play.py: spectrum log 15→8 — even more contrast
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 01:38:40 -04:00
kennethreitz
1dd53ac8c0
play.py: reduce log compression on spectrum (50→15) for more contrast
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-04 01:38:02 -04:00