2009-05-18 10 views
2

2つのオーディオファイルをミックスする必要があります。オーディオ1は静的なファイルになり、オーディオ2の「タグ付け」に使用されます。明確にするために、私はID3タグではなくオーディオタグについて話しています。どのようにC#で2つのオーディオファイルをレイヤーできますか?

私は頭を包むことができない2つの基本的な問題があります。

1)結果が音声2と同じ長さになるように、音声2を混合した場合、どのように音声1を繰り返すことができますか?

2)オーディオ2はMP3になります。再エンコードして品質を低下させたくありません。

これをC#でどのように行うことができるかに関するライブラリやアイデアは非常に高く評価されます。

答えて

2

mp3をwave形式にデコードし、ミキシングしてmp3形式にエンコードする必要があります。

誰かがあなたにいくつかのmp3ライブラリを指摘する必要があります。私は実際の混合であなたを助けることができます。

これは実際にどのように動作するのか涼しいです。サウンドファイルは、特定の間隔で記録された振幅サンプルの束です。 [OK]を、それは本当に短い音

0、12、128、14、-1、-13、-128、-64、-32

ですが、ハング:これは、例えば、音かもしれません私と一緒に。私はこの音で上記の音をミックスしたいと言う:

10、-12、-100、-150、-75、-25、-12、-0

これはクールな部分であり、私達はちょうど二つの配列を一緒に追加する:

10、0、28、-136、-76 ...

0 + 10 = 10 12 + -12 = 0 128 + -100 = 28 .. 。

あなたが本当に気を付けなければならない唯一の事は、波のファイルに保存できる振幅の限界。これらのほとんどは16ビットですが、8ビットのWaveファイルを作成することはできます。あなたの振幅がウェーブファイルの限界を超えている場合は、可能な限り高くするか低くする必要があります。

とにかく、それはそれのジストです。より細かい点は、解決する必要があります。

+1

異なるビット深度のオーディオファイルをレイヤーするときに考慮すべき事項があります。 8ビットファイルと16ビットファイルをブレンドしようとすると、16ビットファイルの精度が向上します。追加する前に、8ビットのファイルまたは16ビットのファイルをスケールダウンする必要があります。 – jrista

+0

確かに。これは私に思い出させる。オーディオをミキシングするもう一つの要素はボリュームです。ミックスするたびに、基本的にボリュームを追加しています。あなたのウェーブボリュームがかなり上回っている(音楽が多い)場合は、元のサンプルをループして最高/最低のピークを見つけて、このピークまで混合オーディオを正規化する必要があります。これは、2つの本当に大きな(?)サウンドサンプルをミキシングするときに、多くのピークを切り捨てないように、より広い範囲(32ビット整数など)の中間データタイプを使用することを意味します。正規化後、サウンドを16/8ビット形式で保存することができます。 –

4

これを行うにはNAudioを使用できます。 WaveFileReaderクラスを使用して、各ファイルから読み込むことができるWaveStreamを作成します(MP3をPCMに最初に変換する必要があります - NAudioデモコードのMp3FileReaderの使用を参照してください)。そして、丸めたWaveStreamを作成します(つまり、ソースデータの終わりに戻ると、先頭に戻ります)。

その後、WaveMixerStream32を使用してそれらを混合します。 (32ビットに変換する必要があります - これを行うにはWaveChannel32を使用してください)。このクラスでは、各ファイルの音量レベルを設定することもできます。最後に、Wave32To16Streamを使用して16ビットに変換し、WaveFileWriterを使用して最終ファイルを作成します。次に、LAMEを使用してMP3に変換します。

+0

WaveChannel32は私が使用しようとするたびに、「オフセットと長さが配列の範囲外であるか、またはカウントがソースコレクションの終わりまでのインデックスから要素の数よりも大きい」というエラーを表示しています。なぜどんなアイデア? (http://naudio.codeplex.com/Thread/View.aspx?ThreadId=79458に関する詳細) – Pablo

+0

こんにちは、例を挙げてもっと説明していただけますか?私はNaudioで新しいです ありがとう –

0

私はBASSライブラリを提案します。 「ミキシング」するだけでなく、多くのフォーマットを再生できるほか、EQ /フェード/コンプレッサーなどのDSPも使用できます。http://un4seen.com/bass.html

関連する問題