2012-04-27 61 views
0

我想解析連接到我的筆記本電腦的MIDI設備的輸入。所以我想找到設備,連接到它並接收來自它的輸入。用java讀取midi IO設備

我從select midi device in java開始,但我在解決這個問題時遇到了一些麻煩。 我認爲jFugue提供了一種訪問java聲音API的方式,但由於我沒有他們的書,所以沒有資源。 另外,jMusic提供了一些功能,但它主要是用於MIDI文件IO而不是MIDI設備IO。 所以你知道關於這個主題的任何實用教程(可能直接使用Java聲音API)。

一如既往, 任何幫助,超過讚賞!

回答

1

看看Java Sound教程:http://docs.oracle.com/javase/tutorial/sound/accessing-MIDI.html它包含Java MIDI API的很好的解釋,並且還包含有關如何枚舉設備的示例源代碼。

有下面的示例源代碼:

// Obtain information about all the installed synthesizers. 
Vector synthInfos; 
MidiDevice device; 
MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo(); 
for (int i = 0; i < infos.length; i++) { 
    try { 
    device = MidiSystem.getMidiDevice(infos[i]); 
    } catch (MidiUnavailableException e) { 
     // Handle or throw exception... 
    } 
    if (device instanceof Synthesizer) { 
    synthInfos.add(infos[i]); 
    } 
} 
// Now, display strings from synthInfos list in GUI. 

當你獲得MIDI設備,你可以(在以前的源代碼)

  • 獲得設備名稱通過調用infos[i].getName
  • 獲得設備供應商通過調用infos[i].getVendor()
  • 檢查這是輸入還是輸出設備(如果一個「物理」設備提供輸入和輸出端口通過調用device.getMaxReceivers()device.getMaxTransmitters(),它們將被視爲Java中的兩個設備,一個用於輸入,另一個用於輸出)。

有關詳細信息,請參閱API文檔: - http://docs.oracle.com/javase/1.5.0/docs/api/javax/sound/midi/MidiDevice.html - http://docs.oracle.com/javase/1.5.0/docs/api/javax/sound/midi/MidiDevice.Info.html