Prevents SPDIF/HDMI/Bluetooth digital audio playback devices from sleeping. Uses WASAPI, requires Windows 7+. It doesn't have GUI and starts to do its job right after the program is started. To make it autorun, copy the soundkeeper.exe into the startup directory that you can access by pressing Win+R and entering shell:startup. To close the program, run the soundkeeper.exe kill command or just kill its process.
Download: soundkeeper.7z (76KB). Source code →
The archive contains a few builds (you can remove unused ones):
- SoundKeeper64.exe is for x86-64 versions of Windows, most people need this version.
- SoundKeeper32.exe is for x86-32 versions of Windows, if you have a very old PC with 32-bit Windows.
- SoundKeeperARM64.exe is a native ARM64 build, if you have a new ARM based PC.
There is also a debug version that outputs all debug logs into a console window. Please provide the logs when you report issues.
Features
- Sound Keeper is fully automatic and doesn't require any user interaction.
- Supports keeping on multiple sound outputs (e.g. an SPDIF and an HDMI).
- Detects new sound outputs on the fly (e.g. when you connected a TV via HDMI).
- Supports various stream types that should help in all possible cases.
Settings
Default behavior can be changed by changing file name of the Sound Keeper executable (just add desired settings to the Sound Keeper file name) or by passing them as command line arguments. All settings are case insensitive.
Primary audio output is used by default. If current primary audio output has changed, the Sound Keeper detects this and switches to the new output automatically. If you want to run Sound Keeper on all enabled audio outputs, just add All to executable file name to enable Sound Keeper on all outputs.
All supported audio output type modes:
- Primary keeps on primary audio output only. It is used by default.
- All keeps on all enabled audio outputs.
- Digital keeps on all enabled SPDIF and HDMI audio outputs (like it was in Sound Keeper v1.0).
- Analog keeps on all enabled audio outputs except SPDIF and HDMI.
Inaudible stream of zeroes with infrequent smallest possible non-zero samples (fluctuations) is used by default. Add Zero to executable file name to use stream of zeroes only.
All supported stream types:
- OpenOnly opens audio output, but doesn't stream anything. Sometimes it helps if it's a driver only issue.
- Zero plays stream of zeroes. It may be not enough for some hardware.
- Fluctuate plays stream of zeroes with the smallest non-zero samples once in a second. Used by default.
- Sine plays 1Hz sine wave at 1% volume. The frequency and amplitude can be changed. Useful for analog outputs.
- White, Brown, or Pink play named noise, with the same parameters as the sine (except frequency).
If the default inaudible stream doesn't help, try the new Sine stream type. It generates a sine wave, and can be customized. There are two parameters: F (frequency) and A (amplitude). The value goes right after the parameter character. For example, add SineF10A5 to executable file name to generate 10Hz sine wave with 5% amplitude. Low frequencies (below 20Hz) and high frequencies (above 20000Hz) with low amplitude (up to 10%) are inaudible.
Stream parameters:
- F is frequency. Default: 1Hz for Sine and 50Hz for Fluctuate. Applicable for: Fluctuate, Sine.
- A is amplitude (i.e. volume). Default: 1%. If you want to use inaudible noise, set it to 0.1%. Applicable for: Sine, Noise.
- L is length of sound (in seconds). Default: infinite.
- W is waiting time between sounds if L is set. Use to enable periodic sound.
- T is transition or fading time. Default: 0.1 second. Applicable for: Sine, Noise.
Examples:
- SoundKeeperAll.exe generates default inaudible stream on all enabled audio outputs.
- SoundKeeperZero.exe generates zero stream on primary audio output.
- SoundKeeperAllZero.exe generates zero amplitude stream on all enabled audio outputs.
- SoundKeeperSineF10A5.exe generates 10Hz sine wave with 5% amplitude on primary audio output. It is inaudible.
- SoundKeeperSineF1000A100.exe generates 1000Hz sine wave with 100% amplitude. It is audible! Use it for testing.
- SoundKeeper.exe sine -f 1000 -a 100 is command line version of the previous example.
- SoundKeeper.exe brown -a 0.1 generates brown noise with 0.1% amplitude.
What's new in v1.3.4
- Tune the Windows 8-10 WASAPI memory leak workaround to make it working for longer time.
- Native ARM64 build (with statically linked runtime hence the bigger binary).
What's new in v1.3.3
- Fixed arguments parsing bug: All or Analog after specifying stream type led to amplitude set to 0.
What's new in v1.3.2
- Fluctuate treats 32-bit PCM output format as 24-bit since WASAPI reports 24-bit as 32-bit for some reason.
- Fluctuate generates 50 fluctuations per second by default. It helps in many more cases.
- Sound Keeper doesn't exit when it is muted.
What's new in v1.3.1
- A potential deadlock when audio devices are being added or removed has been fixed.
- Fluctuate treats non-PCM output formats (like Dolby Atmos) as 24-bit instead of 16-bit.
- Frequency parameter F is limited by half of current sample rate to avoid generation of unexpected noise.
- More detailed logs in debug build. Debug output is flushed immediately, so it can be redirected to a file.
What's new in v1.3.0
- Fluctuate is 1 fluctuation per second by default. Frequency can be changed using the F parameter.
- Periodic playing of a sound (parameters L and W) with optional fading (parameter T).
- New White, Brown, and Pink noise signal types.
- Self kill command is added. Run soundkeeper kill to stop running Sound Keeper instance.
- Analog switch was added. It works as the opposite of Digital.
- Ignores remote desktop audio device (this feature can be disabled using the Remote switch).
- New OpenOnly mode that just opens audio output, but doesn't stream anything.
- New NoSleep switch which disables PC sleep detection (Windows 7-10).
- Work as a dummy when no suitable devices found.
- Sound Keeper shouldn't prevent PC from automatic going into sleep mode on Windows 10.
- The program is not confused anymore when PC auto sleep is disabled on Windows 10.
- The workaround that allowed PC to auto sleep had to be disabled on Windows 11.
Sound Keeper vs. SPDIF Keep Alive vs. SPDIF-KA
Sound Keeper v1.3 | SPDIF Keep Alive v1.2 | SPDIF-KA v1.4 | |
Fully automatic: | Yes | No | No |
Multiple outputs: | Yes | No | No |
Stream types: | 7 | 2 | 2 |
Periodicity: | Yes | No | No |
GUI: | No | Yes | Yes |
Requires .NET: | No | Yes | Yes |
Executable size: | 20KB | 668KB | 163KB |
CPU usage (on Intel Core i5 4460): | 0.004% | 0.06% | 0.06% |
RAM usage (Private Working Set): | 1636KB | 13704KB | 10600KB |
Known issue: streaming audio prevents automatic sleep mode
When a program streams any audio (even silence), the system doesn't go into sleep mode automatically after specified time of inactivity. Sound Keeper uses the NtPowerInformation(SystemPowerInformation, ...) function to retrieve time when system is going to sleep, and disables itself right before this time. On Windows 7, it works perfectly. Windows 10 waits for 2 minutes more after any sound was streamed, so the PC goes into sleep mode after 2 minutes when Sound Keeper disabled itself. For some reason, Windows 11 always reports that the system is going to sleep in 0 seconds. So, the workaround had to be disabled on this OS until a better solution is found. You can try to use the powercfg to workaround this issue at the system level. Details →
Hello. Just wanted to check in and say it's been working pretty well so far after a few days. No issues whatsoever. Resource utilization in the Task Manager is usually below 0.1% which is basically nothing.
I was thinking maybe the unsigned executable was because the install indicated the publisher didn't sign it. Thanks for the clarification.
Thank you for the update!
The publisher is me and I didn't sign it because I don't have a code signing certificate. I consider it too expensive for just a hobby project (more than 100€ per year).
Sound Keeper v1.3.4
I just cant make it work, HDMI to DENON AVR A100, lyps syncro, on/off... ARC... nothing. Maybe INTEL UHD770 is problematic? any ideas? thanks!
What modes of Sound Keeper did you try?
default 64bit, foobar, powerdvd... same thing, there is no silence, but sound starts white 1-2 second less.
Did you actually read this page? It explains how to configure Sound Keeper for your case. For example, try to rename the file to SoundKeeperSineF1A1.exe or SoundKeeperSineF10A5.exe and then run it in this new mode.
Yes, I just already read, changed the name of 64 bit version to 3 different names and no luck.
Maybe because it's a DP to HDMI cable? anyone has tested?
Probably, it's a non-primary audio output device? If you use SineF1000A10, do you hear the 1000Hz sine sound on that device? If not, you might need to add All to the Sound Keeper file name to enable it on all audio outputs (or make it primary).
If anyone else comes across this app that also has the Monster X6 PA speaker system, the best options I can come up with is SoundKeeperSineF1A100L6W870.exe. Bear in mind, you have to have your computer volume up a tad or this won't work. With my setup, I had to have the computer volume at 10%. Tried everything with the computer volume at 6% and it wasn't enough to keep the speaker alive. I definitely recommend playing with length(L) of the sound and your computer's volume level as YMMV.
Thank u so much my bro, this fix my problem after im trying to much and reinstall my windows :')
PLEASE! I need a setting that I can't hear but avoid my Creative T40 speaker go to sleep. Thanks in advance
ABC, I'm quite sure that you can achieve this with existing settings. Just play with values a little bit until you find something suitable.
Thanks "VEG" for your reply, but I have tried many different settings and still my Creative T40 speaker go to sleep the blue light on the speaker shut-off.
Does it stay awake when you use audible SineF1000A10?
Your program works but have slight buzzing sound on idle. Denon AVC A1H 7.1.4.
Probably need to use - "Zero" plays stream of zeroes. It may be not enough for some hardware (to see if this works).
Not sure how implement it, tried making short cut but must have the sting wrong or is this completely wrong what I'm doing?
Do you have an example of the config?
My work around for now is to have small video paused minimized to task bar so as not to revert back Multi channel. If I don't do this, I will have horrendous
static through all speakers because when starting a game or even YouTube Dolby Access does not take affect most of the time.
Ok found out the Zero needs to be before exe not after.
This so far has stopped the slightly buzzing sound on idle.
Yes "VEG", stays awake when I use SineF1000A10, but I can hear the sound.
ABC, it's just for testing, that's the point of the audible sine. If you can hear it, it means that Sound Keeper actually does something; and if it keeps your audio device awake, it means that you can try to find an inaudible signal that will still keep your audio device awake.
Try to find the lowest values that still work, e.g. SineF10A5.