2つの16ビットリニアPCMオーディオストリームを一緒にミキシングしようとしましたが、ノイズの問題を克服できないようです。サンプルを混ぜるときのオーバーフローから来ていると思います。
私は以下の機能を持っています...
short int mix_sample(short int sample1, short int sample2)
{
return #mixing_algorithm#;
}
...そしてこれが私が#mixing_algorithm#として試したものです
sample1/2 + sample2/2
2*(sample1 + sample2) - 2*(sample1*sample2) - 65535
(sample1 + sample2) - sample1*sample2
(sample1 + sample2) - sample1*sample2 - 65535
(sample1 + sample2) - ((sample1*sample2) >> 0x10) // same as divide by 65535
それらのいくつかは他のものよりも良い結果を生み出しましたが、最高の結果でさえかなり多くのノイズを含んでいました。
それを解決する方法はありますか?