普通蓝牙协议大家应该都有所了解,这里我就一笔带过。
蓝牙协议有很多版本,这里简单说一下蓝牙4.0协议
一、蓝牙4.0协议与BLE的区别?
蓝牙4.0协议有2中模式 BLE 和 BR/EDR
1. BLE
Bluetooth low energy 低功耗蓝牙,适用用收发少量数据的设备(手环之类的)。
2. BR/EDR
Basic Rate / Enhandced Data Rate 传统蓝牙 或 经典蓝牙, 适用于传输数据量较大的设备(耳机).能兼容3.0/2.1/2.0
3. 双模蓝牙
蓝牙双模是指其支持传统蓝牙的Basic Rate(BR)和增强数据率(EDR)工作,也支持最新的低功耗(BLE)标准。
二、MIDI蓝牙
MIDI蓝牙实质还是蓝牙,只不过实现了一套MIDI数据格式协议。
一个蓝牙成为MIDI蓝牙需要支持的蓝牙服务为
MIDI Service (UUID: 03B80E5A-EDE8-4B33-A751-6CE34EC4C700)
MIDI Data I/O Characteristic (UUID: 7772E5DB-3868-4112-A1A9-F2669D106BF3)
write (encryption recommended, write without response is required)
read (encryption recommended, respond with no payload)
notify (encryption recommended)
① 广播128 Bit 的UUID 为 03B80E5A-EDE8-4B33-A751-6CE34EC4C700 的服务
② 该中要包含一个UUID为 7772E5DB-3868-4112-A1A9-F2669D106BF3 的特性, 并且权限要为 write、read、notify
设置以上广播服务和特征才能被设备设备为MIDI设备
三、MIDI蓝牙发送数据格式
每台MIDI音源都有它自己的一套系统码。它包括以十六进制保存的乐器内部参数设置。系统码一般分为三部分:首部,中部,尾部
1.首部
F0-厂商代码-设备号码-具体型号代码
F0 41 10 42
- FO 是必须要加的,固定格式
- 4X 厂商代码,不过也有其他的
一般常见乐器公司:
1.Roland FO41
2. Korg F042
3. YAMAHA F043
- 10 音源设备编码
- 4X 当前音源格式的选择则
XG 为4C
GS 为42
XG和GS不清楚的可以看我前几遍文章有介绍
2.中部
具体参数
可以定义一些具体和MIDI设备交互的指令,比如开关等效之类的
3.尾部
checksum 和 F7
- F7 系统码结束事件。
- F7 与 F0 一一对应。系统码从F0 开始到 F7结束
四、iOS MIDI开发-关于MIDI蓝牙链接的问题
iOS系统提供了一个专门用于MIDI蓝牙链接的控制器。不要尝试去重写蓝牙列表,链接蓝牙,那样是找不到MIDI服务的。
CoreAudioKit下面的一个类
#import <CoreAudioKit/CABTMIDICentralViewController.h>
CABTMIDICentralViewController