Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JackMidi.eventWrite-时间参数_Java_Jna_Midi_Jack - Fatal编程技术网

Java JackMidi.eventWrite-时间参数

Java JackMidi.eventWrite-时间参数,java,jna,midi,jack,Java,Jna,Midi,Jack,我正在使用这个库: 我创建了一个简单的项目来重现我的问题: 我有一个JackPort outputPort正在运行,并出现在QjackCtl的“输出端口”中 在QjackCtl中,此输出端口连接到GMIDImonitor,以观察Midi通信量。 我通过下面的方法向GMIDImonitor发送MIDI消息。 我无法计算时间参数的值。 当我设置time=jackClient.getFrameTime()时,消息不会到达GMIDImonitor。 例如,当我将其设置为300时,一条消息将在循环中永久发

我正在使用这个库:

我创建了一个简单的项目来重现我的问题:

我有一个JackPort outputPort正在运行,并出现在QjackCtl的“输出端口”中

在QjackCtl中,此输出端口连接到GMIDImonitor,以观察Midi通信量。 我通过下面的方法向GMIDImonitor发送MIDI消息。 我无法计算时间参数的值。 当我设置
time=jackClient.getFrameTime()
时,消息不会到达GMIDImonitor。 例如,当我将其设置为300时,一条消息将在循环中永久发送

有什么帮助吗?谢谢

public void processMidiMessage(ShortMessage shortMessage) {
    System.out.println("processMidiMessage: " + shortMessage + ", on port: " + this.outputPort.getName());
    try {
        JackMidi.clearBuffer(this.outputPort);
    } catch (JackException e) {
        e.printStackTrace();
    }
    try {
        int time = 300;
        JackMidi.eventWrite(this.outputPort, time, shortMessage.getMessage(), shortMessage.getLength());
    } catch (JackException e) {
        e.printStackTrace();
    }
}

看起来
time
是一个偏移量,因此
getFrameTime()
是一个相当大的数字,“永不到达”可能意味着未来很长一段时间。会议讨论了按顺序发送邮件的问题。您是否尝试过使用
0
1
?这是否回答了您的问题@DanielWiddis谢谢你抽出时间。我尝试了0和1,这些值也会导致循环。我会看看你提到的链接。有一些基本的东西我不明白。我创建了一个简单的项目。我认为MIDI消息应该在ProcessCallBack上处理,但我不知道如何处理。通过向队列添加消息并在ProcessCallBack中处理队列解决了这个问题。0是一个有效的时间值。看起来
time
是一个偏移量,因此
getFrameTime()
是一个相当大的数字,“永不到达”可能意味着未来很长一段时间。会议讨论了按顺序发送邮件的问题。您是否尝试过使用
0
1
?这是否回答了您的问题@DanielWiddis谢谢你抽出时间。我尝试了0和1,这些值也会导致循环。我会看看你提到的链接。有一些基本的东西我不明白。我创建了一个简单的项目。我认为MIDI消息应该在ProcessCallBack上处理,但我不知道如何处理。通过向队列添加消息并在ProcessCallBack中处理队列解决了这个问题。0是时间的有效值