2

私の AudioInputRenderCallback では、特定のオーディオ イベントの正確なタイム スタンプを取得しようとしています。私のコードをテストするために、@120BPM または 500 ミリ秒ごとにクリック トラックを入力しています (クリックは正確で、私が確認し、再確認しました)。最初にすべてのサンプルのデシベルを取得し、それがしきい値を超えているかどうかを確認します。これは期待どおりに機能します。次に、AudioTimeStamp から hostTime を取得し、ミリ秒に変換します。最初のクリックはその静的タイムスタンプに割り当てられ、2 回目は間隔の計算を行ってから、静的タイムスタンプに再割り当てします。500 の間隔が表示されると予想していました。クリックを正しく計算できるようにするには、5 ミリ秒以内にする必要があります。数値は 510 と 489 の間を行ったり来たりするようです。RTOS ではないことは理解していますが、しかし、iOSはこれほど正確でしょうか? AudioUnitTimeStamp の mach_absolute_time メンバーの使用に問題はありますか?

4

1 に答える 1

1

Audio Units はバッファベースです。iOS Audio Unit バッファの最小長は約 6 ミリ秒のようです。したがって、バッファ コールバックのタイムスタンプを使用すると、時間分解能または時間サンプリング ジッタは約 +- 6 ミリ秒になります。

Audio Unit バッファ内の実際の未加工の PCM サンプルを見て、パターンが「攻撃」トランジェント (しきい値または自己相関などによる) と一致する場合、サブミリ秒の解像度を取得できる可能性があります。

于 2013-02-25T20:31:09.737 に答える