Dual LED Matrix Realtime Audio Visualizer
Dual LED Matrix Realtime Audio Visualizer is a script that captures system audio and displays stereo frequency bars simultaneously on both the left and right Framework 16 LED Matrix Input Modules. Developed by community member Seren (GitHub: 0xSeren), it was released on March 22, 2026 — a feature the author says they had wanted "since the framework 16 modules were first originally showcased"12.
To achieve high frame rates, the project relies on a modified fork of Framework's inputmodule-rs firmware that adds command batching, without which the per-frame serial round-trips limit the achievable FPS23.
How It Works
The tool captures the system audio stream, computes a frequency spectrum, and renders bars across the two 9×34 LED matrix modules — each module showing its own audio channel's spectrum for true left/right stereo separation1. Both modules are driven over USB serial using Framework's standard LED Matrix serial protocol4.
Modified Firmware
The stock Framework firmware sends each draw command as an individual USB serial transaction, which caps the update rate. Seren's fork of inputmodule-rs adds batching so multiple column updates can be sent together, raising the achievable frame rate for real-time visualization23.
Features
| Feature | Details |
|---|---|
| Language | Nix, Python1 |
| Audio capture | System audio |
| Display | Stereo frequency bars on both left and right matrix modules |
| Stereo mode | Each panel shows its own audio channel's spectrum |
| Brightness | --brightness N (0–255, default 100) |
| Smoothing | --smoothing N (0.0 = reactive, 0.9 = smooth) |
| Mirror | --mirror — low frequencies in the middle, highs at top/bottom |
| Mono | --mono — use mono audio instead of stereo |
| Run command | nix run . |
| Stars | 11 |
| Created | March 22, 20261 |
Installation
Prerequisites
- A Framework Laptop 16 with both LED Matrix input modules installed
- The modified firmware from 0xSeren/inputmodule-rs flashed to both modules (required for batching/high FPS)23
Running
The project is built with Nix flakes. Run directly with1:
nix run .
Then play any audio on the system — the visualizer reacts to the live output.
Options
| Flag | Description | Default |
|---|---|---|
--brightness N | LED brightness (0–255) | 100 |
--smoothing N | Bar smoothing (0.0 = reactive, 0.9 = smooth) | — |
--mirror | Low frequencies in the middle, highs at top/bottom | off |
--mono | Use mono audio instead of stereo | off |
Technical Details
| Detail | Value |
|---|---|
| Language | Nix, Python1 |
| License | Not specified in repository1 |
| Firmware dependency | Modified inputmodule-rs fork (batching) |
| Display | Two 9×34 LED Matrix modules (RP2040 + IS31FL3741A) |
| Serial protocol | Framework magic bytes 0x32 0xAC + command byte + payload4 |
| Package manager | Nix flakes |
| Stars | 11 |
| Created | March 22, 20261 |
Related Projects
| Project | Description |
|---|---|
| fw16-ledvu | PipeWire/CAVA audio visualizer for the LED matrix (Linux) |
| FW16 LED Matrix Visualizer | Windows audio visualizer + Pixel Hero animation player |
| dark-matrix | Full daemon + web UI with an audio-reactive mode |
| fw16-led-matrixd | Cross-platform Rust daemon with pair mode |
| led-matrix-manager | Qt GUI for LED matrix management |