2

AudioUnitsがバッファにどのような値を期待しているか知りたかったのです。現在、振幅0.5の単一周波数で正弦波のサンプルを計算すると、すべてが正常に機能します。

しかし、複数の周波数を同時に再生したい場合、たとえば一度に5つを再生し、それらを合計してサンプルをミックスすると、サンプル値が高くなり、サウンドがきれいになりません。

ですから、ダーティな音が出る前に、サンプルの最大値を知りたいのです。

4

1 に答える 1

5

OSXの場合

サンプル値は通常、以内[-1.0...1.0)で、最大値と最小値は0dBFSに対応します。ただし、より大きなサンプル値を処理する準備をする必要があります。

浮動小数点レンダリング/ミキシンググラフを使用する多くの人は、0dBFSを超えることを考慮せずに作業することに慣れています。ハードウェアまたはオーディオファイルに出力する場合にのみ、信号が0dBFSを超えないことを確認できます。

それぞれが-6dBFSの5つのサインを合計するシンセがある場合、浮動小数点数を使用して表現しているため、[-1 ... 1)を超えても、通常の状況では信号のクリッピングは発生しません。あなたの信号。

これにはいくつかの例外があります。

  • 浮動小数点ミキサーを使用しない珍しいAUホストを使用しています(活発に開発されているものは考えられません)
  • または、DACに到達する前に出力を下げない
  • または、ファイルに保存する前に出力を下げない(ただし、オーディオファイルは浮動小数点に保存することもできます)
  • 信号パスのどこかにあるコンポーネントは、浮動小数点で処理されないか、浮動小数点入力をサポートしません。これは専用のハードウェアプロセッサでは一般的ですが、最近では多くのサードパーティプラグインが浮動小数点で処理されます。

私は通常、明らかにクリップする信号を送信することによって、これを証明/反証します。もちろん、intを使用して処理することを選択したシグナルプロセッサ/ジェネレータは、クリッピングを回避するために十分なヘッドルームを残すことができます(そしてそうすべきです)(プロセッサが32ビット未満のものを使用してオーディオを処理する可能性は低いため)。

iOSの場合

iOSデバイスでは浮動小数点処理がはるかに遅いためAudioUnitSampleType、canonicはQ7.24固定小数点として指定されています。

この形式の説明はここにあります。このトピックを取り巻く投稿も参照してください。

これは浮動小数点ではないため、内部クリッピングを回避するために、ゲインステージにさらに注意を払う必要があります。

floatまた、iOSで32ビットグラフを構成できることにも注意してください。その場合、[-1.0...1.0)もちろん直接制御できない限り、出力が(OS Xと比較して)より早く非浮動小数点表現に変換される可能性があるため、プロセッサの出力を超えないようにする必要があります。処理チェーンの下流の適切なポイントでステージングを取得し、それらのポイントでの振幅を適切に調整します。

于 2012-08-24T16:29:46.343 に答える