Disk Player

Put a disc in, it plays. Supports DVD, Music CD (with visualizers), and maybe Blu-ray (later). Built in Rust and Bevy.

Supports SteamOS and probably other Linux. LED Board visuals require Steam Machine.

A 3D pipes screensaver rendered on a black background: tan, blue, purple and teal pipes with rounded elbow joints growing through space.
The 3D pipes visualizer, laying pipe in time with the music.

What it looks like

Not that original

A weather board styled like a 1990s cable weather channel: THE LOCAL FORECAST header, NEW YORK NEW YORK, 87 degrees, PARTLY CLOUDY, wind and humidity, and a news crawl along the bottom.
The Local Forecast board — real current conditions, real local headlines, and a news crawl.
A grey spaceship banking through a starfield, with a small green phosphor terminal in the bottom-left corner reading NOW PLAYING, the track name, and an ASCII progress bar.
A take on the Sega Saturn music visualizer. A ship on a fly-by, with the now-playing readout as a ship terminal.
An idle screen of animated TV static with the words Fashion Nugget in large text, and below it a dimmer line reading A PLAY, or insert another disc.
The idle screen. It's animated TV static so you know it hasn't crashed.

Why

VLC doesn’t offer gamepad controls. Kodi has too many options and freezes. It’s surprisingly hard to find a modern audio visualizer that just works in Linux.

Also, I wanted to try building a full application in Rust with ONLY LLMs. No hand coding at all. After getting pretty far, I made it into a real project. It entertains my kids, probably it’s only fans.

Architecture

The LLM only was a challenge, but the design is thought through (I didn’t say good!)

  • Bevy game engine, it’s the only interface. Not just a visualizer engine.
  • libmpv, I tried vlc first but found it hard to work with
  • libpulse - Reads current system audio and exposes data for visualizers to respond to. This turns out very easy to do and pretty in sync with what you hear. I tried analyzing raw audio data directly and found it quite hard to get it to feel live. So if you run another system sound, the visualizer reacts. Bonus feature.
  • rustfft - Turns out what you hear can be reduced to just some math. Math that we can calculate stuff with, oh and fast. Sound moves pretty fast and you want that math to move just as fast before it’s used to transmit light to your eye.

Source

gitlab.com/bufke/disk-player.