そこで、キーボードと、オーディオ サンプルをトリガーする他のいくつかのボタンを備えた小さなアプリケーションを構築しています。
このアプリケーションには、ミュート/ミュート解除できる事前に録音されたオーディオ トラック (ドラム、ボーカル、ギター) がいくつかあります。その部分は AVAudioPlayer で正常に動作しています。
しかし、ほとんどの人が知っているように、AVAudioPlayer は少し遅く、ドラム ヒットまたはシンセの小さなオーディオ サンプルをトリガーするように割り当てられている場合、ある程度の遅延が発生します。そこで、SystemSoundServices を実装して短いサウンド サンプルを再生しました。ボタンを押してからサウンドが再生されるまでのレイテンシーに関しては問題なく動作していますが、少し問題があります。サンプルを 2 回繰り返したたくと、小さなポップ音が聞こえます。これは、2 回目にボタンを押したときに最初のサンプルの再生が中断されるためです。
基本的にサンプルが再生されているかどうかを検出し、再生されている場合は音量を0に設定し、再生を停止してから、サンプルを再度再生することでこれを解決したいと思います。残念ながら、systemsoundservices にはこの機能が組み込まれていません。AVAudioPlayer には組み込まれていますが、遅すぎます。CoreAudio、AudioQueue、Open AL があることは知っていますが、これらはすべて、私がしなければならないことを複雑にするために WAYYY のようです。あらゆる種類のオーディオ処理を行う必要はありません。
短いオーディオ クリップを再生するためだけに 100 行のコードを記述する必要がないオーディオ フレームワークの提案はありますか? すべてが、CoreAudio/AudioQueue/OpenAL の学習に何週間も費やすように私に指示しているようです。