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 →
Excellent program! Unfortunately sending silense doesn't work with some receivers that treat it as end of stream. Is it possible to send inaudible wave instead like spdifka does?
NK, I plan to add this feature. But it should be optional, so I need to add GUI with possibility to select different modes for different outputs, and it requires some time to create. Currently, I have a lot of work at work, so I can't tell when I'll add this feature to this program.
Right. Thank you for your work and for sharing!
Perfect Programm, looking for something like this since SoundSwitch v2 stoped working for me.
I have a HDMI conection between my HTPC (with Mediaportal) and an AVR. Hope that this Programm fix the silent stream bug.
BUt it only works until the first audio stream like TV starts, after the end of the stream Soundkeeper is still active but doesnt work anymore. Any Idea?
Freak*96, does it stop working after any sound from any program on your PC, or after some specific programs? Do you watch TV streams on your PC, or you just switch between TV and PC display modes of your TV? Can you try “SPDIF Keep Alive” and “SPDIF-KA” to check if they have the same problem? Please check them in different modes (Silence and Inaudible).
Currently, Sound Keeper supports only the first mode (complete silence), but as it turned out some receivers require “inaudible” sound to prevent them from sleeping, so I plan to add this mode in the future (as an option). Maybe it is your case, at least partially.
Hey, thanks for the quick reply.
It seems to stop after playing a Video File, tested it in VLC and MediaPortal.
I watch TV streams on my PC with MediaPortal as a DVB Server.
I also try SPDIF Keep Alive and SPDIF KA, same problem there with all different modes.
I also tested a Browser Video like youtube, this works without a problem.
I think it apperas if the AVR changed the streaming mode.
In the past AVR Audio Guard did the trick for me but since Win 10 this app uses constantly 28% CPU Power.
Also not working for me. SPDIF-KA works OK in both modes.
Just a command line option for the inaudible wave would be enough. I honestly prefer how it is with no GUI. The fact that it doesn't even need a tray icon is awesome!
I can use SPDIF-KA with inaudible sound option on but I need it on multiple outputs since it breaks when I switch my default output device around.
Hi, if you are still developing this, could you maybe also include a dialogue for selecting the audio device? Currently your program chooses the windows default, but I have several audio devices in my PC (internal soundchip, AMD HDMI OUT etc.) and thus have to change the default device first and then run your program, then change it back again etc.
I'm also in favour of adding options for different outputs (silence, inaudible sound).
Thank you for your work.
Sebato, actually, it should detect all digital audio devices on your system and work for all of them.
It's a surprise for me that some audio drivers are not satisfied with pure silence and require some inaudible sound. It's still in plans, and the program is not actively developed at the moment.
Thank you for this excellent program! Solved the annoying problem with ease.
Is it possible to use the tool for normal audio output? I have connected an analog 5.1 system which switches off after a few minutes without sound. With this tool you can currently only keep digital outputs active.
Hi. I have an issue with Soundkeeper not working after running Kodi 17.6 on Windows 10 (v1803) Intel NUC i3. I have to force quit the soundkeeper process and restart it after exiting Kodi. I have Kodi using WASAPI for its audio so passthrough can work if that makes any difference? Let me know if need any more details.
thank you!very good software!
Thanks man, this is really great and perfectly solves the issues I was having with HDMI sound missing for the first couple seconds when playing a video or pausing the video for a bit.
I don't use windows system sounds, so the issue wasn't too bad, but I was having an issue using LAV to decode all the DTS/DD and DD Atmos formats and then sending the LPCM data to AC3Filter. I prefer AC3 filter because it has better Dynamic Range Compression in my opinion. I also like it for a couple other reasons.
Anyway, every now and then if I paused a video in MPC-HC and I started it again after a few minutes I would lose the center channel and all dialog. Then I'd have to switch to another video and back again to restore the center channel. It probably happens 1 out of 5 times when the AVR signal was lost.
I haven't tested extensively yet, but windows system sounds work now (I tested them before install). So I'm pretty sure this is the answer to my problems.
Thanks!
There is a way to fix the problem without requiring the use of the SoundKeeper program. The primary reason to do this is so that you can enable the setting that allows programs to take exclusive control of your HD Audio Device. You can enable the setting with SoundKeeper running, but SoundKeeper may stop working when a program takes exclusive control of the HDA device.
The fix involves changing three registry values to prevent the HDMI source device (your computer's GPU or Soundcard) from going into standby or low power mode.
Once the device sends any type of sound, it will stay in that state until you reboot or shutdown the machine after you apply this fix. I set Windows 10 to have a startup sound so the device is initialized before signing in and continues to output a signal to my AVR indefinitely.
If you use sleep instead of turning your machine off you may need a Windows sound upon wakeup. IF you don't have a startup sound the fix will still work fine, it will just miss (one time) the first 500ms of audio of the first sound sent to the AVR after reboot or sleep etc.
https://forums.geforce.com/default/topic/1056949/geforce-drivers/silent-stream-bug-amp-hdmi-reverting-to-stereo-since-397-93/post/5850660/#5850660
The link above is to a post made by the person whom originally discovered this fix. His link takes you to a MS website with generalized instructions on how to fix the issue. Refer to those instructions if mine are not clear enough. The M$ instructions don't specify how to identify the specific device, thus I wrote instructions below on how to do that and also how to complete the process.
To perform the fix follow the instructions below:
Open Regedit and copy this line into the 'address bar' at the top.
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
Next enter the device manager in Control Panel and open the "Nvidia High Definition Audio" device. If you have ATI or Intel or a soundcard with HDMI you would open their audio device in device manager instead.
After you open the HDA device in device manager, click on the "Details" tab. Go down to the "Class guid" entry. Right click on the "Class guid" entry and copy it. Mine looks like this {4d36e96c-e325-11ce-bfc1-08002be10318} just to give you an idea of what you are looking for.
Return to regedit and Ctrl+F to bring up the search prompt. Paste the "Class guid" entry into that field and search.
This will take you to the appropriate registry entry for your device. At this point export the entire key and save it by clicking "File" in the top left corner, then "Export" and save the file. This is so you can revert any change if you mess up.
Once at the correct key expand it and then expand the 0000 folder. Once the 0000 folder is expanded click on "power settings".
You want to change the following three values in this 'folder' to "00 00 00 00". The values are ConservationIdleTime, IdlePowerState and PerformanceIdleTime. To edit the values right click on the name and select "modify". A window will pop up. You can hit delete once and then hit zero. That will change the first value to 00, which is likely the only one you need to change.
Usually only the first pair of zeroes need to be changed, but you can just hit delete as many times as needed, then hit zero until you see "00 00 00 00" in the saved entry.
Reboot your computer when convenient and the problem will be fixed.
When your computer comes back online the first sound output will initialize your HD Audio Device and it will stay initiated and keep your AVR alive until you reboot or put the PC to sleep. When you turn the PC back on the process repeats where the first sound output will initialize the device and keep it on indefinitely.
This isn't necessarily a better fix than SoundKeeper, it is merely an alternative one. So if you are confused by the instructions above just use SoundKeeper and don't give the issue another thought.
This fix may be particularly helpful for those of you that for whatever reason are having difficulty getting SoundKeeper to fulfill its intended function. I can't state with certainty that this will work on AVR's that don't respond to a silent stream, such as the one SoundKeeper uses. My AVR doesn't have that issue, but this is probably worth a try because the fix can be easily reverted by importing a saved registry entry from before the changes were made.
If anyone uses this fix on an AVR that drops audio with Soundkeeper please leave a comment and let us know whether it worked or failed to work.
Lastly, I believe this issue is known by the developers but can't/won't be fixed because doing so would require the audio device to remain powered at all times which would likely cause it to fail certification for standby power usage limits. At least that is my theory, lol.
To get directly to the registry key you need to change you can paste this entry into your regedit 'address bar'
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\YOUR CLASS GUID VALUE GOES HERE\0000\PowerSettings
so for me it looks like the entry below.
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e96c-e325-11ce-bfc1-08002be10318}\0000\PowerSettings
Greetings from the new year! Soundkeeper does not help me on windows 10 with Xonar DG sound card, optical out to denon AVR. I tried SPDIF Keep Alive and it solves the issue with both inaudible and silence modes. I wonder why soundkeeper doesn't work for me? The lack of gui and system tray icon are certainly more ideal. I appreciate the app regardless. Thanks!
pizzagater, ufortunately, I need access to hardware where the issue is reproducible to figure out what is wrong. If the SPDIF Keep Alive works with the "silence" sound, the Sound Keeper should work also. Probably, there is another issue which has to be debugged.
pizzagater, could you please contact me using email? I'd like to try to debug the issue. Probably, you could help me.
DornoDiosMio - Tried your reg fix, but new Nvidia drivers seemed to have removed the "PowerSettings" from the \0000\ key! There is one lower in the \0008\ and the \0009\ keys, but it doesn't seem to do anything ... any more updates on this?
Is there a chance of you making this very same app just with an "inaudible tone" version from "SPDIF KeepAlive" because I was using that for my external DAC that would constantly cut out the first second of whenever audio starts playing if there was no audio playing for ~5 seconds before that.
Not a big deal when playing music or watching movies/videos, but extremely annoying for when I receive a message, or for any similar short sounds, instead of hearing whatever the sound was, I basically end up just either hearing an unpleasant pop or nothing at all.
Anyway, would greatly appreciate if this would be possible, but it wouldn't be a huge deal if it wasn't. I just really like your completely silent, no GUI approach to this, since you would have the thing running all the time anyway. Thanks for your work, cheers.
Soundkeeper disappears when playing music via WASAPI or Asio4all through Foobar on my Win1064 system.
The Windows mixer doesn't list it anymore after a few minutes, but it's still listed as a process in the task manager.
Unfortunately, it has actually stopped working, because the annoying cut-offs at the start are back when I start playing music via SPDIF digital output to my audio receiver after starting - for example - a youtube audio video via regular cinch out to my desktop speaker system. This doesn't happen when I just use normal windows mixer output, but unfortunately, I get occasional clicks and popups when not using WASAPI or Asio.
I'm using SoundKeeper64.exe, version 1.0.2.
Does anyone have an idea how I could keep Soundkeeper from disappearing in these modes?
Sacred, blam666, could you please contact me using email? I'll send you a debug version for testing purposes. It generates inaudible tone by default, and outputs more information about errors. So, it may help with both your issues.
ive tried using this program twice. deleted it the first time. Both my internet stopped working. is this a virus????
b, no, it's not a virus. This program doesn't have any network-related code, so it can't affect your network connectivity.
well it seems to work i mean do what it supposed to. strange that both times i have tried it my internet disconnects and my pc is unable to find a connection. also gives me a message about my wifi. problem goes away after i kill the soundkeeper process and delete all the files then restart. only way to fix it i have found. hopefully this has been a coincidence. thanks. you are quick to reply.
I tried the method by DornoDiosMio for my Xonar SE sound card, because I would prefer a fix where I do not have to run anything extra. Sadly, it did not work at all for me.
Sound keeper does work very well for me on Windows 10 x64 LTSC 17763.557.
Ondrej Kavka reached out to me with a bug report about incompatibility with exclusive audio output mode. We debugged it a bit, and now a new version (1.0.3) with this issue fixed is released.
I need a tester whose driver requires inaudible tone to keep audio output on. I could add this feature to the program, but I don't want to release it without testing. Please contact me via email if the Sound Keeper does not work for you with current “Silent” mode.
Hi. Program works perfectly to keep my sound bar alive except it prevents my computer from going into standby (Windows 10). I can do it manually but it won't do it automatically. Any ideas? I've done all the basic troubleshooting and narrowed it down to this program or something that this program affects when it's running.
Appreciate your hard work!
I also like pelmeni.
The Sound Keeper does not prevent going to standby intentionally. It just plays silence, and nothing else. It seems that your system is just set up to prevent sleeping when something is playing anything. But you can change this behavior in the Power Options. Open advanced settings of your current power plan, find “When sharing media” setting under “Multimedia settings”, and make sure that it is “Allow the computer to sleep”. If this setting is invisible for you (there are a lot of hidden settings), execute the following command with admin rights (and probably reboot after it) to unhide the “When sharing media” setting:
I really wanted to thank you for making Sound Keeper.
I have spent a whole day trying to find a solution to increase handshake time between my receiver and my sound card (asus xonar u5) since it releases it as soon as pause of music or any type of audio is stopped over s/pdif and it's really annoying for things like, messaging apps, rewinding sounds etc.
This peace of software is just perfect! I will spread the word, donate you some $ and again, Thank You Very Much!
Sorry to report the program does not keep my Philips sound bar awake.
The sound bar is connected via 3.5mm cable to the onboard audio port on an old Dell Optiplex 790 running Windows 10 v1903.
If it is connected through standard 3.5mm analog cable, Sound Keeper won't even try to do anything with it. It ignores any non-digital outputs.
I'm aware that there are some rare analog devices which also go to sleep when there is silence for some time, but I don't have anything like this to play with it and prepare some solution.
You can try to play with Generatosaur to understand what kind of signal keeps your sound system awake. Try to select tones like 1Hz with very low amplitude.
TL:DR : *IMPORTANT* [ REQUEST FOR ALL DEVICES-SOUND KEEPER, Absolutely needed. ]
hello, I recently bought / installed a new sound card called the HT OMEGA ECLARO, I'm attempting to use the Optical Connection / S/PDIF I Got it working, one problem is the delay or sleep of the S/PDIF but with this card it IS complicated, let me try to explain breifly,
In order to get Dolby Digital Live to work properly with a crossover working and all that, We ( Me and the support person ) Figured out I have to disable the Digital output on the windows end/settings in windows 10 sound properties, This I THINK is b/c the Digital output and DD-LIVE runs as a passthrough to the main settings on the Sound Cards( eCLARO ) program.
So.. when I disable the Digital output setting on windows to be able to run 5.1 surround sound via the sound card and DD-LIVE, it disables the ability to use SOUND KEEPER, Sound Keeper disappears. I understand it's meant to auto detect the digital output in the windows settings, but..
Is there any way you can make it for all Audio settings, this way it will work with my ~$200 sound card the eCLARO!!
A SoundKeeper for all sound devices would be great, I would appreciate this very much...
And I know it would work b/c I tested playing audio through a media player and used the windows speaker tester after waiting and the 'CHIME' Sounds work perfect no delay.. where as when not playing any background audio, they barely 'CHIME' Properly or delay badly :( I'm sure this could effect music or at least the first part of songs, and also gaming in parts...
-KGN
Continuation of POST #36 - ' MY UPDATE '
I did more searching around, I Found an older program called " SPDIFKeepAlive " it keeps S/PDIF Active similar to yours, only this one works even if i Don't have a s/pdif device enabled or active. I Tested it out, seems it's working for my specific / particular setup where I'm using S/PDIF but not actual enabling the S/PDIF DEVICE,
I'd recommend making SoundKeeper similar in this way that it can work with any audio device in the sound properties/settings :)
The maker even gives a 'shout out' to you too on their page.
good luck! :)
-KGN
Hello. I have Edifier 1280db connected via hdmi switch with audio extractor. When I start to play a music on PC, there is a single click in passive speaker when connected via opt/cox. This program solved the problem, thank you.
What is the reason that speakers go to sleep mode if there is no sound in spdif mode ? My concern is - will the speakers or opt cable wear out faster if spdif will be permanently on ?
Artur, it is just an attempt to save energy. But yeah, when you don't use your speakers (e.g. while you are sleeping), it is always better to turn them off using power switch.
This is excellent, thank you!
Fixes the popping noises when my S/PDIF wakes up on my workstation, and the drop outs with my HTPC via HDMI. Magic!
The design is perfect for my use cases. It's tiny and invisible and doesn't load a GUI, which is ideal for something being launched at boot.
I would gladly donate if you start taking donations again :)
dzog, thank you for your feedback.
Thanks Brilliant program I was editing the registery
key as each time there is a new nvidia driver it reverts
back to the annoying delay again this has solved the issue for me
I used DornoDiosMio's Fix on my onboard Realtek Audio thats using spdif out
worked a treat
Here's a backup of the exact key
I saved it as a registry file so i can just run it every time i update the drivers
Hello,
it doesn't work for me, spdifkeepalive works but only with inaudible tone (optical out). If you want me to test something I'm up for it. It's the same for the Realtek onboard audio and Soundblaster Z card. The receiver is an old Logitech Z5500 that still works fine after almost 20 years :)
Why cant or will nvidia not fix this in their drivers? Really annoying that i need to revert to correct working Nvidia drivers to 376.43 with audio drivers 1.3.34.17
Or is it Wndows that changed something the past years when it stopped working like before?
I think it was Microsoft that changed how directsound works from Vista or 7, can remember now, XP was still fine. It's the same for all cards, also standalone, not just the onboard stuff.
I've thought I had finally found a solution to this problem I've been dealing with since last summer, but I've tried this with my onboard Realtek (Gigabyte X570 Elite) using Logitech Z-5500 speakers and it did not work. I am on Windows 10 64 bit. :(
The Logitech controller shows "Input : Optical / No Digital Data"
Another nice way to autorun it via registry. I just made reg files to toggle it on/off (change the path to where you store/install it..and 32 or 64 bit exe name):
ON:
OFF:
I was hoping this would help keep my bose from turning off after x amount of time, anyway to have it also send actual audio to keep speakers on. There was a app I used some time ago, but I forgot the app and cant find it. But this id solve my delay issue. now if i can find an app to keep my speakers on
Thanks for Sound Keeper! Solves my issue.