2017-04-14 113 views
0

NAudioとwinformsを使ってC#で非常に簡単なDAWを作ろうとしています。この段階でのプログラムの目的は、2つのオーディオファイルを再生しながらマイクから録音できるようにすることです。これまでのプロジェクトは、NAudioに付属のASIOサンプルとインターネットに関する情報の組み合わせです。NAudio ASIOミキシング

私はプレーしたい各オーディオファイルのための1 audiofilereaderオブジェクトを持っている:

private void Play() 
    { 
     // allow change device 
     if (asioOut != null && 
      (asioOut.DriverName != GetDriverOutComboBoxText() || 
      asioOut.ChannelOffset != 0)) 
     { 
      asioOut.Dispose(); 
      asioOut = null; 
     } 

     int recordChannelCount = 0; 


     mix = new MixingWaveProvider32(); 

     //Console.WriteLine("CHannels: " + mix.WaveFormat.Channels); 
     mix.AddInputStream(reader); 
     mix.AddInputStream(reader2); 
     mix.AddInputStream(reader3); 
     mix.AddInputStream(reader4); 
     Console.WriteLine("CHannels: " + mix.WaveFormat.Channels); 

     if (asioOut == null) 
     { 
      asioOut = new AsioOut(GetDriverOutComboBoxText()); 
      recordChannelCount = 1; 
      asioOut.ChannelOffset = 0; 
      asioOut.InitRecordAndPlayback(mix , recordChannelCount, 96000); 
      asioOut.AudioAvailable += OnAsioOutAudioAvailable; 

     } 

     outFileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".wav"); 
     Console.WriteLine("File: " + outFileName); 
     writer = new WaveFileWriter(outFileName, new WaveFormat(96000, recordChannelCount)); 

     reader.Position = 0; 
     asioOut.Play(); 
     timer1.Enabled = true; 
     //SetButtonStates(); 
    } 
:プレイボタンを押すと、チャネル1に開始する必要があります

reader = new AudioFileReader("Audio 8_01.wav"); 

reader2 = new AudioFileReader("Audio 9_04.wav"); 
reader3 = new AudioFileReader("Click.L.wav"); 
reader4 = new AudioFileReader("Click.R.wav"); 

オーディオクリップの再生と録音を開始すべきです

私は、同時に複数のファイルを再生できるように、mixingwaveプロバイダを使用しています。読者のオーディオファイルがステレオオーディオの場合、両方のスピーカーとmix.WaveFormat.Channelsでサウンドが得られるのは、ファイルリーダーをミキサーに追加する前後です。ファイルがモノラルオーディオの場合は、0または1に設定されたasioOut.ChannelOffsetに応じて、左右のいずれかのスピーカーで再生されます。どのオーディオファイルを再生するかをどのように設定するのか分からず、パンニングを調整できるようにしたい。モノサウンドは両方のスピーカーである程度再生されます。私は行方不明のものがあると感じています...私はMark Heathが書いたPatchbayのサンプルプログラムを見てきましたが、私はそれを私のプロジェクトにどのように適用するのか本当に分かりません。すべてのオーディオファイルは同じ形式です。

その他の問題は関連しているかもしれませんが、そうでなければ私は新しい質問を投稿します。録音中の音声は録音中には聞こえません。録画中は監視しません。ファイルを送信しているときにこの信号を同じミキサーに録音するにはどうしたらいいですか?

ありがとうございます!

答えて

0

これは遅い回答かもしれませんが、音声をパンする必要がある場合は、NAudioでWaveChannel32クラスを使用します。これは単純なVB.NETの例です:

Dim mixer As New MixingWaveProvider32() 
    Dim audioreader As New AudioFileReader("SourceFile.mp3") 
    Dim wav32 As New WaveChannel32(audioreader) 

    wav32.Pan = -0.5 

    mixer.AddInputStream(wav32) 
関連する問題