users and developers / 0.1.1

deejx

Physical slider volume control: current capabilities, setup, and configuration.

deejx

deejx connects physical sliders or knobs to desktop audio controls over USB serial. It is a Rust alternative to the original deej project, with a desktop driver and ESP32 firmware.

Warning

The project is experimental. These pages describe driver version 0.1.1 at source revision 541602f24a71. The checked-in firmware does not currently transmit slider packets, so building and flashing this revision alone does not produce a working mixer.

Current capabilities

Area Current implementation

Linux audio

The driver uses a PulseAudio client to adjust output devices and active application streams. A reachable PulseAudio-compatible server is required.

Windows audio

The repository advertises Windows support, but driver/src/audio/windows.rs is empty at this revision. A working Windows audio backend is not provided here.

Audio targets

Master output by numeric device index, output device by name, and applications matched by name.

MIDI and unmapped controls

Both mapping types deserialize, but moving those sliders only logs that they are unsupported.

Profile reload

The driver watches its YAML profile. Serial port, baud rate, and timeout changes cause the serial connection to reopen.

ESP32 firmware

Targets the original ESP32, configures GPIO34 and GPIO35, and selects UART0 at 115200 baud. The sampling and packet-write loop is commented out.

How the pieces fit together

The board samples slider positions and sends binary packets. The desktop driver reads values in packet order, looks up the mapping at each position, and updates the audio target. The protocol is different from the original deej text stream; use firmware that implements the deejx packet format.

Source reference

Implementation details were checked against the driver, the configuration types, the Linux audio backend, and the firmware. The repository README describes planned features as well as implemented behavior.