今実験してるプログラムで、サンプリング音(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マスターには当分慣れそうもない。