蓝牙和MIDI蓝牙

798 阅读2分钟

普通蓝牙协议大家应该都有所了解,这里我就一笔带过。

蓝牙协议有很多版本,这里简单说一下蓝牙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

MIDI协会厂商列表

  • 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

image.png