我的小應用程序有另一個問題。我使用通過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