Sound Keeper v1.3.3 [2023/08/19]

Prevents SPDIF/HDMI 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 (23KB). Source code →

The archive contains two versions:

  • SoundKeeper32.exe is for x86-32 versions of Windows.
  • SoundKeeper64.exe is for x86-64 versions of Windows. The most popular variant.
  • I could make native ARM64 version, but I need somebody with such machine for testing it before releasing.

There is also a debug version that outputs all debug logs into a console window. Please show 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.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 →

  1. #151
    I WANT TO BECOME MONKE

    @VEG

    I fixed it by changing sampling rate from 48kHz to 96kHz

  2. #152
    TOB

    Any Regedit hack to equal this? Thanks

  3. #153
    VEG Author

    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.

  4. #154
    Pavel

    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.

  5. #155
    Navid

    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?

  6. #156
    VEG Author

    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.

  7. #157
    Halex

    Still works beautifully in Windows 11. Thank you!

  8. #158
    forestation

    Is there a similar app for Google TV (Android)? I'm encountering this issue while running Kodi on Google TV

  9. #159
    VEG Author

    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.

  10. #160
    VEG Author

    Sound Keeper v1.2.0

    • Sound Keeper doesn't prevent PC from automatic going into sleep mode.
    • New "Sine" stream type which can be useful for analog outputs or too smart digital outputs.
    • When a user starts a new Sound Keeper instance, the previous one is stopped automatically.
    • "Fluctuate" stream type considers sample format of the output (16/24/32-bit integer, and 32-bit float).
    • Command line parameters are supported. Example: "SoundKeeper64.exe sine -f 1000 -a 10".
    • The workaround for the Audio Service memory leak is enabled on affected Windows versions only (8, 8.1, and 10).
  11. #161
    VEG Author

    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.

  12. #162
    VEG Author

    Sound Keeper v1.2.1

    • Sound Keeper works on Windows 11.
    • The code which allowed PC to sleep automatically had to be disabled on Windows 11 because of a bug in the OS.

    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.

  13. #163
    HHH03

    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?

  14. #164
    VEG Author

    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.

  15. #165
    HHH03

    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.

  16. #166
    HHH03

    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.

  17. #168
    HHH03

    Does build v1.2.0 work correctly with Windows 10? It definitely doesn’t work with Windows 11.

  18. #169
    VEG Author

    Yeah, it should work on Windows 10.

  19. #170
    Anton

    Whats new with 1.2.1 version?

  20. #171
    VEG Author

    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.

  21. #172
    viz

    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 !

  22. #173
    VEG Author

    Did you try the latest version 1.2.1? Try different modes, some of them should help.

  23. #174
    viz

    Ah nevermind, I've changed it to SoundKeeperSineF10A5 and now it stays on. Thanks !

  24. #175
    VEG Author

    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.

  25. #176
    viz

    @VEG: v1.2.1 with F1A1 works on my system (SoundKeeperSineF1A1.exe). Specs are Win11 64bit, X570 Elite with Realtek ALC1200, Logitech Z-5500

  26. #177
    Ver Greeneyes

    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.

  27. #178
    VEG Author

    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.

  28. #179
    Ver Greeneyes

    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.

  29. #180
    Ver Greeneyes

    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).

  30. #181
    Enn

    Thank you very much!
    It saves me from ALC4082 annoying popping noises by using default Sin stream type at WIN11.

  31. #182
    JR

    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

  32. #183
    techguyone

    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.

  33. #184
    VEG Author

    It should work if you use Sine mode, you just need to find minimal frequency and amplitude that work for you.

  34. #185
    Shane

    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.

  35. #186
    VEG Author

    Shane, I would recommend you to try lower frequencies, e.g. 15Hz.

  36. #187
    Shane

    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.

  37. #188
    Shane

    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.

  38. #189
    VEG Author

    Does F10A10 help?

  39. #190
    Dirk

    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

  40. #191
    Thomas

    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

  41. #192
    Jonathan

    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).

  42. #193
    Max

    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.

  43. #194
    sneakytiki

    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

    SYSTEM:
    [DRIVER] NVIDIA High Definition Audio (HDAUDIO\FUNC_01&VEN_10DE&DEV_009A&SUBSYS_14584086&REV_1001\5&da6529f&0&0001)
    An audio stream is currently in use.
  44. #195
    VEG Author

    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):

    @echo off
    :loop
    cls
    echo %DATE% %TIME:~0,8%
    echo.
    powercfg /requests
    timeout 1 > NUL
    goto :loop
  45. #196
    sneakytiki

    I'm using windows 10 with soundkeeper 1.2.1, so i will follow your suggested diagnostics and report back.. thanks!

  46. #197
    sneakytiki

    set my sleep timer to 1 minute and let it run out, screen went to sleep but computer did not.. here are the results

    23:12:11.301 [14868] Windows Build Number: 19044 (buggy WASAPI).
    23:12:11.301 [14868] Remaining time to sleeping: 60 seconds.
    23:12:11.301 [14868] Main thread started.
    23:12:11.302 [14868] Exe File Name: SoundKeeper64d.exe.
    23:12:11.302 [14868] Device Type: Primary.
    23:12:11.302 [14868] Stream Type: Fluctuate.
    23:12:11.305 [14868] Main loop started.
    23:12:11.305 [14868] Starting...
    23:12:11.307 [21792] Rendering thread started.
    23:12:11.307 [21792] Render.
    23:12:11.309 [21792] ERROR: Unrecognized sample format.
    23:12:11.310 [21792] Format: PCM 8ch 48000Hz 32-bit float.
    23:12:51.371 [14868] Remaining time to sleeping: 30 seconds.
    23:13:09.117 [13036] Session is disconnected with reason 0. Restart.
    23:13:09.118 [21792] Rendering thread finished. Return code: 1.
    23:13:10.636 [14868] Restarting...
    23:13:10.638 [11060] Rendering thread started.
    23:13:10.638 [11060] Render.
    23:13:10.638 [11060] Format: PCM 2ch 48000Hz 16-bit integer.
    23:13:10.638 [11060] Format: PCM 2ch 48000Hz 32-bit float.
    23:13:21.748 [14868] Remaining time to sleeping: 0 seconds.
    23:13:21.748 [14868] Going to sleep...
    23:13:22.769 [11060] Rendering thread finished. Return code: 0.
    23:13:51.588 [14868] Remaining time to sleeping: -30 seconds.
    23:14:02.079 [14868] Restarting...
    23:14:02.081 [20660] Rendering thread started.
    23:14:02.081 [20660] Render.
    23:14:02.081 [14868] Going to sleep...
    23:14:02.081 [20660] ERROR: Unrecognized sample format.
    23:14:02.082 [20660] Format: PCM 8ch 48000Hz 32-bit float.
    23:14:02.174 [20660] Rendering thread finished. Return code: 0.
    23:14:21.387 [14868] Remaining time to sleeping: 60 seconds.
    23:14:21.387 [14868] Starting...
    23:14:21.390 [19436] Rendering thread started.
    23:14:21.390 [19436] Render.
    23:14:21.390 [19436] ERROR: Unrecognized sample format.
    23:14:21.391 [19436] Format: PCM 8ch 48000Hz 32-bit float.
  47. #198
    VEG Author

    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.

  48. #199
    VEG Author

    Sound Keeper v1.2.2

    • Work as a dummy when no suitable devices found.
    • Sound Keeper shoudn't prevent PC from automatic going into sleep mode on Windows 10.
  49. #200
    sneakytiki

    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

Comments are temporarily closed.