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.
What it looks like
Not that original
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.