Control your Windows master, app-specific, and foreground process volumes with your own microcontroller and rotary encoders.
- Channel Mixing: Control Master, specific Apps, and the currently focused window.
- Mute Function: Push the encoder to toggle mute for the assigned channel.
- Intelligent Foreground Control: Automatically targets the active window's volume, but stays locked to the last audio-producing app until a new, unmapped sound source is detected.
- Volume Indicator: Shows the current audio level (volume meter) for the assigned channel.
- Auto-Reconnect: Automatically restores connection if the Arduino is unplugged.
⚠️ Important Python Note: If you run the project from source, you must use Python 3.13. Higher versions (like Python 3.14+) are currently not supported.
- Hardware: Connect your rotary encoders to the microcontroller.
Current prototype setup on a breadboard
- Firmware: Upload your version of the
sketch_dec17b.inofrom the/sketch_dec17bfolder to the microcontroller. Ensure the pin assignments match your wiring. - Environment Setup: (If running from Python source) If you are not using the
.exe, set up your virtual environment and install the required dependencies. - Configuration: Before running the
.exeoraudio-control.pymake sure to edit theconfig.json:- Set the
com_port(If left empty, the first device that uses a COM port will be used.). - Configure your channels using these options:
- Set the
| Channel Option | Description |
|---|---|
| master | Adjusts the global Windows system volume. |
| foreground | Adjusts the volume of the application currently in focus. |
| app.exe | Adjusts the volume of a specific app (e.g., spotify.exe). |
- Autostart (Optional): Create a shortcut of the
.exeand place it in the Windows Startup folder (shell:startup) to launch it automatically on boot. - Run: Start
audio-control.exeor runpython audio-control.py.
Visual audio level meters for active channels:


