Is it possible to detect if any sound plays on a windows xp machine? Help in any language would be useful. I basically need to write a program that runs all the time and outputs some text to a file whenever a sound plays. I don’t need any specific information about the sound, just whether a sound is playing. I don’t care whether the speakers are actually powered on or anything like that.
Share
The question was easy, but the answer is difficult. You’ll need to utilize DirectSound to achieve your purpose. I haven’t tested my solution yet, but you can try to call IDirectSoundBuffer8::GetStatus(), then check the return value of pdwStatus parameter. According to MSDN,
DSBSTATUS_PLAYINGis set if the buffer is being heard.Since you didn’t tell about programming language you are using, I implement the following example using my favorite language, Delphi.
UPDATE
I just found a VB forum discussed about how to detect silence (no output of sound card). Download DetSilence.zip. In the
DXRecord_GotWavDataSub, modify the constantsSilencePercentandNonSilencePercentto the values you need.