#include <WavePlayer.h>
類別TWavePlayer的繼承圖:
公開型態 | |
EVENT_RECORD_BUFFER | |
若要監聽錄了一個buffer的訊息,可以利用AddListener函式,把此常數當做第一個參數。 | |
EVENT_PLAY_BUFFER | |
若要監聽播了一個buffer的訊息,可以利用AddListener函式,把此常數當做第一個參數。 | |
EVENT_RECORD_COMPLETE | |
若要監聽錄音完畢的訊息,可以利用AddListener函式,把此常數當做第一個參數。 | |
EVENT_PLAY_COMPLETE | |
若要監聽播放完畢的訊息,可以利用AddListener函式,把此常數當做第一個參數。 | |
IDLE | |
RECORDING | |
PLAYING | |
enum | { EVENT_RECORD_BUFFER, EVENT_PLAY_BUFFER, EVENT_RECORD_COMPLETE, EVENT_PLAY_COMPLETE } |
enum | { IDLE, RECORDING, PLAYING } |
公開方法(Public Methods) | |
TWavePlayer (int sampleRate=11025, int bitRate=8) | |
~TWavePlayer () | |
int | GetMode (void) |
取得目前狀態。 | |
int | GetSampleRate (void) |
取得聲波的取樣頻率。單位為Hz。 | |
int | GetBitRate (void) |
取得聲波每個的取樣bit數。 | |
void | SetFormat (int newSampleRate, int newBitRate) |
float | GetDuration (void) |
bool | IsEchoOn (void) |
取得迴音的狀態。 | |
int | GetBufferSize (void) |
取得錄音及放音時的buffer大小。 | |
void | SetBufferSize (int) |
void | SetWave (int *w, int size) |
void | SetWave (TWaveFile *WaveFile) |
bool | Record (int maxDuration) |
void | StopRecord (void) |
停止錄音。 | |
bool | Play (void) |
void | StopPlay (void) |
停止放音。 | |
void | EchoOn (void) |
開啟迴音,但必須在錄音或放音狀態下才有作用。 | |
void | EchoOff (void) |
關閉迴音。. | |
float | GetTimeCode (void) |
取得目前錄音或放音的時間。若不是在錄音或放音的狀態會傳回0。 | |
void | Seek (int percent) |
bool | Load (char *name) |
載入一個wav檔。 | |
bool | Save (char *name) |
以目前格式,將聲波儲存成一個wav檔。 | |
void | Clear (void) |
清除聲波。 | |
void | Trim (int from, int to) |
去掉頭尾兩段聲波。 | |
void | RecordABuffer (void) |
void | PlayABuffer (void) |
公開屬性 | |
int * | wave |
聲波陣列,若為8 bits,則元素值範圍為-128到127;若為16 bits,則元素值範圍為-32768到32767。*/. | |
int | waveSize |
wave陣列的長度,代表聲波的取樣數目。*/ | |
int | echoVolume |
迴音音量。越大則迴音持續越久,但相對的原本聲音的音量會變小。直接改變此值會直接影響正在播放的迴音音量。*/ | |
保護方法(Protected Methods) | |
void | Resample (int) |
bool | OpenRecordDevice (void) |
void | CloseRecordDevice (void) |
bool | OpenPlayDevice (void) |
void | ClosePlayDevice (void) |
void | RecordComplete (void) |
void | PlayComplete (void) |
保護屬性 | |
WAVEFORMATEX | waveFormat |
HWAVEIN | waveIn |
HWAVEOUT | waveOut |
WAVEHDR | waveInHdr [3] |
WAVEHDR | waveOutHdr [3] |
int | bufferSize |
int | bufferTotal |
int | recordBufferCount |
int | playBufferCount |
int | firstEchoBufferIndex |
int | mode |
int | bytesPerBuffer |
float | duration |
TWavePlayerWindow * | HiddenWindow |
bool | echoOn |
bool | firstEcho |
私有屬性 | |
friend | TWavePlayerWindow |
定義在 WavePlayer.h 檔案之第 26 行.
anonymous enum |
定義在 WavePlayer.h 檔案之第 48 行.
anonymous enum |
TWavePlayer::TWavePlayer | ( | int | sampleRate = 11025 , |
|
int | bitRate = 8 | |||
) |
建構子。
sampleRate | 取樣頻率,單位為Hz,預設為11025。 | |
bitRate | 取樣bit數,必須為8或16,預設為8。 |
定義在 WavePlayer.cpp 檔案之第 41 行.
參考 Clear(), echoOn, echoVolume, HiddenWindow, IDLE, mode, SetBufferSize(), SetFormat(), TWavePlayerWindow, wave, waveInHdr, 及 waveOutHdr.
TWavePlayer::~TWavePlayer | ( | ) |
void TWavePlayer::Clear | ( | void | ) | [virtual] |
清除聲波。
清除聲波。
依據TWaveFile重新實作.
定義在 WavePlayer.cpp 檔案之第 412 行.
參考 bufferTotal, duration, playBufferCount, recordBufferCount, wave, 及 waveSize.
被參考於 Load(), Record(), SetWave(), TWavePlayer(), 及 ~TWavePlayer().
void TWavePlayer::ClosePlayDevice | ( | void | ) | [protected] |
定義在 WavePlayer.cpp 檔案之第 273 行.
參考 waveOut, 及 waveOutHdr.
被參考於 EchoOff(), StopPlay(), 及 StopRecord().
void TWavePlayer::CloseRecordDevice | ( | void | ) | [protected] |
void TWavePlayer::EchoOff | ( | void | ) |
void TWavePlayer::EchoOn | ( | void | ) |
開啟迴音,但必須在錄音或放音狀態下才有作用。
開啟迴音,但必須在錄音或放音狀態下才有作用。
定義在 WavePlayer.cpp 檔案之第 371 行.
參考 echoOn, firstEcho, mode, OpenPlayDevice(), 及 RECORDING.
int TWavePlayer::GetBitRate | ( | void | ) | [virtual] |
取得聲波每個的取樣bit數。
取得聲波每個的取樣bit數。
依據TWaveFile重新實作.
定義在 WavePlayer.cpp 檔案之第 80 行.
參考 waveFormat.
被參考於 Save(), 及 SetFormat().
int TWavePlayer::GetBufferSize | ( | void | ) |
取得錄音及放音時的buffer大小。
取得錄音及放音時的buffer大小。預設值為建構子sampleRate參數的1/5。
定義在 WavePlayer.cpp 檔案之第 150 行.
參考 bufferSize.
float TWavePlayer::GetDuration | ( | void | ) | [virtual] |
取得聲波的長度,單位是秒。相當於 waveSize 除以 GetSampleRate 。
依據TWaveFile重新實作.
定義在 WavePlayer.cpp 檔案之第 392 行.
參考 duration.
int TWavePlayer::GetMode | ( | void | ) |
取得目前狀態。
取得目前狀態。
定義在 WavePlayer.cpp 檔案之第 70 行.
參考 mode.
被參考於 WavePlayerInProc(), 及 WavePlayerOutProc().
int TWavePlayer::GetSampleRate | ( | void | ) | [virtual] |
取得聲波的取樣頻率。單位為Hz。
取得聲波的取樣頻率。單位為Hz。
依據TWaveFile重新實作.
定義在 WavePlayer.cpp 檔案之第 75 行.
參考 waveFormat.
被參考於 Record(), Resample(), Save(), SetWave(), StopRecord(), 及 Trim().
float TWavePlayer::GetTimeCode | ( | void | ) |
取得目前錄音或放音的時間。若不是在錄音或放音的狀態會傳回0。
取得目前錄音或放音的時間。若不是在錄音或放音的狀態會傳回0。 return 已經錄音或放音的時間,單位是秒。
定義在 WavePlayer.cpp 檔案之第 397 行.
參考 bufferTotal, duration, IDLE, mode, playBufferCount, recordBufferCount, 及 RECORDING.
bool TWavePlayer::IsEchoOn | ( | void | ) |
bool TWavePlayer::Load | ( | char * | name | ) | [virtual] |
載入一個wav檔。
載入一個wav檔。
name | 為wav檔檔名。 |
依據TWaveFile重新實作.
定義在 WavePlayer.cpp 檔案之第 189 行.
參考 Clear(), IDLE, TWaveFile::Load(), mode, 及 SetWave().
bool TWavePlayer::OpenPlayDevice | ( | void | ) | [protected] |
定義在 WavePlayer.cpp 檔案之第 253 行.
參考 bytesPerBuffer, mode, PLAYING, waveFormat, waveOut, waveOutHdr, 及 WavePlayerOutProc().
bool TWavePlayer::OpenRecordDevice | ( | void | ) | [protected] |
定義在 WavePlayer.cpp 檔案之第 215 行.
參考 bytesPerBuffer, TWaveFile::bytesPerSample, mode, RECORDING, waveFormat, waveIn, waveInHdr, 及 WavePlayerInProc().
被參考於 Record().
bool TWavePlayer::Play | ( | void | ) |
播放聲波。若原本在錄音狀態,則會先停止錄音。若已開啟迴音,則會同時聽到迴音。
定義在 WavePlayer.cpp 檔案之第 331 行.
參考 bufferSize, mode, OpenPlayDevice(), playBufferCount, PlayComplete(), PLAYING, StopRecord(), wave, TWaveFile::WaveCopy(), waveOut, waveOutHdr, 及 waveSize.
void TWavePlayer::PlayABuffer | ( | void | ) |
定義在 WavePlayer.cpp 檔案之第 475 行.
參考 bufferSize, bufferTotal, TWaveFile::bytesPerSample, echoOn, echoVolume, EVENT_PLAY_BUFFER, firstEchoBufferIndex, HiddenWindow, mode, playBufferCount, PLAYING, RECORDING, wave, TWaveFile::WaveCopy(), waveInHdr, waveOut, 及 waveOutHdr.
被參考於 WavePlayerOutProc().
void TWavePlayer::PlayComplete | ( | void | ) | [protected] |
定義在 WavePlayer.cpp 檔案之第 578 行.
參考 EVENT_PLAY_COMPLETE, 及 StopPlay().
被參考於 Play(), 及 TWavePlayerWindow::WndProc().
bool TWavePlayer::Record | ( | int | maxDuration | ) |
以目前的格式錄一段聲音。若原本在放音狀態,則會先停止放音。若已開啟迴音,則錄音的同時會聽到迴音。 若要中斷錄音,可以呼叫 StopRecord 函式。 若錄音完畢,會送一個message給SetRecordListener 函式所設定的handle。
maxDuration | 最多要錄的秒數。 |
定義在 WavePlayer.cpp 檔案之第 287 行.
參考 bufferSize, bufferTotal, Clear(), duration, echoOn, firstEcho, GetSampleRate(), mode, OpenPlayDevice(), OpenRecordDevice(), RecordComplete(), RECORDING, StopPlay(), wave, 及 waveIn.
void TWavePlayer::RecordABuffer | ( | void | ) |
定義在 WavePlayer.cpp 檔案之第 441 行.
參考 bufferSize, bufferTotal, bytesPerBuffer, TWaveFile::bytesPerSample, echoOn, EVENT_RECORD_BUFFER, firstEcho, firstEchoBufferIndex, HiddenWindow, mode, recordBufferCount, RECORDING, wave, TWaveFile::WaveCopy(), waveIn, waveInHdr, waveOut, waveOutHdr, 及 waveSize.
被參考於 WavePlayerInProc().
void TWavePlayer::RecordComplete | ( | void | ) | [protected] |
定義在 WavePlayer.cpp 檔案之第 572 行.
參考 EVENT_RECORD_COMPLETE, 及 StopRecord().
被參考於 Record(), 及 TWavePlayerWindow::WndProc().
void TWavePlayer::Resample | ( | int | ) | [protected] |
依據TWaveFile重新實作.
定義在 WavePlayer.cpp 檔案之第 120 行.
參考 bufferSize, bufferTotal, GetSampleRate(), TWaveFile::sampleRate, wave, 及 waveSize.
被參考於 SetFormat().
bool TWavePlayer::Save | ( | char * | name | ) | [virtual] |
以目前格式,將聲波儲存成一個wav檔。
以目前格式,將聲波儲存成一個wav檔。
name | 為wav檔檔名。 |
依據TWaveFile重新實作.
定義在 WavePlayer.cpp 檔案之第 203 行.
參考 GetBitRate(), GetSampleRate(), IDLE, mode, TWaveFile::Save(), TWaveFile::SetFormat(), TWaveFile::SetWave(), wave, 及 waveSize.
void TWavePlayer::Seek | ( | int | percent | ) |
改變放音的起點,也就是會把起點設成第(聲波秒數*percent)/100秒的地方。
percent | 放音起點的百分比,範圍從0到100。 |
定義在 WavePlayer.cpp 檔案之第 404 行.
參考 bufferTotal, mode, playBufferCount, 及 PLAYING.
void TWavePlayer::SetBufferSize | ( | int | ) |
設定錄音及放音時的buffer大小。越大則迴音反應越慢,但太小可能會導致聲音間斷。預設值為建構子sampleRate參數的1/5。
定義在 WavePlayer.cpp 檔案之第 155 行.
參考 bufferSize, bufferTotal, bytesPerBuffer, TWaveFile::bytesPerSample, IDLE, mode, 及 waveSize.
被參考於 TWavePlayer().
void TWavePlayer::SetFormat | ( | int | newSampleRate, | |
int | newBitRate | |||
) | [virtual] |
設定聲波的取樣頻率和取樣bit數。若當時正在錄音或放音,則此函式沒有任何作用。 若呼叫此函式時有聲波存在,會把聲波調整成符合新的格式,影響到 wave 和 waveSize 的值。
newSampleRate | 新的取樣頻率。 | |
newBitRate | 新的取樣bit數。 |
依據TWaveFile重新實作.
定義在 WavePlayer.cpp 檔案之第 90 行.
參考 bufferSize, bytesPerBuffer, TWaveFile::bytesPerSample, GetBitRate(), IDLE, mode, Resample(), wave, waveFormat, 及 waveSize.
被參考於 SetWave(), 及 TWavePlayer().
void TWavePlayer::SetWave | ( | TWaveFile * | WaveFile | ) |
將此元件的聲波和格式設定成和WaveFile的一樣。若當時正在錄音或放音,則此函式沒有任何作用。
WaveFile | 新的聲波。 |
定義在 WavePlayer.cpp 檔案之第 179 行.
參考 Clear(), TWaveFile::GetBitRate(), TWaveFile::GetSampleRate(), IDLE, mode, SetFormat(), SetWave(), TWaveFile::wave, 及 TWaveFile::waveSize.
void TWavePlayer::SetWave | ( | int * | w, | |
int | size | |||
) | [virtual] |
設定新的聲波。若當時正在錄音或放音,則此函式沒有任何作用。 若新的聲波格式和此元件原本的格式不同,則呼叫此函式前必須先呼叫 SetFormat 函式設定新的格式。
w | 新的聲波陣列,元素值的範圍和 wave 相同。 | |
size | w陣列的長度,代表聲波的取樣數目。 |
依據TWaveFile重新實作.
定義在 WavePlayer.cpp 檔案之第 165 行.
參考 bufferSize, bufferTotal, Clear(), duration, GetSampleRate(), IDLE, mode, wave, 及 waveSize.
void TWavePlayer::StopPlay | ( | void | ) |
停止放音。
停止放音。
定義在 WavePlayer.cpp 檔案之第 362 行.
參考 ClosePlayDevice(), IDLE, mode, 及 PLAYING.
被參考於 PlayComplete(), Record(), 及 ~TWavePlayer().
void TWavePlayer::StopRecord | ( | void | ) |
停止錄音。
停止錄音。
定義在 WavePlayer.cpp 檔案之第 318 行.
參考 bufferSize, bufferTotal, ClosePlayDevice(), CloseRecordDevice(), duration, echoOn, GetSampleRate(), IDLE, mode, RECORDING, 及 waveSize.
被參考於 Play(), RecordComplete(), 及 ~TWavePlayer().
void TWavePlayer::Trim | ( | int | from, | |
int | to | |||
) | [virtual] |
去掉頭尾兩段聲波。
去掉頭尾兩段聲波。
from | 去掉聲波陣列from之前的聲波。 | |
to | 去掉聲波陣列to之後的聲波。 |
依據TWaveFile重新實作.
定義在 WavePlayer.cpp 檔案之第 421 行.
參考 bufferSize, bufferTotal, duration, GetSampleRate(), wave, 及 waveSize.
int TWavePlayer::bufferSize [protected] |
定義在 WavePlayer.h 檔案之第 34 行.
被參考於 GetBufferSize(), Play(), PlayABuffer(), Record(), RecordABuffer(), Resample(), SetBufferSize(), SetFormat(), SetWave(), StopRecord(), 及 Trim().
int TWavePlayer::bufferTotal [protected] |
定義在 WavePlayer.h 檔案之第 34 行.
被參考於 Clear(), GetTimeCode(), PlayABuffer(), Record(), RecordABuffer(), Resample(), Seek(), SetBufferSize(), SetWave(), StopRecord(), 及 Trim().
int TWavePlayer::bytesPerBuffer [protected] |
定義在 WavePlayer.h 檔案之第 35 行.
被參考於 OpenPlayDevice(), OpenRecordDevice(), RecordABuffer(), SetBufferSize(), 及 SetFormat().
float TWavePlayer::duration [protected] |
定義在 WavePlayer.h 檔案之第 36 行.
被參考於 Clear(), GetDuration(), GetTimeCode(), Record(), SetWave(), StopRecord(), 及 Trim().
bool TWavePlayer::echoOn [protected] |
定義在 WavePlayer.h 檔案之第 38 行.
被參考於 EchoOff(), EchoOn(), IsEchoOn(), PlayABuffer(), Record(), RecordABuffer(), StopRecord(), 及 TWavePlayer().
迴音音量。越大則迴音持續越久,但相對的原本聲音的音量會變小。直接改變此值會直接影響正在播放的迴音音量。*/
定義在 WavePlayer.h 檔案之第 72 行.
被參考於 PlayABuffer(), 及 TWavePlayer().
bool TWavePlayer::firstEcho [protected] |
int TWavePlayer::firstEchoBufferIndex [protected] |
TWavePlayerWindow* TWavePlayer::HiddenWindow [protected] |
int TWavePlayer::mode [protected] |
定義在 WavePlayer.h 檔案之第 35 行.
被參考於 EchoOff(), EchoOn(), GetMode(), GetTimeCode(), Load(), OpenPlayDevice(), OpenRecordDevice(), Play(), PlayABuffer(), Record(), RecordABuffer(), Save(), Seek(), SetBufferSize(), SetFormat(), SetWave(), StopPlay(), StopRecord(), 及 TWavePlayer().
int TWavePlayer::playBufferCount [protected] |
int TWavePlayer::recordBufferCount [protected] |
friend TWavePlayer::TWavePlayerWindow [private] |
int* TWavePlayer::wave |
聲波陣列,若為8 bits,則元素值範圍為-128到127;若為16 bits,則元素值範圍為-32768到32767。*/.
依據TWaveFile重新實作.
定義在 WavePlayer.h 檔案之第 68 行.
被參考於 Clear(), Play(), PlayABuffer(), Record(), RecordABuffer(), Resample(), Save(), SetFormat(), SetWave(), Trim(), 及 TWavePlayer().
WAVEFORMATEX TWavePlayer::waveFormat [protected] |
定義在 WavePlayer.h 檔案之第 30 行.
被參考於 GetBitRate(), GetSampleRate(), OpenPlayDevice(), OpenRecordDevice(), 及 SetFormat().
HWAVEIN TWavePlayer::waveIn [protected] |
定義在 WavePlayer.h 檔案之第 31 行.
被參考於 CloseRecordDevice(), OpenRecordDevice(), Record(), 及 RecordABuffer().
WAVEHDR TWavePlayer::waveInHdr[3] [protected] |
定義在 WavePlayer.h 檔案之第 33 行.
被參考於 CloseRecordDevice(), OpenRecordDevice(), PlayABuffer(), RecordABuffer(), 及 TWavePlayer().
HWAVEOUT TWavePlayer::waveOut [protected] |
定義在 WavePlayer.h 檔案之第 32 行.
被參考於 ClosePlayDevice(), OpenPlayDevice(), Play(), PlayABuffer(), 及 RecordABuffer().
WAVEHDR TWavePlayer::waveOutHdr[3] [protected] |
定義在 WavePlayer.h 檔案之第 33 行.
被參考於 ClosePlayDevice(), OpenPlayDevice(), Play(), PlayABuffer(), RecordABuffer(), 及 TWavePlayer().
wave陣列的長度,代表聲波的取樣數目。*/
依據TWaveFile重新實作.
定義在 WavePlayer.h 檔案之第 70 行.
被參考於 Clear(), Play(), RecordABuffer(), Resample(), Save(), SetBufferSize(), SetFormat(), SetWave(), StopRecord(), 及 Trim().