我的小应用程序有另一个问题。我使用通过USB电缆连接到PC的N-Audio库和外部MIDI键盘(88键)。USB键盘 - 缓冲文件
一切正常,我可以在我的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;
,然后,所有的声音(音符)播放这样(为每一波,wave0,WAVE1,等...输出,输出1,输出2,等...):
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();
}
不能找出实物主要公关问题是,我该如何解决它。
混合考虑使用字段“波形”和“输出”创建结构。然后,您可以创建'map',其中'note'(字符串)是关键字,所提及的结构就是该值。然后,你可以写: 'if(msg.Velocity!= 0){myMap [nutka] .wave = new ...; ... myMap [nutka] .output.Play();}' 而不是可怕的'if'链;) –
你在哪里清理所有这些对象? –
你是什么意思“清洁物体”?任何建议如何做到这一点? – Martin