-
v1.0.0
StableAll checks were successfulBuild & Push Container Image / build (push) Successful in 8m11sreleased this
2026-06-14 07:23:18 +00:00 | 0 commits to main since this releaseInfinitune 1.0.0 — Cover-First Radio
The autonomous radio is now cover-first: instead of generating all-new music, most album tracks are ACE
coverrenders of real popular songs, reimagined into one cohesive album genre per album.Highlights
- LLM album planner — each 12-track album gets a cohesive target genre, era, vibe, band name, and title, with per-track specs (cover / new / cover-of-cover), real song search targets, per-cover variation (genre / lyrics / both), and full lyrics. If the planner fails, a deterministic template album is generated so the radio never stalls.
- Cover composition (configurable) — 8 covers + 1 brand-new + 1 cover-of-cover + 2 random fill per album. Tunable via
radioCoversPerAlbum,radioNewPerAlbum,radioCoverOfCoverPerAlbum,radioRandomFill,radioSearchRatio,radioSourceLibraryDir,radioCoverNoiseStrength. - Source acquisition — per cover slot: a user-seeded URL pool first, then online search vs a NAS library by configured ratio (each falling back to the other), with cover-of-cover reusing the station's own earlier covers. NAS files are transcoded to mp3 via ffmpeg with hash-keyed caching.
- Sources UI — new
/autoplayer/sourcespage to seed source URLs (with optional genre tag), watch queue status (pending / used / failed), see NAS directory status, and tune the album mix and acquisition ratios. - Reimagine page — re-render an existing song or an external URL in a new style via ACE cover.
Hardening
- yt-dlp downloader bounded to known media extractors (youtube / soundcloud / bandcamp), closing the arbitrary-URL SSRF/redirect vector; public-IP DNS pre-check kept as defense in depth; download caching by target hash with zero-byte/sidecar validation; URL credential redaction and message-only error logging.
- Inventory top-ups serialized to prevent over-creating albums under overlapping triggers.
- Radio WebSocket listeners reference-counted per id so multiple tabs sharing a listener don't drop playback when one closes; listeners re-register on socket reconnect.
radio.album_readyonly emitted on a real status transition (prevents an unbounded album-ready/top-up event loop); finished songs cleared from the station when the schedule empties so new tracks auto-resume.- Per-album count settings clamped to the album-size bound.
Notes
> [!IMPORTANT]New album generation reads newradio*settings; defaults match prior behavior, so no action is required. Cover rendering is slower than text2music (ACE also encodes the reference), and the first cover of a new tensor shape pays a one-time MIOpen tuning cost on AMD GPUs.- New:
songs.source_urlcolumn andcover_sourcestable (auto-migrated on startup). Optional NAS covers requireffmpegand a configuredradioSourceLibraryDir.
Powered by human calories and mass GPU cycles.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads