2017-02-26 27 views
0

NAudioとASIOを使って一連のwavファイルを再生しています。オーディオカードがサポートしているだけなので、ASIOを使用する必要があります。私は、このように各wavファイルを再生することができました:NAudio ASIO再生wav

 waveRead = new WaveFileReader(completeStreamMS); //completeStreamMS is a memorystream 
    waveRead.Position = 0; 
    pcm = new WaveChannel32(waveRead); 
    reductionStream = new BlockAlignReductionStream(pcm); 
    reductionStream.Position = 0; 
    waveOutDevice.Init(reductionStream); 
    waveOutDevice.Play(); 

は、今私は、wavファイルの開始前に、サイレントの1秒を挿入する必要があります。私が見つけた唯一の方法はOffsetSampleProviderを使用することですが、私はこの

 ISampleProvider isp = WaveExtensionMethods.ToSampleProvider(waveRead); 
    var offset = new SampleProviders.OffsetSampleProvider(isp); 
    offset.DelayBy = TimeSpan.FromSeconds(1); 
    var wp = new SampleProviders.SampleToWaveProvider(offset); 
    waveOutDevice.Init(wp);` 
    waveOutDevice.Play(); 

のように行う場合は、最初のwavファイルはうまく果たしている、しかし、すぐに、私は停止として()waveOutDeviceまたは私は新しいものを再インスタンス化しようとしますプログラムの実行はその位置で停止します

System.ExecutionEngineException 
Cannot intercept exception. Debugged program can not be continued and properties can not be evaluated. 

私はその理由を理解できません。助けてください。 ありがとう

答えて

0

ASIOの場合は、出力デバイスを一度開いて再生してから入力を変更する方がよいでしょう。たとえば、入力として使用されているMixingSampleProviderからアイテムを追加したり削除したりできます。

関連する問題