Bluetooth 蓝牙MIDI

Bluetooth 蓝牙MIDI,bluetooth,midi,latency,bluetooth-lowenergy,rfcomm,Bluetooth,Midi,Latency,Bluetooth Lowenergy,Rfcomm,我正在启动一个项目,通过蓝牙实现无线MIDI连接。 据我所知,BT规范中没有定义MIDI配置文件 我想知道你们中的一些人是否有兴趣分享关于通过BT使用MIDI的最佳方式的经验,特别是关于延迟问题 我的项目是基于BT低能量(BTLE),我现在正试图找到最好的BT配置文件使用,可能是串行端口RFCOMM现有配置文件,或一个新的自定义配置文件 任何小费都将不胜感激。 最好的 Jerome像RFCOMM这样的配置文件不属于BTLE,而是属于蓝牙经典 在音乐应用程序中,您应该关注延迟。 从第一个字节开始从

我正在启动一个项目,通过蓝牙实现无线MIDI连接。 据我所知,BT规范中没有定义MIDI配置文件

我想知道你们中的一些人是否有兴趣分享关于通过BT使用MIDI的最佳方式的经验,特别是关于延迟问题

我的项目是基于BT低能量(BTLE),我现在正试图找到最好的BT配置文件使用,可能是串行端口RFCOMM现有配置文件,或一个新的自定义配置文件

任何小费都将不胜感激。 最好的
Jerome

像RFCOMM这样的配置文件不属于BTLE,而是属于蓝牙经典

在音乐应用程序中,您应该关注延迟。 从第一个字节开始从midi键盘发送到到达目的地的时间非常重要。 SPP/RFCOMM中没有确切的波特率,但吞吐量取决于两侧。

如果您输入MIDI(31250波特),通过“通道”发送,通过MIDI(31250波特)发送,那么您需要看两件事: 1) 吞吐量必须足够大,以“接收”和“源”Midi输入和输出Midi 2) 延迟,必须足够快,以使其“音乐”准确


Midi ON事件大约需要30个信号位,因此每秒可以发送大约104个Midi事件。延迟约为10毫秒

在iOS上,如果违反建议,最快的连接间隔(约20字节的1个块)约为19毫秒,如果遵循建议,最快的连接间隔约为39毫秒。然后,总延迟将为: Midi输入(10ms)+BTLE GATT(最长39ms)+Midi输出(10ms)=60ms。比普通MIDI电缆慢6倍。 最小BTLE连接间隔为7.5ms,但您将在最低级别丢失数据包,因此我们只需说10ms: Midi输入(10ms)+BTLE(10ms)+Midi输出(10ms)=30ms。不算太坏,但也不太令人印象深刻。 在每个连接间隔中,您可以打包大约20个字节,因此应该有足够的带宽或吞吐量

看看这个BTLE RFCOMM项目:

MIDI延迟本身通常在4-5毫秒左右。大多数消息(注意开/关)为2字节。如果要发送注释,则发送设备通常会延迟控制器消息。“Midi ON事件大约需要30个信号位,因此您可以每秒发送104个Midi事件。延迟约为10ms。”编写器在小数点后加了一个小数位-31250bps/30b=每秒1041个注释。HAL@Brad:大多数消息(音符打开/关闭、控制更改、音调弯曲等)都是3字节。henrik和Brad:通过标准MIDI电缆发送一条3字节的消息需要960U(与@Hal的1041条完整音符消息每秒匹配),而不是4-5毫秒。当然,接收器可能会增加处理延迟。对于音乐MIDI通信,不仅1)吞吐量和2)延迟很重要,而且3)抖动:延迟的变化程度。如果抖动较低,则可以容忍较高的延迟。超过几毫秒的抖动会严重影响乐曲的感觉和节奏。