USB键盘 - 缓冲文件

时间:2015-10-04 09:37:55

标签: c# midi naudio

我的小应用程序有另一个问题。我使用N-Audio库和外接MIDI键盘(88键)通过USB线连接到PC。

一切正常,我可以在我的MIDI键盘上播放,应用程序读取键并从资源中播放特定的Notes = .wav文件。

但问题是我玩的时间超过2分钟。在那段时间之后,声音令人毛骨悚然,它们出现了问题 - 它们听起来像是疯狂的压缩质量,最后它们完全消失了,但是应用程序仍然从MIDI键盘接收信号。

我有这样的读者(对于88个键中的每一个):

// WaveFileReader
private NAudio.Wave.WaveFileReader wave = null;
private NAudio.Wave.WaveFileReader wave0 = null;

并直接发声:

// DirectSoundOut
private NAudio.Wave.DirectSoundOut output = null;
private NAudio.Wave.DirectSoundOut output0 = null;

然后,所有声音(音符)都以这种方式播放(对于每个wave,wave0,wave1等......以及输出,output1,output2等等):

if (nutka == "C1" && msg.Velocity != 0)
{
    wave1 = new NAudio.Wave.WaveFileReader(Properties.Resources.C1);
    output1 = new NAudio.Wave.DirectSoundOut();
    output1.Init(new NAudio.Wave.WaveChannel32(wave1));
    output1.Play();
}

无法找出真正的主要问题是什么,以及如何解决它。

1 个答案:

答案 0 :(得分:2)

您不应该打开WaveOut的多个实例。相反,只需打开1并将所有输入与MixingSampleProvider

混合