OpenALでプチノイズ

2011/01/18

今実験してるプログラムで、サンプリング音(ACCフォーマット)を連続で鳴らす時に サンプリングによってはプチノイズがはいってしまいます。 DAWをやった事がある人なら経験してると思いますが、 波形のつなぎ目で急激な変化が起こって「プチッ」となるやつです。

えっと、AudioQueueServicesとかでも試しましたが、波形のつなぎ目とかじゃなくても途中で停止すると「プチッ」って鳴りました。 サンプル音がどこで切れるかが重要なんですね。

サンプリング音を長め(4秒弱)にしているので、音が消える前に無理矢理オフにしてしまうので不自然です。

手法的に考えられるのは。

(1) サンプリング音終わりをゲインを0に近づける (2) サンプリング音を短めに作り直して、Attack, Decay, Sustain, Releaseのシンセ方式にする (3) 短いサンプル音を作って音をわける

の2つだとは思います。

理想は(2)なんでしょうけど、OpenALでどうするんだろう?

ちなみに、OpenALの日本語でまとめられたWikiがあります。 OpenAL Wiki

alSourcefにAL_GAINを与えて音量を調節する方法や、Doppler Shift(ドップラー効果)になるんだろうけど、 どの方法が一般的なんだろうか? OpenALマスターには当分慣れそうもない。