[英]How can I intercept MIDI messages?
我正在编写一个应用程序来控制Novation的启动板设备(对于那些熟悉的人)。 启动板安装了两个MIDI设备:一个用于输入(按下按钮),另一个用于输出(控制LED)。
我的想法是,从启动板收到消息后,我要发送一系列其他消息。 最好的方法是什么?
现在,我将输入设备的发送器链接到输出设备的接收器,以便将接收到的每条消息直接发送回启动板:
Transmitter lpTransmitter = inputDevice.getTransmitter();
lpTransmitter.setReceiver(outputDevice.getReceiver());
我设法自己找到了解决方案。 我所做的是使用自己的Transmitter和Receiver实现将设备链接在一起。 据我了解,MIDI消息是这样的:
启动板输入-> inputDevice的接收器-> inputDevice的发送器->我自己的接收器->(我的计算)->我自己的发送器-> outputDevice的接收器-> outputDevice的发送器-> launchpad输出。
现在请耐心等待,因为我不知道这是否是正确的方法 ,但是我的代码如下:
// main
// get launchpad devices, open them
MyMidiDevice myDevice = new MyMidiDevice();
inputDevice.getTransmitter().setReceiver(myDevice);
myDevice.setReceiver(outputDevice.getReceiver());
MyMidiDevice类的代码:
public class MyMidiDevice implements Transmitter, Receiver
{
private Receiver receiver;
@Override
public Receiver getReceiver()
{
return this.receiver;
}
@Override
public void setReceiver(Receiver receiver)
{
this.receiver = receiver;
}
@Override
public void close()
{
}
@Override
public void send(MidiMessage message, long timeStamp)
{
System.out.println(message); // computations
this.getReceiver().send(message, timeStamp);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.