サウンドの仕組み Edit

OpenALを使い始めてきたのでサウンドの仕組みを考えてみる。
カタカナのそれっぽい言葉は適当です。

全体 Edit

サウンドの処理は

  • バッファリング
  • コマンドハンドリング
    が考えられる。
    これは「メインスレッド」と呼ばれるゲームの進行を処理するスレッドとは別のスレッドで処理するほうが簡単。
    (同じスレッドで処理してしまうと処理落ちしたら音がとぎれやすくなる)

バッファリング Edit

バッファリングとは、非圧縮波形をバッファと呼ばれる領域にセットする処理のこと。
バッファリングは2種類考えられる。

マルチバッファ再生
いわゆるストリーミング再生。
バッファを複数用意して、片方のバッファの再生が終わったらそのバッファを捨て、新しいバッファを追加する。
オンメモリの圧縮オーディオを展開しつつ再生する場合や
ファイルからストリーミングで再生する場合に有効。
ワンバッファ再生
再生する波形を一気にバッファリングしてから再生する。
効果音など短い波形に有効。
ワンバッファするとメモリ効率が悪いけど展開処理が必要ないためCPUには優しい。

まぁマルチバッファしか使わないと思うけどねっ。

コマンドハンドリング Edit

コマンドとは、「再生」「停止」「音量設定」などの命令を指しこれはメインスレッドが発行する。
メインスレッドが発行したコマンドを、サウンドのスレッドが実際に適用する。
このことをコマンドハンドリングと呼んでみる。


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes
Last-modified: (5320d)