KnobMixer is a Windows per-app volume controller. It redirects keyboard volume keys, Fn volume shortcuts, media buttons, and supported USB volume knobs to one selected application instead of changing the Windows master volume.
Normally, Volume Up, Volume Down, Mute, Fn volume shortcuts, and many physical volume knobs control the global Windows volume. KnobMixer listens for those controls and applies them to the selected audio application, such as Spotify, Discord, a browser, or a game.
Example:
Selected app: Spotify.exe
Volume Up -> increase only Spotify volume
Volume Down -> decrease only Spotify volume
Mute -> toggle only Spotify mute
KnobMixer tries to suppress changes to Windows master volume when possible. This is best-effort behavior because Windows and some HID Consumer Control devices do not always allow full suppression.
- Lists active Windows audio sessions.
- Controls Spotify, Discord, browsers, games, and other processes with active audio sessions.
- Remembers the selected process by name.
- Controls all audio sessions that belong to the selected process.
- Automatically resumes control when the process closes and opens again.
- Supports standard
VK_VOLUME_UP,VK_VOLUME_DOWN, andVK_VOLUME_MUTEkeyboard events. - Supports
Fnvolume shortcuts when the keyboard sends standard Windows volume events. - Supports Raw Input / HID Consumer Control devices for many multimedia keyboards, macro pads, and USB volume knobs.
- Always-on volume intercept: the UI checkbox is locked on intentionally.
- Runs in the Windows system tray.
- Stores settings in a local JSON file.
- Builds into a standalone
.exewith PyInstaller.
KnobMixer works with laptop keyboards and compact keyboards that use shortcuts such as Fn + F1, Fn + F2, Fn + F3, or similar media-key combinations, as long as those shortcuts send standard Windows volume events.
Important: KnobMixer does not intercept the Fn key directly. On most keyboards, Fn is handled by the keyboard firmware before Windows receives anything. KnobMixer reacts to the final volume event that Windows receives, such as:
VK_VOLUME_UP
VK_VOLUME_DOWN
VK_VOLUME_MUTE
If a keyboard handles Fn shortcuts completely in firmware or sends non-standard HID events, behavior may depend on the device. In that case, Raw Input / HID mode may still detect the volume event, but full master-volume suppression is not guaranteed.
KnobMixer is not tied to one specific keyboard or device model. It is designed to work with devices that send standard Windows volume input:
- regular keyboard volume keys;
- laptop
Fnvolume shortcuts; - multimedia keyboards;
- USB volume knobs;
- macro pads;
- HID Consumer Control devices;
- physical volume knobs that send standard volume events.
- Windows 10 or Windows 11
- Python 3.11+ for source mode
- Administrator mode may be required for some devices or elevated target applications
git clone https://github.com/vtaeely/KnobMixer.git
cd KnobMixer
py -3.12 -m venv venv
venv\Scripts\activate
python -m pip install --upgrade pip
pip install -r requirements.txt
python main.pyIf Python 3.12 is not installed, use Python 3.11:
py -3.11 -m venv venvbuild.batThe executable will be created here:
dist\KnobMixer.exe
KnobMixer/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ ├── workflows/
│ │ └── build-windows.yml
│ └── pull_request_template.md
├── app/
│ ├── assets/
│ ├── models/
│ ├── services/
│ └── ui/
├── docs/
├── logs/
├── main.py
├── requirements.txt
├── requirements-dev.txt
├── build.bat
├── run.bat
├── KnobMixer.spec
├── CHANGELOG.md
├── LICENSE
├── README.ru.md
└── README.md
- KnobMixer reads active Windows audio sessions through Windows Audio Session API.
- The user selects an app from the UI or tray menu.
- KnobMixer stores the selected process name.
- Volume events are captured through a low-level keyboard hook and/or Raw Input.
- The selected process volume is changed through
pycaw. - If the process has multiple audio sessions, all matching sessions are controlled.
- If the process is not running, the app shows that the target application was not found.
- When the process appears again with the same name, control resumes automatically.
- PyQt6 for the desktop UI.
- pycaw for Windows audio sessions.
- comtypes for Windows COM interop.
- psutil for process information.
- pywin32 for Raw Input and Windows message handling.
- ctypes for the low-level keyboard hook.
- PyInstaller for one-file Windows builds.
Windows does not always allow an application to fully suppress master volume changes. This is especially common with devices that send volume events as HID Consumer Control input.
Best suppression behavior usually happens with standard keyboard events:
VK_VOLUME_UP
VK_VOLUME_DOWN
VK_VOLUME_MUTE
For USB knobs, multimedia devices, or some Fn shortcuts, Raw Input can receive the event, but the system volume may still change before KnobMixer can react.
KnobMixer uses Windows keyboard hooks and Raw Input to capture volume keys and HID media controls. Some antivirus software may flag PyInstaller-built executables as suspicious because of this behavior.
The source code is available for review, and release builds are produced through GitHub Actions.
GitHub Actions builds KnobMixer.exe on Windows and uploads it as a workflow artifact. Open the latest successful workflow run and download KnobMixer-windows.
Stable release builds are available on the Releases page.
MIT License. See LICENSE.