* サウンドの仕組み [#cc2a1709] OpenALを使い始めてきたのでサウンドの仕組みを考えてみる。 カタカナのそれっぽい言葉は適当です。 #contents ** 全体 [#q8f4c74b] サウンドの処理は - バッファリング - コマンドハンドリング が考えられる。 これは「メインスレッド」と呼ばれるゲームの進行を処理するスレッドとは別のスレッドで処理すべき。 これは「メインスレッド」と呼ばれるゲームの進行を処理するスレッドとは別のスレッドで処理するほうが簡単。 (同じスレッドで処理してしまうと処理落ちしたら音がとぎれやすくなる) ** バッファリング [#z379ad7d] バッファリングとは、非圧縮波形をバッファと呼ばれる領域にセットする処理のこと。 バッファリングは2種類考えられる。 :マルチバッファ再生| いわゆるストリーミング再生。 バッファを複数用意して、片方のバッファの再生が終わったらそのバッファを捨て、新しいバッファを追加する。 オンメモリの圧縮オーディオを展開しつつ再生する場合や ファイルからストリーミングで再生する場合に有効。 :ワンバッファ再生| 再生する波形を一気にバッファリングしてから再生する。 効果音など短い波形に有効。 ワンバッファするとメモリ効率が悪いけど展開処理が必要ないためCPUには優しい。 まぁマルチバッファしか使わないと思うけどねっ。 ** コマンドハンドリング [#xec5a4c8] コマンドとは、「再生」「停止」「音量設定」などの命令を指しこれはメインスレッドが発行する。 メインスレッドが発行したコマンドを、サウンドのスレッドが実際に適用する。 このことをコマンドハンドリングと呼んでみる。 |