TWavePlayer 類別 參考文件

#include <WavePlayer.h>

類別TWavePlayer的繼承圖:

TWaveFile 全部成員列表

公開型態

 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
TWavePlayerWindowHiddenWindow
bool echoOn
bool firstEcho

私有屬性

friend TWavePlayerWindow

詳細描述

這是一個可以錄音、放音,同時可以有迴音的效果,及讀寫wav檔的類別。 不過只限於mono單音。讀寫wav檔使用的是TWaveFile類別。 它繼承了Speaker類別,所以可以監聽錄音完畢和播放完畢兩個訊息。

定義在 WavePlayer.h 檔案之第 26 行.


列舉型態成員說明文件

anonymous enum

列舉值:
EVENT_RECORD_BUFFER  若要監聽錄了一個buffer的訊息,可以利用AddListener函式,把此常數當做第一個參數。
EVENT_PLAY_BUFFER  若要監聽播了一個buffer的訊息,可以利用AddListener函式,把此常數當做第一個參數。
EVENT_RECORD_COMPLETE  若要監聽錄音完畢的訊息,可以利用AddListener函式,把此常數當做第一個參數。
EVENT_PLAY_COMPLETE  若要監聽播放完畢的訊息,可以利用AddListener函式,把此常數當做第一個參數。

定義在 WavePlayer.h 檔案之第 48 行.

anonymous enum

列舉值:
IDLE 
RECORDING 
PLAYING 

定義在 WavePlayer.h 檔案之第 60 行.


建構子與解構子說明文件

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 (  ) 

解構子。

定義在 WavePlayer.cpp 檔案之第 62 行.

參考 Clear(), HiddenWindow, StopPlay(), 及 StopRecord().


函式成員說明文件

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]

定義在 WavePlayer.cpp 檔案之第 239 行.

參考 waveIn, 及 waveInHdr.

被參考於 StopRecord().

void TWavePlayer::EchoOff ( void   ) 

關閉迴音。.

關閉迴音。

定義在 WavePlayer.cpp 檔案之第 382 行.

參考 ClosePlayDevice(), echoOn, mode, 及 RECORDING.

void TWavePlayer::EchoOn ( void   ) 

開啟迴音,但必須在錄音或放音狀態下才有作用。

開啟迴音,但必須在錄音或放音狀態下才有作用。

定義在 WavePlayer.cpp 檔案之第 371 行.

參考 echoOn, firstEcho, mode, OpenPlayDevice(), 及 RECORDING.

int TWavePlayer::GetBitRate ( void   )  [virtual]

取得聲波每個的取樣bit數。

取得聲波每個的取樣bit數。

傳回值:
聲波每個的取樣的bit數,其值為8或16。

依據TWaveFile重新實作.

定義在 WavePlayer.cpp 檔案之第 80 行.

參考 waveFormat.

被參考於 Save(), 及 SetFormat().

int TWavePlayer::GetBufferSize ( void   ) 

取得錄音及放音時的buffer大小。

取得錄音及放音時的buffer大小。預設值為建構子sampleRate參數的1/5。

傳回值:
錄音及放音時的buffer大小。

定義在 WavePlayer.cpp 檔案之第 150 行.

參考 bufferSize.

float TWavePlayer::GetDuration ( void   )  [virtual]

取得聲波的長度,單位是秒。相當於 waveSize 除以 GetSampleRate

傳回值:
聲波的長度。

依據TWaveFile重新實作.

定義在 WavePlayer.cpp 檔案之第 392 行.

參考 duration.

int TWavePlayer::GetMode ( void   ) 

取得目前狀態。

取得目前狀態。

傳回值:
0表示沒有在錄音或放音,1則表示在錄音,2則表示在放音。

定義在 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   ) 

取得迴音的狀態。

取得迴音的狀態。

傳回值:
true表示已開啟迴音,false表示已關閉迴音。

定義在 WavePlayer.cpp 檔案之第 85 行.

參考 echoOn.

bool TWavePlayer::Load ( char *  name  )  [virtual]

載入一個wav檔。

載入一個wav檔。

參數:
name 為wav檔檔名。
傳回值:
true表示載入成功,false表示失敗。

依據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().

被參考於 EchoOn(), Play(), 及 Record().

bool TWavePlayer::OpenRecordDevice ( void   )  [protected]

定義在 WavePlayer.cpp 檔案之第 215 行.

參考 bytesPerBuffer, TWaveFile::bytesPerSample, mode, RECORDING, waveFormat, waveIn, waveInHdr, 及 WavePlayerInProc().

被參考於 Record().

bool TWavePlayer::Play ( void   ) 

播放聲波。若原本在錄音狀態,則會先停止錄音。若已開啟迴音,則會同時聽到迴音。

傳回值:
true表示成功開始放音,false表示無法放音。

定義在 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 最多要錄的秒數。
傳回值:
true表示成功開始錄音,false表示無法錄音,有可能是同時有其他程式在錄音。

定義在 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檔檔名。
傳回值:
true表示儲存成功,false表示失敗。

依據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。

傳回值:
true表示已開啟迴音,false表示已關閉迴音。

定義在 WavePlayer.cpp 檔案之第 155 行.

參考 bufferSize, bufferTotal, bytesPerBuffer, TWaveFile::bytesPerSample, IDLE, mode, 及 waveSize.

被參考於 TWavePlayer().

void TWavePlayer::SetFormat ( int  newSampleRate,
int  newBitRate 
) [virtual]

設定聲波的取樣頻率和取樣bit數。若當時正在錄音或放音,則此函式沒有任何作用。 若呼叫此函式時有聲波存在,會把聲波調整成符合新的格式,影響到 wavewaveSize 的值。

參數:
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.

被參考於 Load(), 及 SetWave().

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().

int TWavePlayer::echoVolume

迴音音量。越大則迴音持續越久,但相對的原本聲音的音量會變小。直接改變此值會直接影響正在播放的迴音音量。*/

定義在 WavePlayer.h 檔案之第 72 行.

被參考於 PlayABuffer(), 及 TWavePlayer().

bool TWavePlayer::firstEcho [protected]

定義在 WavePlayer.h 檔案之第 38 行.

被參考於 EchoOn(), Record(), 及 RecordABuffer().

int TWavePlayer::firstEchoBufferIndex [protected]

定義在 WavePlayer.h 檔案之第 34 行.

被參考於 PlayABuffer(), 及 RecordABuffer().

TWavePlayerWindow* TWavePlayer::HiddenWindow [protected]

定義在 WavePlayer.h 檔案之第 37 行.

被參考於 PlayABuffer(), RecordABuffer(), TWavePlayer(), 及 ~TWavePlayer().

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]

定義在 WavePlayer.h 檔案之第 34 行.

被參考於 Clear(), GetTimeCode(), Play(), PlayABuffer(), 及 Seek().

int TWavePlayer::recordBufferCount [protected]

定義在 WavePlayer.h 檔案之第 34 行.

被參考於 Clear(), GetTimeCode(), 及 RecordABuffer().

friend TWavePlayer::TWavePlayerWindow [private]

定義在 WavePlayer.h 檔案之第 28 行.

被參考於 TWavePlayer().

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().

int TWavePlayer::waveSize

wave陣列的長度,代表聲波的取樣數目。*/

依據TWaveFile重新實作.

定義在 WavePlayer.h 檔案之第 70 行.

被參考於 Clear(), Play(), RecordABuffer(), Resample(), Save(), SetBufferSize(), SetFormat(), SetWave(), StopRecord(), 及 Trim().


此類別(class) 文件是由下列檔案中產生:
產生日期:Tue Jul 11 11:52:20 2006, 專案:cbmr, 產生器:  doxygen 1.4.7