#dmx #visualizer #music #led-strip #frame-rate #openrgb

app dmxvis

High Framerate LSD Audio Visualizer [DMX, WS281x, OpenRGB]

1 unstable release

0.1.0 Nov 1, 2023

#312 in Audio

22 downloads per month

MIT and GPL-2.0 licenses

545KB
1K SLoC

DMX & WS281X Strip - Audio Visualizer - now with OpenRGB support!

Simple Visualizer for audio. Colors can be sent to WS2812 LED strips and DMX light fixtures.

Available for Windows and Linux, MacOS is untested.

⚠️ VISUAL EPILEPSY WARNING ⚠️

How does it work?

  • The app captures audio from your default playback device
  • converts stereo to mono and applies gain
  • produces a fft
  • generates color from fft bands
  • applies various filters to the color bands
  • color can be sent:
    • to the serial port: An Arduino converts received color to DMX and/or WS2812 strip
    • over the network: A Raspberry Pi can receive color packets and render them on a WS2812 strip

What Music works well?

TODO

Project Structure

  • arduino/ kicad/
    • firmware, circuit and pcb files
    • USB to DMX & WS2812 conversion board
  • assets/
    • icons, gifs and images of app and pcb
    • windows manifest and icon
  • docs/
    • additional documentation
  • rpi/
    • python scripts for the raspberry pi
    • receives udp from desktop app, can send color to WS2812 strips, DMX currently not supported
  • src/ Cargo.toml Cargo.lock build.rs
    • the desktop app rust project

Installation

The program is compiled to a standalone executable. Find them under Releases.

Prerequisites

Before attempting to build dmxvis, get the the following packages/software for linking:

OpenSUSE

zypper in alsa-devel systemd-devel

Windows

Make sure you installed the Windows SDK found in the Visual Studio Installer options.

Compiling from source

To compile from source, update rust and run:

rustup update
cargo b -r

The binary will be located at: target/release/dmxvis(.exe)

Configuration

Linux

Pulseaudio Volume Control can be used to set the input (Microphone, playback device etc) for dmxvis.

Serial

To use the Serialport (for the DMX & WS2812 LED board), your linux user account needs permissions.

First, check which group the serial port belongs to (most instances: dialout or uucp):

ls -l /dev/ttyUSB0
ls -l /dev/ttyACM0
# output
crw-rw---- 1 root uucp 166, 0 20. Apr 04:20 /dev/ttyACM0

Normally, your user is not in this group, so add USERNAME to the dialout or uucp group:

sudo usermod -aG GROUP USERNAME

For changes to take effect, logout and re-login the user or reboot the machine.

Windows

Connect an Arduino and find out which COM it is represented by, and set the app to that COM port.

Windows will prompt the user to allow the application to use the network.

Common Configuration

dmxvis uses confy to save configuration files, which in turn uses the directories crate.

It uses these paths for configs:

// Lin: /home/[User]/.config/dmxvis
// Win: C:\Users\[User]\AppData\Roaming\dmxvis\config
// Mac: /Users/[User]/Library/Application Support/rs.?.dmxvis

NOTE: updating to a new version may overwrite existing configuration files with defaults.

Dependencies

~27–65MB
~1M SLoC