我想要一个程序,当它得到一个 MIDI 输入时,它可以做一些事情。
例如,当我单击控制器上的按钮 1 时,它应该打印“You clicked btn 1”,当我单击按钮 2 时,它应该打印“You clicked btn 2”。
我尝试使用 javax.sound.midi 库,但论坛或 youtube 上的所有示例都不起作用。
这对我来说最有效。它打印了我 PC 上的所有 Midi 设备,但没有收到任何东西。有人可以帮忙吗?
package de.snke.dev;
import javax.sound.midi.*;;
public class Main extends Object implements Receiver{
static MidiClass myMidi;
public static void main(String[] args) throws Exception {
MidiDevice.Info[] info =
MidiSystem.getMidiDeviceInfo();
for (int i=0; i < info.length; i++) {
System.out.println(i + ") " + info[i]);
System.out.println("Name: " + info[i].getName());
System.out.println("Description: " +
info[i].getDescription());
MidiDevice device =
MidiSystem.getMidiDevice(info[i]);
System.out.println("Device: " + device);
}
}
public void send(MidiMessage msg,
long time) {
System.out.println("Received message " + msg);
}
public void close() {
System.out.println("Closing");
}
}
编辑:现在我有
Sequencer seq;
Transmitter seqTrans;
Synthesizer synth;
Receiver synthRcvr;
try {
seq = MidiSystem.getSequencer();
seqTrans = seq.getTransmitter();
synth = MidiSystem.getSynthesizer();
synthRcvr = synth.getReceiver();
seqTrans.setReceiver(synthRcvr);
} catch (MidiUnavailableException e) {
// handle or throw exception
}
我现在连接到我的 APC Mini 了吗?抱歉,我是初学者...如果是,我现在如何阅读 midi 输入?如果没有,我需要改变什么?