たとえば、次の 2 つのオーディオ トラックをミックスするとします。
Audacity では、「Mix and Render」オプションを使用してそれらを混ぜ合わせることができ、次のようになります。
ただし、独自のコードを作成して混合しようとすると、次のようになります。
これは基本的に、サンプルをミックスする方法です。
private function mixSamples(sample1:UInt, sample2:UInt):UInt
{
return (sample1 + sample2) & 0xFF;
}
(構文は Haxe ですが、わからなくても簡単に理解できるはずです。)
これらは 8 ビットのサンプル オーディオ ファイルであり、製品も 8 ビットにしたいので、& 0xFF
.
サンプルを追加するだけで、クリッピングが予想されることは理解しています。私の問題は、Audacity を混合してもクリッピングが発生しないことです (少なくとも私のコードが発生する程度ではありません)。2 番目の (長い) トラックの「テール」を見ると、振幅が減少していないようです. 音も柔らかくなりません。
基本的に、私の質問はこれです: Audacity は何をしていて、私はしていないのですか? トラックをミックスして、トラックが重ねて再生されているかのように聞こえるようにしたいのですが、(明らかに) この恐ろしいクリッピングはしたくありません。
編集:
Radiodef が提案するように、追加する前に値に署名し、合計値の署名を解除すると、次のようになります。
ご覧のとおり、以前よりもはるかに良くなっていますが、Audacity が生成する結果と比較すると、まだかなり歪んでおり、ノイズが多くなっています。だから私の問題はまだ残っています.Audacityは何か違うことをしているに違いありません.
EDIT2:
最初のトラックを自分のコードと Audacity の両方でミックスし、歪みが発生するポイントを比較しました。これはAudacityの結果です:
そして、これが私の結果です: