質問
2つのファイルから生のオーディオバイトを新しいwavファイルに書き込んで、2つのファイルを結合しています。作成された結果のファイルには両方のオーディオクリップの内容が含まれていますが、ファイルには多くのノイズも含まれています。
生のオーディオバイトをファイルに書き込む方法を示す良い例を誰かに教えてもらえますか?これが私がフォローしている基本的なロジックです
SInt32 leftSample1 = ReadSampleFromFile1(music_iter1);
leftSample1 = (SInt32)((float) leftSample1 * 0.7071); //to avoid clipping
SInt32 leftStereoSample2 = ReadLeftSample(music_iter2);
leftStereoSample2 += leftSample1;
if (leftStereoSample2 > 32767)
leftStereoSample2 = 32767;
else if (leftStereoSample2 < -32768
leftStereoSample2 = -32768;
// write leftStereoSample2 to the file
//do the same as left sample to right sample also
++music_iter2;
++music_iter1;
ありがとう。
解決
これらがtrueを返す回数は?
if (leftStereoSample2 > 32767)
leftStereoSample2 = 32767;
else if (leftStereoSample2 < -32768
leftStereoSample2 = -32768;
クリッピングしていないからといって(強制しないため)、波を切り捨てたときにアーティファクト(歪み)などが発生しないわけではありません。私はそれがどれくらいの頻度で起こっているかを見るでしょう。
コアオーディオにはミキサーがあります。賢い人たちはすでにこの種のものに対処するコードを書いているので、そうする必要はありません:) MultiChannelMixerはステレオミキシングを行うものです。確認してください。
他のヒント
65535および-65536のテストは正しくありません(17ビットが必要です)。 32767と-32768を試してください。
「クリッピングを防ぐ」ためのコード行がわからない実際に仕事をしています。参加する前に両方ストリームを効果的に拒否する必要はありませんか?
2つのはるかに静かなファイルを組み合わせてみてください。そして、両方のファイルで0.7071の代わりに、0.5を試してください。または、Aranの提案に従って、MultiChannelMixerを使用します。
所属していません StackOverflow