用java读取midi IO设备

时间:2012-04-27 17:49:52

标签: java javasound

我正在尝试解析连接到笔记本电脑的midi设备的输入。所以我想找到设备,连接到它并从中接收输入。

我从select midi device in java开始,但是我在绕过这个问题时遇到了一些麻烦。 我认为jFugue提供了一种访问java声音API的方法,但由于我没有他们的书,所以没有资源。 此外,jMusic提供了一些功能,但它主要用于midi文件IO而不是midi设备IO。 那你知道关于这个主题的任何实用教程(可能直接使用Java声音API)。

一如既往 任何帮助超过赞赏!

1 个答案:

答案 0 :(得分: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()
  • 获取设备供应商
  • 检查这是输入输出设备(如果一个“物理”设备提供输入和输出端口,它们将被视为Java中的两个设备,一个用于输入,第二个用于输出),通过调用device.getMaxReceivers()device.getMaxTransmitters()

有关详细信息,请参阅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