I have a very frustrating problem. I often listen to live ASMR on Twitch while working. Frequently, things happen that make a lot of noise, such as a dog barking or somebody screaming in the background, the ASMRtist needs to sneeze or cough, etc. Whenever that happens, the streamer tends to immediately press the "mute" button on their physical mic (or in software), which completely mutes their audio output, going from a comfortable, soothing audio background which caresses my ears, to an ear-deafening silence, since I'm obviously not playing other sounds at the same time as the ASMR as that would ruin the whole experience and "eat" any subtle sounds. It takes me out from the relaxation immediately and makes me extremely uncomfortable and annoyed.

I have tried countless times to suggest to them to enable some kind of feature which would, instead of cutting to total silence, play back a generic "white noise" or, even better, play the last few minutes on loop until the mic is resumed. However, I have not been able to convince a single streamer to do this, and frankly, I wouldn't even know how to do this myself, so I can hardly expect them to know about it, since most of them are much less "computer savvy" than I. In my opinion, it ought to be a standard feature built into any "ASMR mic" or streaming software, but it (probably) isn't.

For this reason, I've been thinking long and hard about any way to solve this on my end instead. I would like some kind of mechanism which does the following:

  1. Whenever it detects that there is either 0% or a pre-determined percentage of sound volume played on my Windows 10 computer, it starts playing a given sound file (which I have prepared in advance and just has whitenoise in it).
  2. Whenever it detects that there is sound, or more sound than the given %, obviously excluding the looping sound file with whitenoise, it stops the playback of the sound file.

This would be wonderful and save me (for the most part) from being annoyed by the sudden mutes. However, since even the simplest thing always turns out to be a massive struggle, and I consider this to be "reasonably complex", I have very little hope that I will ever get this solved.

I do have AutoHotKey installed, but I strongly doubt that it's this advanced/smart. This probably would have to be some dedicated software or something, which in turns causes trust problems since I'm very paranoid about running any new software these days... but let's not get ahead of ourselves. I'd like to hear any reasonable solution to this.

Note: Any solution which requires me to press shortcut keys or something is unacceptable. Not just because it's "so much work", but because I'm often immersed in a VM where the host OS's AutoHotKey bindings don't work/apply.

  • Pre-recorded and vetted tracks might be the most reliable solution. – Christopher Hostage Jan 7 at 19:26
  • 2
    (Just want to say that this is a really astonishing question in so many ways - i hope i'll never reach the point where i get frustrated by silence^^) – xph Jan 8 at 14:33

I'm going to take a punt at this & just say - you're not going to do it unless you code the app from scratch.

You need to:-

  1. intercept the audio stream between receiving app & audio output
  2. quantify silence
  3. trigger your alternate playback
  4. recognise when the [currently muted] audio stream is once more producing sound & switch back.

I doubt there is any existing structure which could do that.

From an audio engineering perspective, rather than as a coder or just 'computer user', what you could use is a keyed gate with side-chain, though that would require your 'emergency audio' is constantly playing, rather than started & stopped by the gate.
In pure 'audio engineering' terms this is a fairly simple setup… if you happened to be running two channels of audio in a commercial Digital Audio Workstation [DAW]. To be doing it at OS-level instead would require you engineer that pre-existing technology into the audio stream, fairly low down the OS.


A few methods that might make this easier than doing an internal intercept between the receiving app and audio output...

  1. Use a loopback cable to detect what's playing via your microphone. This uses a Y-splitter on the speaker output, and then you plug one side back into the mic jack (typically with a male-male cable plugged into the Y-splitter). This would still require some programming for audio detection to trigger (play/stop) white noise when there was louder audio present or not--the detection algorithm would have to be able to tell the difference between white noise and the actual audio content. The playback of the white noise would be fairly straightforward using a .wav file or VLC/Winamp automation or whatever method of your choosing. The advantage here is just that you don't have to intercept anything.
  2. Use more than one sound card, with a DAW that's always running (per suggestion from Tetsujin) and a gated side-chain. You would need to loop back the audio from one sound card into the other (either via a soft loopback driver or via an external loopback cable), process it in the DAW, and then output the processed signal to the second sound card output. There are cheap little USB sound cards that would probably work to give you a second audio output that the DAW could use.
  3. Combination of above. Use more than one sound card where streaming audio comes out of one audio interface and white noise comes out of the other. Streaming audio is looped back so detection of sound is 100% reliable since it's not combined streaming audio plus white noise (white noise would be on a separate audio output). You would have to combine the two sound card outputs into a single output before sending it to speakers/headphones using either a cheap external mixer or passive external A+B audio combiner (and it would have to be done this way so it's a directional couple, vs. just connecting output cables together, because you don't want the white noise signal to go back into the microphone input that's split off of the main audio output).
  4. Another term for reducing the volume of a signal based on a side-chain input is called 'ducking'. In this case you would be ducking the white noise any time you have the desired streaming audio signal. You can do this externally with a dedicated ducker-- one example is the Rolls DU30b Audio Ducker. The white noise would have to be generated and made available to this box as an always-on output, in addition to your streaming audio, and then the box would duck the always-on white noise whenever streaming audio was present.
  5. Use a second computer as your external 'ducker' box. Run audio output of your first computer to the second computer's mic jack, and either A) sample the mic input and pass it directly through to the audio output, or B) play white noise if nothing is present on the mic jack. This is similar to several options above, just with a slightly different hardware setup. If you had an old computer sitting around to program it might be easier than buying external hardware. Or maybe just do it with a raspberry pi--might be cheaper than a dedicated audio-type solution.

Note: In most cases above I am using the term 'white noise', by which I really mean any suitable ambient audio source that's not dead quiet.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.