java - 用java读取midi IO设备

标签 java javasound

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

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

一如既往, 任何帮助都非常感谢!

最佳答案

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

关于java - 用java读取midi IO设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10355456/

相关文章:

java - 在 Java 中播放 wavs

java - java midi 测试代码中不播放简单的声音

java - 如何在程序中添加背景音乐?

java - Java中生成随机数组

Java 线程和垃圾收集器

java - 玩2.2 不带插件启动DefaultApplication

java - Java Sound Api:将记录保存到磁盘后无法播放Wav文件

java - 在导入语句附近显示错误 - STS

Java RTP/HTTP 流媒体

java - 如何使用 java 声音 API 从麦克风捕获声音?