私はオーディオエディタプロジェクト用にC#でNAudio libを使用しています。私は複数のwavファイルを同時に再生するためにwasapiを使用しています。C#NAudio asioとwasapi
bool useEventSync = false;
AudioClientShareMode share = AudioClientShareMode.Shared;
wasapiOut = new WasapiOut(share, useEventSync, 50);
wasapiOut.Volume = 1.0f;
reader = new AudioFileReader(filename);
wasapiOut.Init(reader);
wasapiOut.Play();
私はこの複数のwavファイルを再生できるように私のUserControlsにこの「再生」ボタンを持っています。また、AsioOutを使用してスピーカーでマイク入力をリアルタイムで再生する別のボタンもあります。つまり、話した内容をすぐに聞くことができます。
bufferke = new BufferedWaveProvider(new WaveFormat(44100,16,2));
string[]driverek=AsioOut.GetDriverNames();
asioOut = new AsioOut(driverek[0]);
asioOut.InputChannelOffset = 0;
asioOut.InitRecordAndPlayback(bufferke, 2, 44100);
asioOut.AudioAvailable += new EventHandler<AsioAudioAvailableEventArgs>(asioout_AudioAvailable);
asioOut.Play();
そしてasioout_AudioAvailable:
private void asioout_AudioAvailable(object sender, AsioAudioAvailableEventArgs e)
{
byte[] OutputBuffer = new byte[e.SamplesPerBuffer * 4];
for (int i = 0; i < e.InputBuffers.Length; i++)
{
Marshal.Copy(e.InputBuffers[i], OutputBuffer, 0, e.SamplesPerBuffer * 4);
Marshal.Copy(OutputBuffer, 0, e.OutputBuffers[i], e.SamplesPerBuffer * 4);
}
e.WrittenToOutputBuffers = true;
}
問題は、私はwavファイルを再生すると同時に、私のASIO監視]ボタンを使用することはできませんしています。基本的に私はwavファイルを再生すると、asioの監視ボタンは単にそれらを停止します。何が間違っているのですか?
ありがとうございました。 wavファイルを 'MixingSampleProvider'に追加し、このasioOut.InitRecordAndPlayback(mix.ToWaveProvider()、2、44100)'のように初期化したAsioOutを追加しましたが、このようにしてループバック部分だけが動作します。 recordChannelsを0に変更すると、wavファイルのみが再生されます。私は間違った道にいると思う。 – definitely10