我正在开始一个通过蓝牙进行无线MIDI连接的项目。 据我所知,BT规范中没有定义MIDI配置文件。
我想知道你们中的一些人是否有兴趣分享关于使用MIDI而不是BT的最佳方式的经验,特别是关于延迟问题。
我的项目基于BT低能耗(BTLE),我现在正在尝试找到最好的BT配置文件,可能是串口RFCOMM现有配置文件,还是新的自定义配置文件?
任何提示都将不胜感激。 最好 杰罗姆
答案 0 :(得分:4)
像RFCOMM这样的个人资料不属于BTLE,而是属于蓝牙经典。
在音乐应用程序中,您应该关注延迟。 从midi键盘发送第一个字节的时间,直到它到达目的地真的很重要。 SPP / RFCOMM中没有确切的BAUD率,但吞吐量取决于双方。 http://snapshot.bluecove.org/bluecove-examples/bluecove-tester/speed.html
如果您输入MIDI(31250 BAUD),通过“频道”发送,通过MIDI(31250 BAUD)发送,那么您需要查看两件事: 1)吞吐量,必须大到足以“下沉”和“来源”Midi In和Midi Out 2)延迟,必须足够快,以使其“音乐”准确。
Midi ON事件大约需要30个信号位,因此您可以每秒发送大约104个Midi事件。延迟是大约10毫秒。
在iOS上,如果您违反建议,最快的连接间隔(大约20个字节的1个块)大约为19毫秒,如果您遵循建议则为39毫秒。总延迟将是: Midi In(10ms)+ BTLE GATT(最长39ms)+ Midi Out(10ms)= 60ms。比普通MIDI线缆慢6倍。 最小BTLE连接间隔是7.5毫秒,但你会丢失最低级别的数据包,所以我们只说10毫秒: Midi In(10ms)+ BTLE(10ms)+ Midi Out(10ms)= 30ms。不是太糟糕但也不是很令人印象深刻。 在每个连接间隔中,您可以打包大约20个字节,因此应该有足够的带宽或吞吐量。
看看这个BTLE RFCOMM项目: http://support.connectblue.com/display/PRODBTSPA/Bluetooth+Low+Energy+Serial+Port+Adapter+-+Getting+Started