♬⋆.˚ ✩°。⋆⸜ 🎺 ⸝⋆。°✩ ˚.⋆♬
BetterTrumpet
Per-app volume control for Windows that actually feels good to use.
A polished fork of EarTrumpet, with app rules, presets, a media popup, themes and a CLI.
Install ·
Features ·
CLI ·
Privacy ·
Build ·
Community
Why BetterTrumpet
The Windows volume mixer is two clicks too deep and forgets everything. BetterTrumpet lives in the tray and keeps it simple:
- Every app, one click away. Click the tray icon, drag a slider, done.
- It remembers. Start Discord at 50%, keep that one game muted, lock an app's volume so it stops creeping up.
- One click setups. Save "work", "gaming" or "night" as presets: output device, mic, device and app volumes, all at once.
- Your media, on hover. Hover the tray icon to control what's playing.
- Looks the part. Fits Windows 10 and 11, with themes if you want something else.
It started as a fork of EarTrumpet and keeps what made it great.
Install
| Method | Command / link |
|---|
| Installer or portable zip | GitHub Releases |
| Winget | winget install --id xmn.BetterTrumpet |
| Chocolatey | choco install bettertrumpet |
Requires Windows 10 (1809 or later) or Windows 11. The settings window uses the Microsoft Edge WebView2 runtime, which ships with Windows 11 and up-to-date Windows 10.
> Windows Defender or SmartScreen complaining? The builds aren't code-signed yet, so new releases sometimes trip a machine-learning heuristic (a false positive). Each release ships a release-checksums-X.Y.Z.txt so you can check the SHA-256 of what you downloaded. Signing is on the roadmap.
Features
Per-app volume, done right
- Every playing app gets its own slider, grouped by output device.
- Send an app to a specific output (game on the headset, music on the speakers).
- Hide the apps and devices you never touch.
Ctrl+click an app to solo it, Ctrl+Z / Ctrl+Y to undo and redo volume changes, Ctrl+P to pin the flyout open.
- Global shortcuts for the flyout, the mixer, volume up/down and switching devices, plus one shortcut per device.
App rules
Rules follow an app across restarts and reboots:
- Set at launch: the app always starts at the volume you chose.
- Lock: the volume stays put, whatever the app tries.
- Keep muted: muted every time it makes a sound.
- Folder defaults: a starting volume for everything installed in a folder (handy for game libraries).
- Focus-lost: quietly lower apps when you switch away from them, with a fade.
QuickTrumpet presets
Save the current setup and bring it back in one click, from a hotkey or from the CLI. A preset can switch your default output and microphone, set device volumes and set app volumes, in any combination. Cycle through your presets with the next/previous shortcuts.
Hover the tray icon to see what's playing: play/pause, skip, seek, shuffle, repeat and the app's own volume. Expand it to show the cover art.
Make it yours
<img src="assets/Windows.png" alt="Windows theme" width="240" />
Default: follows your Windows accent
<img src="assets/Spotify.png" alt="Spotify theme" width="240" />
Spotify
<img src="assets/readme/theme-custom.png" alt="Custom colors" width="180" />
Your own colors
- 12 built-in themes (Discord, Nord, Dracula, Catppuccin, high contrast and more), or pick your own seven colors.
- Window opacity, peak meter styles, and an album-art mode that tints the sliders with the cover of what's playing.
- An eco mode that lowers refresh rates, always or only on battery.
A tray icon that tells you where the sound goes
Optional: the tray icon can show the kind of output you're on (speakers, headphones or a monitor) and animates while something plays. Coming in the next release.
Settings
A modern settings window with search: type "mute" or "startup" and jump straight to the right option. The classic window is still there if you prefer it.
CLI
BetterTrumpet comes with a bt command (the installer can add it to your PATH). It talks to the running app and answers in JSON, so it's easy to script.
bt help # everything it can do
bt volume discord 40 # set an app's volume
bt toggle-mute spotify
bt set-default "Headphones" # switch the default output
bt save gaming # save the current setup as a preset
bt gaming # ...and apply it later
bt preset next # cycle through presets
bt doctor # quick health check
The full reference lives in docs/CLI.md.
Privacy
- Diagnostic data (one switch, off by default in the EU, on elsewhere): an anonymous ping at startup and crash reports through Sentry. No personal data is attached and nothing is sold. Change it anytime in Settings → Privacy.
- Update checks ask the GitHub API for the latest release. They're a separate switch.
- The "What's new" feed (news and polls) can be turned off in Settings → Privacy. Votes are anonymous.
- Diagnostic exports are zip files you create yourself and review before sharing. Nothing is uploaded automatically.
Details in PRIVACY.md.
Build from source
You need the .NET 8 SDK and Node.js (npm builds the settings UI during the build). The app is x86.
git clone https://github.com/xammen/BetterTrumpet
cd BetterTrumpet
dotnet build EarTrumpet\EarTrumpet.csproj -c Release -r win-x86 --self-contained -p:Platform=x86 -p:OutputPath="..\Build\Release"
The app lands in Build\Release\BetterTrumpet.exe. build-portable.ps1 makes the portable zip, and installer.iss builds the installer with Inno Setup 6.
| Area | Stack |
|---|
| App | C# / WPF on .NET 8 |
| Audio | Windows Core Audio, Windows media sessions |
| Settings | React + Fluent UI in WebView2 |
| CLI | Named pipe to the running app |
| Packaging | GitVersion, Inno Setup, portable zip, Winget, Chocolatey |
Credits
Built on EarTrumpet by David Golden, Rafael Rivera and Dave Amenta.
License
MIT
♬⋆.˚ ✩°。⋆⸜ 🎺 ⸝⋆。°✩ ˚.⋆♬
made with volume ˚ʚ♡ɞ˚