gpt4 book ai didi

C++ - RtMidi 不向输出端口发送任何内容

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:26 29 4
gpt4 key购买 nike

我正在开发一个使用 RtMidi 与 MIDI 应用程序通信的程序。

编译、打开输入和输出端口、读取输入端口也能正常工作,但是当我用输出端口发送消息时,没有任何反应。也不异常(exception),终端没有消息,一切似乎都正常,但其他应用程序永远不会收到 MIDI 消息。

$uname
Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt7-1 (2015-03-01) x86_64 GNU/Linux

音频服务器是 ALSA 1.0.28。

$ cat/proc/asound/version
Advanced Linux Sound Architecture 驱动版本 k3.16.0-4-amd64。

MidiConnection::MidiConnection(QString Name, QObject *Object) : QThread(Object)
{
/*...*/
midiIn = new RtMidiIn(RtMidi::UNSPECIFIED, "Mecanique");
midiIn->openPort(0, Name.toStdString());

midiOut = new RtMidiOut(RtMidi::UNSPECIFIED, "Mecanique");
midiOut->openPort(0, Name.toStdString());
/*...*/
}

void MidiConnection::sendMessage(QVector<unsigned char> message)
{
std::vector<unsigned char> tempVector = message.toStdVector();
midiOut->sendMessage(&tempVector);
}

当我测试时,tempVector 包含正确的字节(关于 MIDI 规范是正确的)(见下面的答案)。

最佳答案

找到的解决方案:这段代码绝对正确,是给函数 sendMessage() 的数据是错误的。执行开始时, vector 中包含大于 127 的值。结果,似乎 ALSA 在没有强行关闭连接的情况下不会更多地监听连接。

感谢您的建议!

关于C++ - RtMidi 不向输出端口发送任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32563505/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com