Skip to content

BetterTrumpet 3.4.0

Latest

Choose a tag to compare

@xammen xammen released this 03 Oct 16:47
· 7 commits to master since this release

BetterTrumpet v3.4.0

Before anything else: BetterTrumpet just passed 15,000 downloads. That's genuinely insane to me. This started as me fixing a few things that bugged me in EarTrumpet, and now there are thousands of you using it, reporting bugs, suggesting features and even sending PRs. Thank you so much, really.

This one is mostly about QuickTrumpet finally doing what people expected it to do, plus a CPU fix I'm honestly a bit embarrassed it took this long to find. A lot of this release comes straight from your issues, so thanks for writing them up.

QuickTrumpet, take two

#65 made a fair point: QuickTrumpet saved a bunch of volumes, but it wasn't clear what a preset actually did, and it couldn't switch devices like SoundSwitch does. So I rebuilt it.

  • Presets can switch your default devices - a preset can now set the default output, the communications output, the microphone and the communications mic. So "speakers + desk mic" vs "headset + headset mic" is one click or one shortcut. Device switching happens first, then the volumes land on the new setup.
  • You pick what goes in - when saving, you choose between default devices, device volumes and app volumes, in any mix. Device volumes come with a checklist instead of the old "all devices or just the default" switch, so no more presets with 8 devices you never asked for.
  • Presets are editable - expand one and you see exactly what's inside: default devices, devices and apps, each with its saved volume and mute. Tweak a slider, remove an entry, add a device, or hit Update with current mix to overwrite it with what you have right now.
  • One shortcut to cycle - new "Next preset" / "Previous preset" shortcuts walk through your presets in order and loop around. No need for one hotkey per preset anymore (you still can if you want).
  • Better confirmation - the toast now tells you what actually changed (Output → Speakers · Mic → Desk mic · 3 apps), lists devices that weren't connected, and you can set how long it stays on screen (1 to 10 s).
  • Old presets still work - existing presets apply exactly like before, no conversion needed. The CLI got bt preset next / bt preset prev and bt save --defaults.

CPU usage

#74 pointed out that BetterTrumpet was sitting at a few percent CPU doing nothing, while EarTrumpet sat at 0. They were right. The main culprit: after you closed the flyout, each volume slider kept a 60 fps render loop running forever, because the flyout is hidden, not destroyed. On top of that, the focus-lost feature was polling the registry 4 times a second even when it was turned off.

Measured on the same machine, 3.3.1 vs 3.4.0 (CPU time used per second, median of 3 runs of 60 s each):

Scenario 3.3.1 3.4.0 Gain
Idle (flyout closed, nothing playing) 10.2 ms 1.6 ms ~6x less
Music playing 13.3 ms 4.2 ms ~3x less
After opening and closing the flyout 19.3 ms 4.4 ms ~4.4x less
Flyout open 47.4 ms 14.3 ms ~3x less
CPU wake-ups per second at idle ~388 ~10 -97%

The wake-ups line is the one I care about most: a CPU that isn't constantly poked can actually go back to sleep, so if you're on a laptop, this one should be noticeable on battery.

Settings polish

I went through the new settings window page by page and fixed everything that felt off.

  • Adding an app rule muted the app - yeah. Adding a rule from the new settings turned on "keep muted" by default, so the app went silent until you noticed. It now creates an empty rule like the classic window does. Sorry if that got you.
  • "Clear all rules" did nothing from the new settings window. It works now.
  • No more gray Windows popups - deleting, clearing or applying from the new settings now asks inline (click once, then confirm) instead of throwing old-school dialog boxes at you.
  • Everything fits - all pages now fit in the sidebar at the default window size, headers are tighter, empty states don't hug the borders, and the French translation is complete (a few English strings were still hiding in there).
  • Smoother - accordions, lists and page changes animate properly, the active page indicator slides, and buttons confirm when something was saved or applied.
  • Appearance - there's a live preview of the flyout, hex codes are editable, and a "Custom" chip shows up when your colors don't match a preset.
  • Clearer controls - settings that depend on another one are greyed out with the reason, and slider values use your locale (1,5 s in French).

Flyout and tray fixes

  • Tray tooltip shows the right volume - quickly reversing the scroll wheel over the tray icon could show the old value. (#68)
  • Collapsed flyout follows the default device - it could get stuck on another device, like a headset that wasn't even on. (#72)
  • No "Set as default" on the device that already is (#73)
  • That mysterious line in the tray menu was supposed to mark the default device. It's now an actual check mark. (#71)
  • Scrollbar gets out of the way - it hides much faster, and the collapse/pin buttons move away from it so you can reach them without the scrollbar popping up. (#70)
  • Default device switches stick - with some virtual or RDP devices, Windows never confirmed the switch and BetterTrumpet could snap back. It now commits the change right away.

Community fixes

Big thanks to @hiyochi for a really solid batch of PRs.

  • Memory leak in themes - every right-click on the tray icon was leaving its menu stuck in memory because theme bindings kept themselves alive forever. They clean up after themselves now. (#61, #66)
  • High contrast works with custom colors - custom colors used to override Windows high contrast mode. High contrast wins now, like it should. (#67)
  • Cleaner tray menu - no more white border or acrylic bleeding past the rounded corners, and the submenu fade is back. (#60)
  • Portable updates stay portable - updating the portable version used to run the full installer and install BetterTrumpet system-wide. It now downloads the portable zip and updates in place, keeping your config folder. (#62)

Installer

  • "Add to PATH" explains itself - the option now says what the bt command is for, and it's greyed out when BetterTrumpet is already in your PATH, so you don't have to guess every update. (#63)