オーディオ周りが実装完了した。 BGMと音声と効果音のオブジェクトがDirectSoundオブジェクトにぶら下がって、Vや生成破棄のイベントが伝わってくる感じ。
BGMは4秒程度のリングバッファでV毎に残量を確認して読み込む感じ。 効果音も4秒程度のリングバッファでV毎に残量を確認して読み込む感じ。 ただし、微妙に利用方法やチューニングのポイントが違ったので別クラスにした。 BGMは同時に1声。次の再生リクエストが来た時に、再生中のBGMと同じだったらそのまま継続したり、違うBGMだったら自動的にフェードアウトしたり、末尾まで再生したら先頭でない指定位置に戻したりをサポートしたかったので。 逆にVoiceは同時に複声。再生が終わったかどうか判断するインタフェースが必要だったりしたので。
SEはメモリに常にデータを残しておいて、8本あるDSBufferに適宜コピーするようにした。 再生が終わってもDSBufferにデータを残しておいて、コピー回数を減らすようにした。 いわゆるキャッシュ的な仕掛け。
っていうかそんなリッチに作る必要はなかったかも… |