10
クリッピングせずにオーディオ信号をミックスするアルゴリズム
2つ以上のPCMオーディオチャネル(録音されたサンプルなど)を音響的に忠実に、できればほぼリアルタイム(ピークがほとんどまたはまったくない)でデジタルでミックスしたいと思います。 これを行う物理的に「正しい」方法は、サンプルを合計することです。ただし、2つの任意のサンプルを追加すると、結果の値は最大値の2倍になる可能性があります。 たとえば、サンプルが16ビット値の場合、結果は最大65536 * 2になります。これにより、クリッピングが発生します。 ここでの単純な解決策は、Nで割ることです。ここで、Nは混合されるチャネルの数です。ただし、これにより、各サンプルは1 / Nthの音量になり、完全に非現実的です。現実の世界では、2つの楽器が同時に演奏されると、各楽器の音量は半分になりません。 一般的なミキシング方法は、result = A + B-ABです。ここで、AとBは混合される2つの正規化されたサンプルであり、ABはより大きな音がますます「ソフトクリップ」されることを保証する用語です。 ただし、これにより信号に歪みが生じます。このレベルの歪みは、高品質のオーディオ合成で許容されますか? この問題を解決する他の方法はありますか?効率の悪い低品質のアルゴリズムと、効率の低い高品質のアルゴリズムに興味があります。 複数の楽器トラックを一緒にミキシングするために、デジタル音楽シンセシスのコンテキストで質問をしています。トラックは、合成オーディオ、事前に録音されたサンプル、またはリアルタイムのマイク入力です。