AetherTune
What it is
Section titled “What it is”AetherTune is a Rust TUI for browsing and streaming internet radio via the RadioBrowser API — but the radio surface is the demo; the engineering surfaces are what make it the strongest single inspiration in this batch for KN-86’s runtime architecture. It ships:
- A real 16-band spectrum visualizer powered by an actual sliding-window radix-2 FFT at ~94 frames per second, with CAVA-inspired gravity-fall-off, integral smoothing, and automatic sensitivity. Audio is captured from PulseAudio/PipeWire monitor on Linux or WASAPI loopback on Windows.
- CRT boot and power-off animations that bracket the application — the runtime opens with a CRT-warmup scroll and closes with a power-off shrink. Identity branding, not skinning.
- 8 named themes with live preview:
CRT(default — phosphor cyan/magenta/neon green),Gruvbox,Nord,Dracula,Monokai,Catppuccin,Hacker,Solarized. Theme picker (t) shows live color swatches and previews each theme on navigation. - Fully remappable keybindings — every keyboard shortcut can be rebound from an in-app overlay (
S), persisted to~/.aethertune/config.json. - Stream health monitor + song log + favorites + history, persisted to JSON.
- Built-in profiler with per-frame timing breakdown for performance tuning.
- A fallback simulated visualizer when audio capture isn’t available (e.g., macOS, or Linux without PulseAudio) — degrades gracefully, doesn’t crash.
The src/ui/ module layout is clean enough that the user’s prompt called it out as a starting-architecture reference.
Aspirational features for KN-86
Section titled “Aspirational features for KN-86”- Real FFT visualizer pipeline as the reference. When KN-86 implements the PSG-driven CIPHER-LINE visualizer (per the v0.1 ship list in the Batch-2 visual identity brief), the AetherTune pipeline is the reference: a sliding-window radix-2 FFT, ~94 Hz update rate, CAVA-style gravity fall-off for the visual smoothing, automatic sensitivity adjustment so the bands fill nicely across loud and quiet passages. On KN-86 the input source is YM2149 PSG output from the Pico 2 coprocessor rather than a system audio loopback, but the DSP is the same.
- CRT boot + power-off animations as identity branding. The Deckline should open with a CRT-warmup animation and close with a power-off shrink. Not optional, not skippable (or skippable only by an explicit
--no-cinemaflag the user has to discover). This is the kind of small, deliberate touch that makes the device read as the Deckline rather than as a Linux machine running a TUI. - 8 themes, live preview, fully persisted in JSON. Same direction as audium.md but with the CRT-as-default theme call-out. Direct cite for the v0.1 aesthetic-mode roster decision.
- Fully remappable keybindings. Every action’s key binding is data, not code. KN-86 should ship the same — keybindings live in
nosh-config.toml, picker UI on the SYS tab. This handles edge cases (an operator with reduced motor function rebinding to one-hand operation, a left-handed operator swapping the numpad cluster) without any code changes. - Graceful capability degradation (fallback simulated visualizer). Matches the Batch-1 NetWatch + PulseDeck graceful-degradation doctrine. When audio capture isn’t available, AetherTune still renders a visualizer — just driven by a simulator. KN-86 should do the same for the coprocessor-offline case: if the Pico 2 isn’t responding, the CIPHER-LINE visualizer should run on a synthesized stream rather than going blank.
src/ui/module split as a starting architecture. The Rust source layout is clean, withsrc/ui/carrying the rendering,src/audio/carrying the capture + DSP,src/api/carrying the RadioBrowser client, andsrc/config/carrying the keybinding + theme + favorites + history persistence. KN-86’s runtime architecture should follow a similar split — particularly the isolation of UI rendering from the data sources behind it, which is what makes themability, remappable keybinds, and the fallback visualizer all work without architectural surgery.- Built-in profiler. Per-frame timing breakdown, toggleable in-app. KN-86 already has an F12 debug overlay in the emulator (
kn86-emulator/src/debug.c); a per-frame profiler view there is a strong cart-development affordance.

Source: AetherTune img/showcase.gif. Shows the CRT-themed UI in motion — the visualizer responding to audio, the station browser, the rolling song log, the stream health monitor — all in the CRT default theme.
- The strongest single inspiration in this batch alongside l123.md and 4trk.md. Direct cite candidate as a Batch-3 north star (see index.md synthesis).
- Cross-link pulsedeck.md for the cassette-deck identity branding parallel — both projects commit hard to a retro-software identity through visual cinema (deck metaphor + visualizer in PulseDeck; CRT boot/power animations + visualizer in AetherTune). Both are doing the same thing and KN-86 should learn from both.
- The CAVA reference is worth chasing —
https://github.com/karlstav/cavais the longstanding terminal audio visualizer that AetherTune cites for its gravity-falloff approach. Worth a read when implementing KN-86’s CIPHER-LINE visualizer.