我想用NAudio一次播放多個MIDI樂器。我找到了關於如何演奏單個MIDI樂器的說明,並且我找到了有關如何將單個MidiEventCollection
中的多個音軌導出到文件的說明。但是,我似乎無法將這些想法放在一起。使用NAudio播放(不錄製/導出)多個MIDI音軌
下面是一些愚蠢的示例代碼我通過我的所有的MIDI樂器循環,打每一個主要的第三和諧:
var midiOut = new MidiOut(0);
for (var i = 0; i <= 127; i++)
{
midiOut.Send(MidiMessage.ChangePatch(i, 1).RawData);
midiOut.Send(MidiMessage.StartNote(60, 127, 1).RawData);
midiOut.Send(MidiMessage.StartNote(64, 127, 1).RawData);
Thread.Sleep(500);
}
這工作得很好,當然,但如果我想要一個C
和E
要用不同的樂器演奏,我會很失敗。我只有一個MIDI設備,並且一次只能有一個連接,並且MidiOut
似乎不支持添加多個音軌。
另一方面,MidiEventController
代碼看起來像是我想要的或多或少,但我只看到將它導出到文件的示例,而不是實際播放事件。我放在一起這樣的事情:
var events = new MidiEventCollection(1, 120);
var track = events.AddTrack();
var setInstrument = new PatchChangeEvent(0, 1, 66);
var play = new NoteOnEvent(0, 1, 60, 127, 1000);
track.Add(setInstrument);
track.Add(play);
但在這一點上,我無法弄清楚如何真正發揮軌道,而不是將其導出。請幫助!
@CL。完成...... – spender