1. Problem statement
In work and streaming setups, adjusting the volume of multiple applications quickly is a recurring need.
On Windows, this usually requires opening the mixer, finding the target app, then changing its level.
Repeating this process interrupts workflow and becomes inefficient.
Dedicated commercial controllers exist, but they are relatively recent and often expensive for the feature set offered.
The goal of this project was to build a custom alternative:
a simple physical controller for system and app volume, directly accessible on the desk.
2. Approach and design
The controller is based on an Arduino Leonardo communicating with the PC through USB.
The hardware interface uses several potentiometers for direct volume control and programmable buttons for keyboard shortcuts.
A 16x2 LCD display was integrated to provide instant visual feedback for volume changes and command state.
The objective was an intuitive interface that gives quick access to the most used controls without relying on OS menus.
3. System development
Development started with prototyping to validate each hardware block:
potentiometer sampling, button management and LCD integration.
Once validated, embedded firmware was implemented to read inputs, drive the display and communicate with the PC.
Application-level volume control is handled on the computer side by the open-source software Deej.
After prototype validation, a final assembled version was produced with soldered wiring and a custom 3D-printed enclosure.
4. Result
The final device is a compact controller providing immediate access to essential audio controls.
Potentiometers deliver precise volume adjustments while programmable buttons trigger shortcuts instantly.
The LCD adds clear visual feedback, improving usability and system state readability.
This project delivered a fully custom daily-use solution and demonstrates end-to-end engineering:
need analysis, embedded development, PC integration and final mechanical assembly.
1. System architecture
The solution is split into two clear domains: embedded hardware handling and PC-side audio management.
Arduino Leonardo was selected for native USB HID capabilities.
The microcontroller reads physical inputs, manages the I2C LCD interface and forwards control values.
Actual per-application volume routing is done by Deej on the host machine.
This architecture keeps firmware simple and responsive while leveraging robust open-source software for audio control.
2. Electronic design
The system includes three programmable buttons and four potentiometers.
Buttons are configured in INPUT_PULLUP mode with software debouncing.
Potentiometer allocation:
- one channel for master system volume,
- three channels for selected applications.
Each potentiometer is sampled through the Leonardo 10-bit ADC (0 to 1023), then normalized for Deej.
A change threshold reduces noise and unnecessary updates.
3. Display management
A 16x2 LCD connected through I2C provides local user feedback.
Using I2C reduces required MCU pins and simplifies wiring.
The display shows:
- the currently edited audio channel,
- associated volume percentage,
- simple animations during updates,
- a startup sequence at boot.
During development, replacing the LCD module caused a white-screen issue.
Root cause was an I2C address change combined with incorrect contrast tuning.
4. Embedded software architecture
Firmware was designed for simplicity and low latency.
The main loop continuously performs input sampling, processing and UI updates.
Potentiometer values are sent over USB serial only when variation exceeds threshold.
Buttons are monitored continuously and trigger keyboard shortcuts via Keyboard.h.
The firmware remains non-blocking to preserve responsiveness.
5. Deej integration
Application volume management is handled through Deej.
It receives analog values from the microcontroller over serial and maps them dynamically to configured applications.
In this project, four potentiometers control:
- global system volume,
- selected application channels from the Deej configuration.
This approach delegates complex audio routing to Deej, keeping firmware cleaner and easier to evolve.
6. Mechanical integration
After electronics validation, a dedicated mechanical integration phase turned the prototype into a daily-use device.
A custom 3D enclosure was designed to fit:
- Arduino Leonardo,
- potentiometers,
- buttons,
- LCD module.
Several adjustment iterations were required to account for real dimensions and 3D print tolerances.
Final wiring was soldered and optimized to improve reliability and analog signal quality.
7. System validation
The final build was validated through functional tests confirming:
- stable USB communication,
- accurate volume control,
- low-latency user interaction,
- consistent physical-to-visual behavior.
The controller runs in plug-and-play mode and is immediately usable when connected.
8. Technical conclusion
This project demonstrates full embedded-system design across electronics, firmware, software interaction and mechanical integration.
It highlights the value of hybrid engineering:
custom hardware development combined with reliable open-source software to deliver a practical, high-value tool.