DirectSoundにて曲の再生をしています。
Sin波の「A(ラ)」が録音されたwavを再生しており、全体の秒数は1秒で、最初の0.5秒は無音です。
そのためDSBPLAY_LOOPINGではなくSetCurrentPositionにてループ再生を行いたいと思っています。
そこで作ったコードが以下のコードです。
c
1DWORD Status; 2lpSec->GetStatus(&Status); 3if((Status & DSBSTATUS_PLAYING) == 0){ 4 lpSec->SetCurrentPosition(WavSize / 10 * 5); 5 lpSec->Play(0,0,0); 6} 7//もし再生が終了したら0.5秒からループ開始
1回目のループは上手く行きますが、2回目以降でループする際に無音が入ります。
この無音を無くすにはどうすればいいでしょうか?
【追記】
c
1DWORD Status; 2lpSec->GetStatus(&Status); 3if((Status & DSBSTATUS_PLAYING) == 0){ 4 lpSec->SetCurrentPosition(WavSize / 10 * 5); 5} 6//もし再生が終了したら0.5秒からループ開始 7lpSec->Play(0,0,0);
のように書き換えたら正常に動作しましたが、60FPSにフレームレートを設定すると、
無音が入ってしまいました。
ちなみに60FPSに設定する前は4000FPSほどで動作していました。
【環境】
VisualStudio2012
DirectXSDK June 2010
Windows7 32bit
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/24 19:55