waveサウンド – プログラミング – Home

通知
すべてクリア

[解決済] waveサウンド


おじゃる
 おじゃる
(@おじゃる)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

以下はwaveサウンドのプログラムです。

len=SRATE/F; //波長
for(i=0;i<SRATE*2;i++){ //波形データ作成
if(i%len < len/2) lpWave[i]=128+64;
else lpWave[i]=128-64;
}

lenは, 1波長でどれだけサンプル数があるか ですよね?
i%len len/2 というのは何をやっているのでしょうか?

教えてください。

#define SRATE 8000 //標本化周波数(1秒間のサンプル数)
#define F 400 //周波数(1秒間の波形数)

LRESULT CALLBACK WindowProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
WAVEFORMATEX wfe;
static HWAVEOUT hWaveOut;
static WAVEHDR whdr;
static LPBYTE lpWave;
int i,len;

switch(uMsg){

case WM_CREATE:
wfe.wFormatTag =WAVE_FORMAT_PCM;
wfe.nChannels =1;
wfe.wBitsPerSample =8;
wfe.nBlockAlign =wfe.nChannels * wfe.wBitsPerSample/8;
wfe.nSamplesPerSec =SRATE;
wfe.nAvgBytesPerSec =wfe.nSamplesPerSec * wfe.nBlockAlign;

waveOutOpen(&hWaveOut,WAVE_MAPPER,&wfe,
hWnd,0,CALLBACK_WINDOW);

lpWave=(LPBYTE)calloc(wfe.nAvgBytesPerSec,2); //2秒分

len=SRATE/F; //波長
for(i=0;i<SRATE*2;i++){ //波形データ作成
if(i%len < len/2) lpWave[i]=128+64;
else lpWave[i]=128-64;
}


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

1波長の半分を高く/半分を低くしてんでしょ。
矩形波を作ってんじゃないかしら。


返信引用
wclrp ( 'o')
 wclrp ( 'o')
(@wclrp ( 'o'))
ゲスト
結合: 18年前
投稿: 287
 

>lenは, 1波長でどれだけサンプル数があるか ですよね?

波長は山と山の距離のことだから1波長って数えるかどうか知らないが
それであっていると思う。

>i%len len/2 というのは何をやっているのでしょうか?

i%lenは、整数でi÷lenを計算したときのあまりのこと。

for(i=0;i<SRATE*2;i++)のiそのままでは、
波1個のサンプル数を超えてしまう。
波形を作成する計算にiそのままでは使えない。

len/2は、波の半分でありifで使用しているから
左半分と右半分で処理を分けていると想像できる。

俺だったらwaveファイルをグラフに表示してプログラムの動作確認する。
waveファイルをグラフに表示するツールを持っていないなら
以下のようにすれば判るよ。

for(i=0;i<SRATE*2;i++){ //波形データ作成
if(i%len < len/2) lpWave[i]=128+64;
else lpWave[i]=128-64;
printf(%8d\t%8d\t%8d\n,i,i%len,lpWave[i]);
}


返信引用
おじゃる
 おじゃる
(@おじゃる)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

回答どうもありがとうございます。
物理的な知識がまずしっかりしてないとダメみたいですね。

>1波長の半分を高く/半分を低くしてんでしょ。
>矩形波を作ってんじゃないかしら。

イメージがつかめましたどうもです。

>俺だったらwaveファイルをグラフに表示してプログラムの動作確認する。
>waveファイルをグラフに表示するツールを持っていないなら
>以下のようにすれば判るよ。

これは新しい発見でしたありがとうございます。

みなさん,ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました