MIDI 蓝牙 LE、SYSEX 消息不完整

Posted

技术标签:

【中文标题】MIDI 蓝牙 LE、SYSEX 消息不完整【英文标题】:MIDI Bluetooth LE, SYSEX messages are not complete 【发布时间】:2016-12-16 10:20:05 【问题描述】:

使用 MIDI 蓝牙 LE 框架,我通过蓝牙发送此 MIDI SYSEX 消息:

“F0H 26H 79H 0EH 7FH F7H”

我通过蓝牙接收:

“F0H 26H 79H 0EH 7FH”(缺少 SYSEX 结尾)

我必须以编程方式添加结束字节,但我不知道何时结束。这是框架中的错误吗?

【问题讨论】:

显示您的代码。 【参考方案1】:

回调方法出错。现在它可以在 Yamaha MD-BT01 上正常工作。

捕获 MIDI In 数据并将其填充到环形缓冲区中以供以后处理:

static void MyMIDIReadProc(const MIDIPacketList *pktlist, void *refCon, void *connRefCon) 
for (unsigned int i = 0; i < pktlist->numPackets; i++) 
    if (i == 0) packet2 = pktlist->packet[0];
    nBytes2 = packet2.length;
    iByte2 = 0;
    while (iByte2 < nBytes2) 
        inputByte2 = packet2.data[iByte2];
        inppoint2++;
        if (inppoint2 >= bufsize2)
            inppoint2 = 0;
        
        inputBuffer2[inppoint2] = inputByte2;
        iByte2 ++;
    
    packet2 = *MIDIPacketNext(&packet2);

【讨论】:

以上是关于MIDI 蓝牙 LE、SYSEX 消息不完整的主要内容,如果未能解决你的问题,请参考以下文章

使用 Arduino 发送 MIDI SysEx 消息?

如何从音量级别创建 MIDI Sysex Master Volume 消息?

Audiokit 似乎只接收前三个 sysex MIDI 消息

低功耗蓝牙LE Audio Profile 详细介绍

PhoneGap/Cordova 中支持蓝牙 LE 的应用程序

Android音视频API(android.media.midi):概览