我如何将Midi消息发送到特定的Midi端口

我想将Note_On消息发送到名为LoopBe(链接到站点)的虚拟Midi接口。如何获取Receiver对象(Java)?我尝试了下面的代码,但在上收到了NullPointerException rcvr.send()。


public class test {


public static Receiver rcvr;


public static void main(String[] args) throws InvalidMidiDataException, MidiUnavailableException {

    String scene = "Test";

    getReceiver();

    ShortMessage myMsg = new ShortMessage();

    // Nachricht Channel Note Lautstärke

    myMsg.setMessage(ShortMessage.NOTE_ON, 0, 1, 127);

    rcvr.send(myMsg, -1);

    System.out.println("Szene " + scene + " ausgelöst");

}


public static void getReceiver() throws MidiUnavailableException {

    MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo();

    for(Info devices : infos )

    {

        System.out.println(devices.getName() + " : " + devices.getDescription());

        if(devices.getName() == "LoopBe Internal MIDI" && devices.getDescription() == "No details available") {

            MidiDevice device = MidiSystem.getMidiDevice(devices); 

            rcvr =  device.getReceiver();

            System.out.println("Receiver: " + rcvr.toString());

        }

    }

  }

}

我尝试了rcvr = MidiSystem.getReceiver()一下,但效果很好,但是它将消息发送到com.sun.media.sound.MidiOutDevice$MidiOutReceiver@404b9385。


qq_笑_17
浏览 208回答 1
1回答

BIG阳

您应该在使用设备之前先打开设备。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java