Skype is a free voice call software, not only to point to the computer for free voice calls, and only at a low cost can directly call the fixed phone or mobile phone, Skype to excellent quality of the call won the world many users of the pro-Lai, I am a loyal user of Skype, The following is my Skype screenshot:
I often use Skype to get in touch with Taiwanese compatriots and foreign friends. Sometimes because business needs to be recorded and kept voice calls, at the time I had this idea (2006) The official Skype did not provide recording function, we are doing the program, do not have the function to add their own ah, That's why I have a passion for programming.
At the request of the majority of netizens, now the program's programming ideas and source code contributions to share with you, I hope to be interested in audio programming friends to provide a little help, then I would be satisfied.
When I first started writing this program, I tried to record the sound card with a regular recording, and since it was a call recording, we wanted to keep our voice and the voice of the other person at the same time. First of all, we have to record each other's voice, then we can only choose the "Stereo Mixer" channel for recording, but at this point the microphone channel's voice will be discarded, which means that the other person will not hear me in Skype, and secondly, if we have to record my own voice, we have to open the microphone channel recording, But in the Skype call, the "microphone" channel has been occupied by Skype, our program can not be recorded again, it seems that the conventional recording method is not workable.
So, I think of the underlying processing of Windows audio, any voice software audio data processing to the end can not be separated from the windows of the underlying audio Win32 API functions, check the MSDN Library to know that these functions are in the Multimed.chm Help file:
Waveform Functions
The following functions are used with waveform audio.
auxGetDevCaps
auxGetNumDevs
auxGetVolume
auxOutMessage
auxSetVolume
PlaySound
sndPlaySound
waveInAddBuffer
waveInClose
waveInGetDevCaps
waveInGetErrorText
waveInGetID
waveInGetNumDevs
waveInGetPosition
waveInMessage
waveInOpen
waveInPrepareHeader
waveInProc
waveInReset
waveInStart
waveInStop
waveInUnprepareHeader
waveOutBreakLoop
waveOutClose
waveOutGetDevCaps
waveOutGetErrorText
waveOutGetID
waveOutGetNumDevs
waveOutGetPitch
waveOutGetPlaybackRate
waveOutGetPosition
waveOutGetVolume
waveOutMessage
waveOutOpen
waveOutPause
waveOutPrepareHeader
waveOutProc
waveOutReset
waveOutRestart
waveOutSetPitch
waveOutSetPlaybackRate
waveOutSetVolume
waveOutUnprepareHeader
waveOutWrite