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 (90KB). 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).
- [2024/11/12] Added digital signature.
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 →
@VEG
I fixed it by changing sampling rate from 48kHz to 96kHz
Any Regedit hack to equal this? Thanks
There is no built-in functionality like Sound Keeper to activate it from registry. Your audio card driver may have a (hidden) setting to disable this power saving anti-feature which Sound Keeper tries to overcome though.
Sound Keeper v1.1.0
I use an asus xonar hdav sound card for an hdmi connection, installed soundkeeper_v1.1.0. this helped the external receiver to work in PCM 5.1 mode as needed, but then I turned off the receiver and turned it on, and it fell asleep as it was before using soundkeeper_v1.1.0. I did repeated reinstalling the driver and restarting soundkeeper_v1.1.0 ,and it didn't work, everything works like I didn't run it at all. That is, but completely stopped working and the sound began to fall asleep as before.
I cannot thank you enough. This program has stopped my AVR from cutting every 3-4 minutes to every 20 minutes (a lot less annoying). Do you think there'll be a way to prevent this altogether?
You can try this version with new "sine" mode. Maybe it will help you better. This new mode will be available in the next version.
Still works beautifully in Windows 11. Thank you!
Is there a similar app for Google TV (Android)? I'm encountering this issue while running Kodi on Google TV
I'm not aware of such program for Andorid. You can report the issue to the Kodi developers, they could try to resolve it by streaming zeroes when nothing is actually playing.
Sound Keeper v1.2.0
If there are users of the Windows on ARM who wants to use the Sound Keeper, I could make a native ARM64 binary of the program. But I need to test it before releasing, so you could help me with it. Contact me if you are interested.
Sound Keeper v1.2.1
When any program streams any audio (even silence), the system don't go into sleep mode automatically. Sound Keeper tries to use the NtPowerInformation(SystemPowerInformation, ...) function to retrieve time when system is going to sleep to let the OS do it. For some reason, Windows 11 always reports that the system is going to sleep in 0 seconds. Seems like a new bug in the OS. As the result, Sound Keeper thought that the system is going to sleep right now, and disabled itself to let the system sleep. This behavior had to be disabled on Windows 11 until a better solution is found.
Thank you for this program. My new computer a Lenovo P620 is a good machine and uses the Realtek ALC4050H Codec. Unfortunately, the Realtek driver likes to power down (D2) after 10 seconds and it's taking around 1 sec to power back up to D0. It causes a popping noise in the speakers when it powers down and cuts the audio when it powers up. I made it an auto start program slightly differently than you suggest, I placed the program in System32 folder and created a task scheduler for it to start up when the computer does. The program itself is very small, 20kb is tiny but it does use more system memory than I'd expect... 2.9 MB and it varies in size. Is this a normal range for your program?
Seems OK. It depends on your system. Sound Keeper has to load mandatory system libraries related to audio output, and they also take some memory. Any other program that outputs audio would take more memory than Sound Keeper anyway.
I've been complaining to Lenovo support about this Realtek driver issue and nothing has been done about it so far. The generic Windows USB 2.0 Audio driver performed perfectly, but the Realtek software no longer recognized the rear audio port so if you plugged in headphones in the front jack, the rear speakers continued to play instead of switching off. These AMD motherboards don't have native audio support inside the chipset, most if not all are using USB Audio devices. Normally it's the ALC4050H along with a ALC1220. I been trying to figure a way to modify the Realtek driver and get rid of this D2 power down mode, registry tricks don't work, the driver changes them back immediately. I found a Ubuntu Linux thread describing this exact audio problem for the P620 and the solution was creating a helper to "prevent the device to go in to sleep mode". Seems like Sound Keeper is that helper.
Is it possible to get the Sound Keeper v1.2.0 version? I want to test it on Windows 11 since there's been quite a few updates lately.
You can download it here: soundkeeper_v1.2.0.7z.
Does build v1.2.0 work correctly with Windows 10? It definitely doesn’t work with Windows 11.
Yeah, it should work on Windows 10.
Whats new with 1.2.1 version?
Anton, one of the new features of v1.2.0 was not compatible with Windows 11, so it was disabled on the affected OS in v1.2.1. Changelog is in the readme file, also it is described in detail in the comment #162.
Hola !
It seems like the app is not working anymore on my Win11 machine since I reinstalled Windows. I tried naming it SoundKeeperDigital.exe as before for my Z5500 but I don't see it running on my speakers (still shows No Digital Data on my control pod). I can see the proess running in task manager though. Any special trick needed? Thanks !
Did you try the latest version 1.2.1? Try different modes, some of them should help.
Ah nevermind, I've changed it to SoundKeeperSineF10A5 and now it stays on. Thanks !
viz, try to find lowest numbers when it still works for you (e.g. F1A1), and post the results here. It may help somebody else.
@VEG: v1.2.1 with F1A1 works on my system (SoundKeeperSineF1A1.exe). Specs are Win11 64bit, X570 Elite with Realtek ALC1200, Logitech Z-5500
FWIW, the default "inaudible" type causes an annoying high-pitched whine when the Loudness Equalization audio enhancement is enabled if no other sound is playing (I guess it gets scaled all the way up), at least for my Bluetooth devices. Using Sine made the whine go away.
Ver Greeneyes, the default inaudible mode uses the smallest possible amplitude 0.00003 for 16-bit output. Does that audio enhancement increase this amplitude that much, that it becomes noticeable? Interesting. Now it flips the lowest bit every sample. Probably, Sound Keeper should make it with much lower frequency, like 1Hz by default. Thanks for the report.
BTW, did you try Zero mode? Probably, it would work for you.
I don't know if Zero mode would work for all my devices - I think some of them detect complete silence and turn off. I also noticed some weird popping noises with the default Sine (F1A1) - so far F5A1 seems to work better. I think the combination of Loudness Equalization and the lossy Bluetooth codec is what makes this particularly audible.
I suddenly got some pretty bad stuttering with F5A1 as well. Now trying F2A5 to see if a bit more amplitude helps prevent this behavior (I might just have to turn off loudness equalization, but it can be very helpful).
Thank you very much!
It saves me from ALC4082 annoying popping noises by using default Sin stream type at WIN11.
Thank you!
I use a Teufel Concept C (USB connected) for superior stereo but it shuts off after 10 min of no sound, which is way to short.
F1A1 did not keep it alive but F10A5 works perfect
Would this work at all for my 3.5 mm audio connected creative speakers that have a 'power saving mode' that kicks in after 20 mins of no sound.
It should work if you use Sine mode, you just need to find minimal frequency and amplitude that work for you.
Hisense HS312 Soundbar HDMI - Default settings did not work, tried F10A5 - did not work, trying SoundKeeperA11SineF20A10, this so far is keeping the soundbar from going into standby mode. Holding thumbs.
Shane, I would recommend you to try lower frequencies, e.g. 15Hz.
Nope, how high can I go? The soundbar still goes into standby. I'm figuring out it takes like a second for the soundbar to react to any audio input before sound comes out, I'm not sure the duration SoundKeeper gives audio or is it continuous. If I play music at 2% output, the soundbar stays on, but that is too loud if I want to watch a movie at 100% output. I wish there was a way to disable auto off.
I have tried various settings, if I can't hear the audio, the soundbar goes into standby mode, if I can hear the audio, the soundbar remains on.
Does F10A10 help?
Thank you so so much! My Marantz NR1510 AV-Receiver paired with my Lenovo Legion 5 with the Nvidia 3070 seems to have problems with the HDMI Connection. The connection gets killed and switches from PCM / Dig to ANA after a few seconds which results in an audible soft cracking noise (Speaker powered on / off?) as well as a startup time whenever a sound is played. With discord and other chat apps this lead to plopping noises as well as cut off notification sounds every 20 seconds or so. Now I feel at peace again lol
Thank you so much for this software! It's just great.
I have a set of headphones connected to my computer thru wireless (USB) and a soundbar (JBL Studio Bar) thru the HDMI monitor AUX out. Sound Keeper keeps the soundbar awake (and only "plays" the noise there) even headphones are the default output. It also does not get in the way of monitor timeout and automatic sleep.
I am using it with SoundKeeperDigitalAllSineF10A5.exe - come to think of it, I don't know why I put "All" in there. Must be redudant, but hey it works exactly like I want it so I'll just leave it :p
Many thanks. I had tried this a couple of years ago, just found that the new Sine works to keep my soundbar on.
Can I make a feature suggestion - would be useful to specify a time range for it to disable itself during that time (e.g. to let the soundbar sleep overnight if leaving the computer on).
you are a absolute legend for this program.
I was going mad at my new soundbar having a delay when starting from silence and this fixed it perfectly.
just using the default settings seems to work at least for short break haven't tried how long it keeps it alive.
so this program is great, fixed the silent stream bug on nvidia using Atmos for Home Theater... but it does prevent my computer from sleeping.. which wasn't a problem all winter, but it's starting to warm up and it would be nice if the PC would sleep.. i'm just running soundkeeper.exe with no parameters, works beautifully other than not sleeping.. if i check power requests I get the following
sneakytiki, what OS do you use? Did you try the latest Sound Keeper version?
Playing any audio (even silence) prevents Windows from sleeping. Windows 7-10 has a function that tells how much time is left to sleeping, so Sound Keeper stops itself when the timer reaches 0. Unfortunately, this function always returns 0 on Windows 11, so the workaround had to be disabled on Windows 11. But on Windows 7-10 it should work.
Try to run this debug build of the Sound Keeper for some time. It shows console window with logs that could reveal some details about what is happening.
Also you can use this bat script to monitor what prevents your system from going to sleep (run it with administrator rights):
I'm using windows 10 with soundkeeper 1.2.1, so i will follow your suggested diagnostics and report back.. thanks!
set my sleep timer to 1 minute and let it run out, screen went to sleep but computer did not.. here are the results
Try updated debug or beta version. The debug version outputs more debug output now. Also, an improved workaround for the issue is included. It works perfectly on Windows 7, and should work on Windows 10, but with a small issue: it actually goes into sleep mode in 2 minutes after it had to. So, please wait for another 2 minutes after the moment it had to go into sleep mode. I added more details about this known issue into the ReadMe.txt. There is also information how to allow the OS to go into sleep mode even with active audio streams that also can be used as a workaround for the issue.
Sound Keeper v1.2.2
my man! it worked perfectly! I set monitors and computer to sleep after 1 minute.. sure enough, monitors turn off, then 2 minutes later the computer went to sleep.. very awesome, thank you for the quick fix on that one, this is now a perfect and essential program