v0.1.0 — M1: Windows audio capture + FFT + WS pub/sub
First release of the Tracklist Link companion. Captures your default Windows audio output via WASAPI loopback, runs a 64-band real FFT + RMS/peak, and serves both over a localhost WebSocket to the Tracklist overlay.
Install
- Download
tracklist-link.exebelow. - Double-click to run — a tray icon appears.
- Right-click tray → Copy token.
- Open your Tracklist dashboard → OBS overlay card → Reactive analyzer — Tracklist Link companion → paste token → Save & test.
The peak meter lights up as soon as audio plays on your PC. Set Analyzer to `bars` or `wave` and the overlay pulses with real spectrum data.
What works
- Windows 10/11 WASAPI loopback capture (any default output device)
- 48 kHz, f32 samples verified
- 64-band log-spaced FFT @ ~50 Hz
- RMS + peak level stream
- Token + origin + host header auth (per-install secret, constant-time compared)
- Localhost-only bind, never accepts remote connections
- System tray: Copy token / Open config / Regenerate token / Quit
What's next
See ROADMAP.md.
- M1.1 — one-click pairing (skip the token copy-paste)
- M2 — Butterchurn (MilkDrop 2) overlay preset gallery driven by this FFT feed
- M3 — ProjectM / MilkDrop 3 window that OBS captures as a Window Source
- M4 — CS2 GSI + Dota 2 + Apex game-state events, same pub/sub pattern
- M5 — onset / beat / BPM detection
- M6 — cross-platform (macOS CoreAudio, Linux PulseAudio/PipeWire)
Security
See SECURITY.md for the full threat model.
Short version:
- Binds `127.0.0.1` only
- Origin allowlist (`https://music.blackpearl.gg\`, localhost dev)
- Per-install 32-byte secret, constant-time compared
- No outbound network (update checks deliberately deferred)
- Mic/camera/screen never accessed
- MIT-licensed, reproducible builds welcome
Verify the binary
# From source at the tagged commit:
git clone https://github.com/ALunfb/tracklist-link.git
cd tracklist-link
git checkout v0.1.0
cargo build --release
# Compare hashes with the attached binary:
sha256sum target/release/tracklist-link.exeIf your hash doesn't match the release asset, please open an issue.