SoundDesk

Windows tray utility

A different volume for every app,
in one click.

Chrome at 30%, Teams at 70%, Spotify at 20%. Instead of opening the volume mixer every time, one profile puts it all back. Two clicks from the tray menu, or one slider in the panel.

Windows 10 · 11No installer, a single executableOutgoing traffic off by default

The window the tray icon opens. Every value here can also be changed straight from the menu.

What it does

What you used the volume mixer for, in two clicks from the tray.

01

Per-app volume and mute

Groups the sessions making sound right now by application. An app that runs many processes, like Chrome, is still one row.

02

A different output device per app

The game on the speakers, Discord on the headset. The default output can be switched from the menu too, and a profile saves the device along with the volumes.

03

Kept when the app is closed and reopened

Remembers each app's volume and puts it back when that app starts playing again . A device unplugged and plugged back in, or a wake from sleep, applies the profile again too.

04

The microphone in the same hand

The most urgent button in a meeting. CtrlAltK mutes and unmutes the microphone.

05

The panel

Editing profiles, changing shortcuts, writing automation rules - all of it in the window. There is never a reason to hand-edit the settings file.

06

Only what you switch on leaves

Anonymous usage reports, update checks and developer notices are all there is, and all three are off by default. The operator side is 127.0.0.1 only, and it opens only with a token minted fresh on every run.

Profiles

When the situation changes, every app volume should change with it.

Three come built in, and the current state can be saved as a new one at any time. Switching automatically - on an app starting, a device being plugged in, or the time of day - is off by default.

The built-in profiles
ProfilesMasterPer-app settings
Work72%Chrome 30% · Teams 70% · Spotify 20%
Gaming80%Discord 65% · Spotify 15% · browser muted
Meeting60%Teams 80% · Zoom 80% · Chrome 20% · Spotify muted

Shortcuts

When your hands are already on the keyboard.

Every one can be changed, and if another program already holds the combination you are told, instead of it failing quietly.

  • CtrlAlt Master up
  • CtrlAlt Master down
  • CtrlAltM Mute
  • CtrlAltK Mute the microphone
  • CtrlAltS Panel
  • CtrlAlt13 Switch profile

Per-app routing

A path Windows never documented - checked before it is used.

measured

"this app on the headset" has no public API. The internal interface the Windows Settings app uses, Windows.Media.Internal.AudioPolicyConfig has to be called instead, and both its interface id and its vtable layout differ from build to build. SoundDesk does not guess at them.

The dangerous first call is made in a separate process, so the tray survives a crash, and after an application has actually been moved it is read back with Get ; only when the same device comes back is it promoted to "verified". If the read-back disagrees, the feature switches itself off and opens the Windows settings page.

What the verdict means
StateEvidence
verifiedA process was really moved and read back with a matching endpoint id. If nothing is playing, the self-test makes itself a session with a silent stream and checks against itself
probableNothing could be made to read back - only that activating the factory and calling through the vtable did not crash
unsupportedThe self-test failed, or the call succeeded and Windows did not apply it → you are pointed at the settings page

On Windows 10 22H2, build 19045, verified measured The verdict is stored with the build number and re-checked when Windows updates

Security

Safe to run straight out of the downloads folder.

These are the problems a portable executable actually runs into. Not an abstract checklist: each line has code and a test behind it.

ThreatWhat is done about it
DLL hijacking
A forged DLL planted next to the exe
System DLLs are loaded only by System32 absolute path. At startup the exe's own folder and the working directory are taken out of the search path
Mutex squatting
Another session takes the name first and blocks the launch
The single-instance object lives in the Local\ namespace
Injection through the settings file An endpoint id reaches a COM call only after passing a regular-expression check
Log forgery
A newline in a process name inserting a fake log line
App and device names have control characters stripped and a length limit applied
An unquoted auto-start path The Run value is always an absolute path in quotes, and only HKCU is used
Tampering with the panel
Another program on the same PC, or a web page
127.0.0.1 only, plus a fresh 256-bit token per run and a Host and Origin check. The token becomes an HttpOnly cookie on the first load and leaves the address bar

696 tests · 84% coverage Including a live test that plants a forged DLL and checks that it is blocked Signed with Azure Trusted Signing · the certificate is new, so SmartScreen may warn for a while

Privacy

Only what you switch on leaves.

Application names and session information are handled on this PC and nowhere else, and the settings are one JSON file. There are exactly three features that reach the network - anonymous usage reports, update checks and developer notices - and all three are off by default. Until you turn one on in the panel, not a single request goes out.

Settings file%APPDATA%\SoundDesk\config.json
Log%APPDATA%\SoundDesk\sounddesk.log
Anonymous usage reportOff by default — when on, once a day: a random install id, the version, the Windows build, the language, and three counts
Update check · developer noticesOff by default — when on, only the running version and language. The install id is not sent
Never sent, at allApplication names · device names · file paths · the Windows account name
APIs usedIMMDeviceEnumerator · IAudioSessionManager2 · ISimpleAudioVolume · IPolicyConfig · AudioPolicyConfig
Auto-startHKCU\Software\Microsoft\Windows\CurrentVersion\Run (optional)

Self-test

Ask the app itself whether it works on your PC.

Runs each of its own features against the real audio stack, one at a time, and puts back what it touched. Nothing that would make a sound is done at all — the master volume is proved by writing back the value it already has, which exercises the call path and nothing else.

CommandWhat it checks
--selftest-audio Devices · master · microphone · per-app volume, mute and routing · profiles · global shortcuts. If no app is playing, routing is checked against a silent session of its own
--selftest-panel Whether the packaged executable really serves the panel
--report Devices, sessions and profiles as JSON

Result on this PC

OK  Per-app volume (firefox.exe 100% → 42% → restored)
OK  Per-app mute
OK  Per-app output routing (firefox.exe → ASUS VZ279 → restored)
OK  Default device switching · profiles · global shortcuts
—   Microphone (no input device on this PC)

11 passed, 0 failed, 2 skipped — Windows 10 22H2 build 19045

Anywhere

In your language, on your PC.

The same settings at home and at work, read in the language you use, called from a macro when you need it.

01

12 languages

Follows the Windows display language. You can also pick one yourself, and when you do, the panel and the tray menu change on the spot without restarting.

한국어 · English · 日本語 · 简体中文 · 繁體中文 · Español · Português · Français · Deutsch · Русский · Italiano · Tiếng Việt

02

The same settings at home and at work

Export profiles, shortcuts and rules as one file and import it on another PC. Devices are matched by name — the same headset has a different id on each PC, so copying the file alone would make the routing quietly disappear. Any device this PC does not have is named for you.

03

Call it from a macro

Use it straight from a Stream Deck button or a single line of AutoHotkey. It works whether the tray is running or not, and does not raise a second icon. Exit code 0 if something changed, 1 if nothing matched.

SoundDesk.exe --set-app chrome.exe=25
SoundDesk.exe --profile Gaming
SoundDesk.exe --list apps

Install

One file. No installer.

SoundDesk.exe anywhere you like and run it, and an icon appears in the tray. To remove it, delete the file and the settings folder. Python is not needed.

Download SoundDesk.exe

21.9 MB · code signedSHA-256

See it again

Windows 10 1803 or laterA single executableNo administrator rightsSHA-256 included