0

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

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

与往常一样,任何帮助都将不胜感激!

4

1 回答 1

2

查看 Java 声音教程: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()and 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

于 2012-10-01T14:10:10.953 回答