2013-09-22 27 views
1

我是JAVA MIDI的新手,我遇到了一個問題。我想加載一個MIDI文件,然後爲每個音軌使用每個樂器的名稱設置一對標籤。例如如果MIDI文件有5個軌道(每個軌道只有一個樂器),那麼我會得到5個標籤,每個標籤有每個軌道上使用的樂器名稱。加載樂器

是否有任何方法可以查看MIDI文件(函數,方法...)中每個軌道使用了什麼樂器?

回答

1

一旦你在安排中隔離了每個音軌,就有兩種不同的方式來確定應該播放它的樂器。

一個是ID爲0x04的MIDI元信息將以樂器名稱顯示爲字符串。有關詳細信息,請參閱此great page detailing the MIDI file format

第二種方法是在音軌的開頭會出現一個MIDI程序改變信息。假設MIDI文件設置爲使用GM(通用MIDI)樂器,則可以將程序更改消息的數據關聯到GM instrument

請注意,程序更改允許出現在MIDI軌道的任何位置,順控程序應相應地處理它們。雖然大多數MIDI文件在野外看到的都不會使用軌道中間的程序變化,但請記住,這是標準允許的,可能會發生。

1
  1. 獲取MIDI文件的Sequence
  2. 獲取序列的Track對象。
  3. 獲取曲目的MidiEvent對象。
  4. 獲取事件的MidiMessage。這將包含有關(除其他外)儀器更改的信息。