Prevents SPDIF/HDMI digital audio playback devices from sleeping. Uses WASAPI, requires Windows 7+.
To enable autorun, copy soundkeeper.exe into the startup directory (to open it, press Win+R, enter shell:startup, press Enter). To close the program, just mute the Sound Keeper in the Volume Mixer or kill the soundkeeper.exe process.
Download: soundkeeper.7z (23KB). Source code →
- Sound Keeper is fully automatic and doesn't require any user interaction.
- Sound Keeper can keep sound on many sound outputs simultaneously (e.g. SPDIF and HDMI).
- Sound Keeper detects new sound outputs on the fly (e.g. when you connected a TV via HDMI).
- Default behavior can be changed by changing file name of the Sound Keeper executable.
- Primary audio output is used by default. Add All to executable file name to enable Sound Keeper on all outputs.
- Inaudible stream is used by default. Add Zero to executable file name to use stream of digital zeroes (like it was in v1.0.0).
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.
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.0||SPDIF Keep Alive v1.2||SPDIF-KA v1.4|
|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 don't go into sleep mode automatically. 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 →
Thank you so much @DornoDiosMio for the registry tweaks and @VEG for the software. I have a Denon AVR-891 and AMD 5350 HTPC and this has been driving me insane for months. One of the hardest things was finding the right thing to Google search and come across this. For me it was not just losing the first couple seconds of sound. Kodi would do that then be ok, but in things like YouTube (in Chrome) or VLC (via Remote Desktop) I would hear the first second or two, then lose audio completely until I refresh the page or restart my Remote Desktop session. You could see the receiver detect and lose the stream, I just didn't know that is because of a keep alive. It was infuriating, but I think one of these two solutions is going to work for me.
Hi. I need a version of SoundKeeper for Windows 95/98 for a similar problem in a VirtualBox VM on Windows 10 64-bit. Can you please compile it for these older OSes. Some older programs in a VM are a lot of fun with sound properly working.
Gaurav, it is not possible to build it for Windows 98. It uses WASAPI which appeared in Windows Vista.
I'm so grateful software like this exists to get around the issue of trying to use high-definition digital outputs instead of dealing with clunky analog cables to receivers. So thank you!
Lately, I've been noticing that sometimes, either right when my computer starts, or when I bring it out of screen blank (not standby, since my computer never does that), my sound is gone. Stopping the soundkeeper process immediately restores the sound (but with the same wakeup delay that this program is designed to fix). If I restart the process, it works fine again. I am using optical S/PDIF from my motherboard, which is registering itself as a Realtek USB Audio device (kinda sad that an $800+ TRX40 motherboard would have use a simple USB audio bridge for this, but whatever, digital is digital).
I see that there's some code that's newer than the 1.0.3 release to address background recovery of the soundkeeper process. Do you think any of this new code might be the solution to this problem? If not, I'd be happy to run some debugging to see what's actually causing it to lock up my sound device.
I can confirm what Taryngar is saying. Killing soundkeeper or disabling and re-enabling the audio device in the Sound control panel fixes the issue. My setup is HDMI to a Sony receiver.
Taryngar, joshuacant, please try debug version. It will display a console window with debug output. Reproduce the issue and tell what Sound Keeper outputs in the console window.
Chrome is flagging the zip file as potential malware and won't allow download. You should have a talk with them to avoid damage to your reputation :).
Edge works fine.
Google doesn't accept complaints from small developers like me. Usually it takes some time for them to figure out that some new program is safe. Hope, it will be soon =)
Chrome's Safe Browsing system got a release that completely broke a lot of downloads for several hours on July 17th. It should have been fixed by the 20th, but I guess some computers might not update the Safe Browsing subsystem as quickly as others. I will note that I've downloaded the file in Chrome without issue before and after the recent bug. I just haven't been able to reproduce the issue (which means it may have been fixed by it restarting itself frequently).
Here's the master Chromium bug for that issue, which has several other bugs merged into it due to how many people reported the impact: https://bugs.chromium.org/p/chromium/issues/detail?id=1106858#c1
It was almost as bad as the Cloudflare failure that also happened on Friday and took out half the Internet for a couple of hours.
Still broken for me, can you update Safe Browsing system manually?
Google really considers it harmful and doesn't let you download the file normally. Firefox uses the same Google's Safe Browsing to detect suspicious downloads, so it doesn't let you download the file also. Sent them a request to review the file.
It is hilarious that every tiny program is often considered as some suspicious software. I like to make tiny programs, and I encounter this prejudice quite often. If you make a 100MB monster, nobody will complain. But when your program is just 14KB, stupid AV software starts to claim that it is definitely a virus. But why? It is not that hard to make a 100MB virus.
They already rejected my request a few hours ago. I'm quite sure that the decision is done by a stupid bot and nobody actually read my request. It is not the first time I have to deal with Google. Recently, Google also removed Chrome version of my Pure URL extension because "the description is inaccurate", and they didn't care about my explanations that it is a mistake from their side.
Google harms all small independent developers. When you see that somebody sets a password to an archive with their program, it is because of the Google. But I don't want to set passwords to archives with my software, it is just stupid. Will try to use 7z instead of zip.
Hi Veg, thank you for making such a useful and efficient program!
Could you please update the source code with the code for the 1.1.0 version? I'd like to build it for myself.
Pat, BitBucket sunsets support of Mercurial repositories. They already switched all my repos to read only mode, so I can't update it right now. The only unpublished part is parsing settings from executable file name. I plan to convert my repos to Git and to move them to GitHub later, so it will be published then.
"Default behavior can be changed by adding options to the Sound Keeper executable file name."
Does this mean adding them to the shortcut target? If so what syntax? SoundKeeper64.exe -Digital? SoundKeeper64.exe /Digital?
What about if I start soundkeeper via registry?
"SoundKeeper64"="C:\\Program Files\\apps\\SoundKeeper\\SoundKeeper64.exe -Digital"?
Dude Guyman, just add it to the executable file name itself. For example: DigitalSoundKeeper64.exe. I know that it is a bit unusual, but it was the simplest thing I could do. Probably, in newer versions I'll make it reading settings from registry.
But, you probably don't need to change the new default mode. By default, Sound Keeper works on current primary sound output. When you enable "Digital", it starts to work on all digital outputs (SPDIF/HDMI), as it was in the v1.0. When you enable "All", it starts to work on all outputs (even if they are detected as not digital). Usually, users need to keep current primary output only.
AV software were complaining a lot about 32-bit version of the program for some reason. Added standard runtime library to make executables a bit bigger. According to VirusTotal, it is much better now. I hope that it will help. Waiting when Google rescans the file.
It appears that my problems have been fixed by not using the terrible Realtek onboard audio device that comes on my ridiculously expensive TRX40 motherboard. Kinda sad that a literal top-of-the-line board has the digital audio dangling off the internal USB bus, but there you have it.
Now I'm using an EVGA Nu Audio Pro board, and thus far I've had zero instances of the sound randomly deciding to go on vacation. I'll give it a bit more time to screw up before forgetting about SoundKeeper just running in the background doing its job.
Thanks again for this program. It's going to continue being very helpful until I end up buying a $1500 receiver to handle 7.1 channels through analog.
I have a Marantz HD-DAC1 headphone amp and there's a relay that disables the output when no sound is playing. Not only is it annoying to hear but I fear that the relay will reach its end of life in no time. Your program works perfectly, thank you!
VEG, thank you very much for this. Not sure how I never seen it before as I'd seen posts from DornoDiosMio about the reg fix.
Unfortunately, the reg fix wasn't doing anything for me. What I had been doing was setting one of the "recording" devices to "listen to this device" and having it output "silence" to my soundbar. Even then, sometimes the "playback through this device" would switch to "default playback device" and even though I only had one enabled playback device it just stopped the process.
I can tell that this is working as the Dolby Home Theatre app is showing a flatline https://i.imgur.com/oCLLIZU.jpg
Thank you, sound keeper solved my bluetooth disconect problem , made comment on youtube
Thank you very much! Solved the annoying problem at once!
My system is a Logitech Z-5500 and the sound card is Sound Blaster 5.1 V3!
I'm not sure if you're able to help me on this one, it's quite specific:
My setup consists of HDMI from the computer to a 4x2 HDMI Matrix - this Matrix has three outputs though, two of them output to monitors like a normal matrix with the third outputting a passthrough audio signal to AV receivers for sound only. This allows me to switch to audio sources of any of the inputs and display any combination to either screen.
When running SoundKeeper, everything works perfectly as intended, but, as soon as I turn off the AV receiver, my virtual memory usage will go up by ~10MB per second. That might not seem like much when I have 16GB of RAM with a 24GB pagefile, but over the course of about 15-30 minutes, I'll be out of virtual memory with applications crashing and Windows grinding to a dead halt until I restart.
If the AV receiver is either on or off, Windows will still see the monitor that it's connected to, it just doesn't know that it can no longer output sound to it when the AV receiver is off. To make matters worse, even after turning my AV receiver back on, it won't release that used up memory until I restart Windows - at least it'll stop using up the virtual memory from that point onwards.
It took a while to narrow down that the issue is actually SoundKeeper. I initially came across this problem because I wanted to save a bit of power when the AV receiver isn't in use at all, but I was still using the computer itself. 50+ watts of idle power across a whole day starts to add up. So far, the workaround has been to either leave the AV receiver on or kill the SoundKeeper process.
Do you have any suggestions or ideas on how to workaround this issue? or will I have to keep on killing the process?
Link, what version of the Sound Keeper do you use? What version of Windows do you have?
@VEG, my apologies, I had an older version (1.0.4) - using 1.1.0 appears to fix the issue. It looks like I downloaded 1.0.4 back in late June when I needed to keep my audio device to stay awake and didn't update since then.
For reference, I'm using Windows 10 Pro 1909.
Sorry, that should have been the first thing to check. Thanks for the reply.
Link, actually, it is caused by a bug in Windows 10 (Windows 7 is not affected). I made an ugly workaround in the v1.1.0 to fix it.
Waiting when Microsoft fixes the memory leak. I already reported it to the Windows developers, and hope that it will be fixed in the version 20H2. I'll remove the workaround after that moment.
Microsoft Defender on Windows 10 2004 is saying the app contains this:
Apparently, it is a false-positive. AV software often considers small programs as suspicious.
My findings with Foobar2000. Veg, if I'm wrong, please comment.
Initialy, I couldn't get Soundkeeper to work in combination with Foobar and its original WASAPI component. This component requires Exclusive Control of the audio output. In result, I could see the Soundkeeper task running and I could also see it in the Mixer, but at every gap between two songs, SPDIF would switch off.
I did get it working with the new SHARED WASAPI component, which Foobar offers since last year. Selecting WASAPI (shared) SPDIF as output device allows Soundkeeper to work perfectly.
Thank you very much, Veg!
Can you please shine some light on when you plan to move this to GitHub?
For security reasons, I don't run exe's from the internet and would like to build it from source.
Thanks in advance,
At this moment, I plan to use hg-git to push my changes to GitHub from my local Mercurial repo. I wait when the hg-git developers add support of exporting Mercurial branches to Git branches without adding unnecessary Mercurial bookmarks to my local repo. AFAIK, this feature is in development, but don't know when it will be released.
I went from VSS (Visual Source Safe) to TFS to git, so I completely understand some of the issues that come along with a migration like that :)
Good luck & I look forward to your successful migration!
Thanks for this. I was using the registry hack up until a previous windows update through it out of wack. The sound was cutting out intermittently. This program works for my needs without the delay that was caused by the registry hack. Can't believe i just found it after yet again searching out an alternative solution.
Chris, I uploaded the source code to GitHub.
Thank you! :)
192.168.122.104 0/ 83
188.8.131.52 0/84 8075 HK
184.108.40.206 0/87 3356 US
When I run the 64 bit Soundkeeper through Virustotal, it report that it contact these 3 Ip's.
It only happens in the 64 bit but not in the 32 bit.
Walt, Sound Keeper doesn't try to contact anything on the web. It doesn't use network libraries at all.
Seems like VirusTotal makes a snapshot of some VM, then runs the program there, and then makes another snapshot of the VM, and compares it to the previous one (collecting all the network activities made from this VM in-between). If you look through all the data, you will see, that apparently at that moment some other program started to do something. For example, look at the list of mutexes. Only DigitalSoundKeeper is created by the Sound Keeper. There is Global\DSM_SoftwareInstall_Mutex, which looks like installation of something was occurring. And if you consider that something was written to C:\ProgramData\USOPrivate\UpdateStore\, you can be quite confident, that some program started to install its updates.
Thanks for the reply, im just being cautious with any .exe I run on my computer. I looked through the code, and compiled it myself. Can't say im an expert in reading code, but everything looks good.
Hi, I cannot download the soundkeeper.7z file. I click on it, and nothing happens
Jankus Barna, just checked it, it was downloaded fine. Please try again =)
Thanks VEG for this! First entry into using AVR, 2 hours of frustration and this ends my search for the cure.
FYI for those who are not IT savvy enough to compile the exe yourself by using the source code. If you are using chrome to try download, just clicking the download link will not initiate a download as chrome flags it as dangerous. Right click the link, select save as then select keep when chrome prompts at the bottom download bar.
Works perfectly, however sound is gone when I power up my AVR the next day until PC then AVR are rebooted. PC remains on 24/7.
RTX2070>Onkyo TX-NR616 via HDMI
Mobius1, I use Onkyo too.. they are known for having issues with HDMI switching.. might be cause of that.
Mine have simliar behaviour as you describe.
Hi, the download is showing as unavailable for me, does anyone have a mirror link please?
EDIT: I was able to get this to download by my NAS, but my PC refuses. Using Chrome on Windows 10 x64
Chrome is Version 87.0.4280.141 (Official Build) (64-bit)
Really great software. It does exactly what I need.
I'm running this on Windows 10 and one thing I've noticed is that a process called "Windows Audio Device Graph Isolation" (WADGI) also runs when I run SoundKeeper. WAGDI takes up between 2% and 3% of my CPU. My PC runs 24/7 so I like to keep the CPU usage as low as possible.
Should I expect WAGDI to also be running?
Thanks for your help and amazing app!
absolution, as far as I understand, you are talking about the audiodg.exe process. Yes, this system process is running always when you play any sounds, even when it is just silence. It is weird that it takes 2%-3% of CPU. On my quite old machine (from 2014) it is usually 0.1% or so. Probably, you enabled some DSP processing for all sounds on your system? Or it's a Windows 10 issue, I don't know. I still use Windows 7 on my home PC.
ah thanks for this!
Yeah, that's right, the exe name is audiodg.exe. My PC is from 2012 (running an OC'd 2500k).
>Probably, you enabled some DSP processing for all sounds on your system?
It's entirely possible that I've enabled something I should have. Do you know where I could look to check this?
Ah another W7 fan. I've very only recently swapped to W10.
It must be somewhere in the settings related to audio outputs. But probably it is normal for Windows 10, I don't know. Many things are less optimized in Windows 10. Even the new calculator loads for ages in comparison to how quick was the old calculator.
Is it possible to specifically target a sound device to "keep awake"? The one I'm looking at is not the default audio device and I don't wan't to keep all of them awake, since there are quite a few and I don't know how the tool scales.