一回も披露したことのない豆知識

音ゲーを作っているのですが音をリアルタイム(実際には違いますが。)で処理をしたいのにうまくいきません。エラーはないのですが音が出なくて困っています。よろしかったら助けてください。
以下が主要部分です。
波形データを決められた時間ごとに加工して出力するプログラム。
case WM_CREATE:
 SetTimer(hWnd, ID_MYTIMER, 500, NULL);
 //500msecで更新
 フォーマットの宣言


waveOutOpen(&hWaveOut1,WAVE_MAPPER,&wfe1,0,0,CALLBACK_NULL);
Wave=(short*)calloc(wfe.nAvgBytesPerSec,10);
whdr.lpData=(LPSTR)Wave;
whdr.dwBufferLength=wfe.nAvgBytesPerSec * 10;
whdr.dwFlags=WHDR_BEGINLOOP | WHDR_ENDLOOP;
whdr.dwLoops=1;
break;
case WM_TIMER:
if (wp != ID_MYTIMER)
return DefWindowProc(hWnd, msg, wp, lp);
if(a<20){//あらかじめ宣言された変数 初期値0
for(int l*X=0;l<X(a+1)*0.5;l++){//0.5秒ごとに更新Xサンプリング周波数
Wave[2*l ]=sound[i]*G;
Wave[2*l+1]=sound[i]*G;//データ書き込み
 a++;
 }else{
 Wave[2*l ]=0;
Wave[2*l+1]=0;//データ書き込み
 }
waveOutPrepareHeader(hWaveOut,&whdr,sizeof(WAVEHDR));
waveOutWrite(hWaveOut,&whdr,sizeof(WAVEHDR));
InvalidateRect(hWnd, NULL, FALSE);
break;

A 回答 (2件)

 こんにちは。



 取り敢えず、以下URLのコードを御拝借してから、WM_TIMER対応に改造してみては如何でしょうか。

 http://www13.plala.or.jp/kymats/study/MULTIMEDIA …
    • good
    • 0
この回答へのお礼

ありがとうございます。早速コードを拝借して試してみます。

お礼日時:2009/02/16 22:50

WM_TIMER のところ, このままだとコンパイルエラー出ませんか?


あと, else の方で a をインクリメントしていないのは問題なし?
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。すいません。わかりやすいようにと画像描画のところを削ったのですが。。。
一応エラーは出ずに動きます。
elseのほうのaのインクリメントは忘れてました。

お礼日時:2009/02/16 22:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報