MFC Multithreaded Recording and Playback of Sound
This article was contributed by Paul Cheffers.
CRecordSound can be invoked by the following code:
m_pRecordSound = new CRecordSound(); m_pRecordSound->CreateThread();CPlaySound can be invoked by the following code:
m_pPlaySound = new CPlaySound(); m_pPlaySound->CreateThread();To initiate sound recording from CRecordSound do the following:
m_RecordThread->PostThreadMessage(WM_RECORDSOUND_STARTRECORDING, 0, 0L);To stop recording sound:
m_RecordThread->PostThreadMessage(WM_RECORDSOUND_STOPRECORDING, 0,0);Similar calls begin playing and stopping of sound:
m_PlayThread->PostThreadMessage(WM_PLAYSOUND_STARTPLAYING,0,0); m_PlayThread->PostThreadMessage(WM_PLAYSOUND_STOPPLAYING,0,0);The CRecordSound class ferries sound blocks that have been recorded over to the CPlaySound class. The CRecordSound class is notified of the CPlaySound thread via:
m_RecordSound->PostThreadMessage(WM_RECORDSOUND_SOUNDPLAYER, 0,(LPARAM)m_PlaySound);For both CRecordSound and CPlaySound, the virtual member,
ProcessSoundData(short int* sound, DWORD dwSamples);can be overridden to get access to the actual sound data.
Downloads
Download demo project - 17 KbHistory
Date Posted: January 21, 2000