Skip to content

Releases

StableSound 1.0.0

Choose a tag to compare

@ldefontenay ldefontenay released this 12 Sep 01:12

Keeps Bluetooth headphones awake so screen reader speech is not cut off at the start, and lets go of them again so your phone can take over.

Download

Two files, the same program in both. Take the zip if you use Microsoft Edge, and the exe otherwise.

stablesound.zip — 169 KB. Holds stablesound.exe and nothing else.

stablesound.exe — 316 KB, the program on its own.

Put it anywhere you keep small programs and run it. There is no installer and nothing to uninstall. Windows 10 or 11, 64-bit, no administrator rights needed.

The zip is here because Edge will not keep a downloaded unsigned program without a two-step Keep buried in its downloads flyout — tested with JAWS, and significant friction for a new screen reader user. Edge takes the zip with no objection at all. Other browsers are less awkward about the exe.

The file is not code-signed, so the first time you run it Windows SmartScreen may say Windows protected your PC. Choose More info, then Run anyway — once per machine, whichever file you took. The README explains why, and what to do if an antivirus objects.

Defender may then run a cloud scan of about ten seconds and finish it without any sound, so with a screen reader there is no way to tell a program that is starting from one that was blocked. Don't wait for a sound that isn't coming: press Ctrl+Win+F12. A rising tone means it is running and keep-alive just came on — press again for the falling tone to put it back. Either tone is proof.

What it does

Bluetooth headphones switch their receiver off after a few seconds of silence to save battery, so the first fraction of a second of the next announcement is lost while the headset wakes up. On a short announcement that can be the whole word.

The usual fix is to stream something inaudible forever, which stops your phone ever getting the headset. StableSound streams digital silence while you are using the machine and releases the device after a set quiet period, so the headset comes back to your phone within about three seconds.

  • Ctrl+Win+F12 switches keep-alive on and off.
  • Ctrl+Win+F11 opens the settings.
  • Windows+B then the arrow keys reaches the tray icon.

Both combinations can be changed. It starts the way you left it, and it can start itself when you sign in.

Accessibility

This is the point of the project rather than a feature of it. It was built with and for a JAWS user, and every release was tested by one.

The settings are a real Win32 dialog built from a resource template, so a screen reader reads genuine controls rather than a reconstructed accessibility tree. Nothing is reachable only through the tray menu. State changes you make are audible; automatic ones are silent.

"Start when I sign in" asks Windows for a task that runs at the sign-in itself rather than an entry in the startup list, because the startup list is not reached until the desktop has settled. On the machine this was measured on, that was the difference between a clipped first word and speech that comes through whole.

What has actually been tested

Anker Soundcore AeroClip, multipoint-paired to a laptop and an iPhone, with JAWS on Windows 11.

Not tested: other headsets, other screen readers, Windows 10, sleep and resume, and behaviour on battery. If it does not work on your headset, the settings offer two stronger keep-alive signals before you give up on it.

Tested since release: both download paths, in Edge with JAWS. The zip arrives with no objection; the exe is stopped with "not commonly downloaded" and has to be kept by hand; SmartScreen still appears on the extracted exe, followed by the silent cloud scan described above.

SHA-256 of stablesound.exe, whether downloaded directly or extracted from the zip:

dd0457b60f97501941fd4c95933b07aa55f7078b39975f925cbc57c6b108d5b5

SHA-256 of stablesound.zip:

5455a9dae181dc6f25e860901d733d491b33140b94aa63fd1611853eadf25559