C++ - RtMidi 不向输出端口发送任何内容
C++ - RtMidi send nothing to out ports
我正在开发一个使用 RtMidi 与 MIDI 应用程序通信的程序。
编译、打开输入和输出端口、读取输入端口也可以,但是当我用输出端口发送消息时,没有任何反应。
也不例外,终端没有消息,一切似乎都正常,但其他应用程序永远不会收到 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。
$猫/proc/asound/version
高级 Linux 声音架构驱动版本 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()的数据有误。执行开始时,矢量中包含大于 127 的值。结果,似乎 ALSA 在没有强行关闭它的情况下不会更多地监听连接。
感谢您的建议!
我正在开发一个使用 RtMidi 与 MIDI 应用程序通信的程序。
编译、打开输入和输出端口、读取输入端口也可以,但是当我用输出端口发送消息时,没有任何反应。 也不例外,终端没有消息,一切似乎都正常,但其他应用程序永远不会收到 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。
$猫/proc/asound/version
高级 Linux 声音架构驱动版本 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()的数据有误。执行开始时,矢量中包含大于 127 的值。结果,似乎 ALSA 在没有强行关闭它的情况下不会更多地监听连接。
感谢您的建议!