Mackie Control 协议是由 Mackie 公司在 MIDI 协议的基础上设计的一套设备控制协议。该协议利用 MIDI 系统保留事件、音符开启/关闭事件、CC 事件、弯音轮事件以及通道压力事件传递控制信息。
不同 DAW 的 Mackie Control 协议实现有细微差别,本文档采用 Logic 标准。
第 4 字节 uint8 值(下标从 0 开始) | Mackie Control 功能 | 其余字节功能 | 备注 |
---|---|---|---|
0 | 设备查询 | - | |
1 | 宿主连接查询 | [5:11] 序列号 [12:15] 设备代码 |
|
2 | 宿主连接回应 | [5:11] 序列号 [12:15] 响应码 |
|
3 | 宿主连接确认 | [5:11] 序列号 | |
4 | 宿主连接错误 | [5:11] 序列号 | |
11 | LCD 背光灯 | [5] {0}: 关 {其它}: 开 [6] 背光关闭时间(分钟) |
仅背光打开时存在背光关闭时间 |
12 | 非触控音量推子 | [5] {0}: 触控开 {其它}: 触控关 | |
14 | 音量推子触摸灵敏度 | [5] 通道号 [6] 值 |
|
15 | 脱机 | - | |
16 | 时间码/BBT 显示 | [6:(size-2)] 值 | Mackie Char, 从右往左 |
17 | 模式 LED 数码显示 | [6:7] 值 | Mackie Char, 从右往左 |
18 | LCD | [5] {0:55}: 上面行 {56:111}:下面行 [6:(size-1)] 值 |
值为 ASCII 形式字符串 |
19 | 版本请求 | - | |
20 | 版本回应 | [6:(size-1)] 值 | 值为 ASCII 形式字符串 |
32 | 通道电平表模式 | [5] 通道号 [6] 模式 |
模式位掩码: {1}: 信号 LED 开关 {2}: 峰值保持显示开关 {4}: LCD 电平表开关 |
33 | 全局电平表模式 | [5] {0}: 水平 {其它}: 竖直 | |
97 | 全部推子设为最小值 | - | |
98 | 关闭全部 LED | - | |
99 | 重置 | - |
音符速度 | Mackie Control 功能 |
---|---|
0 | 关闭 |
1 | 点动 |
127 | 开启 |
音符序号 | Mackie Control 功能 | 备注 |
---|---|---|
0:7 | 通道录制 | 接受速度控制 通道号 = 音符序号 % 8 + 1 |
8:15 | 通道独奏 | 接受速度控制 通道号 = 音符序号 % 8 + 1 |
16:23 | 通道静音 | 接受速度控制 通道号 = 音符序号 % 8 + 1 |
24:31 | 通道选取 | 接受速度控制 通道号 = 音符序号 % 8 + 1 |
32:39 | 通道 V-选取 | 接受速度控制 通道号 = 音符序号 % 8 + 1 |
40 | 分配轨道 | |
41 | 分配发送 | |
42 | 分配声像 | |
43 | 分配插件 | |
44 | 分配 EQ | |
45 | 分配乐器 | |
46 | 前一推子组 | 接受速度控制 |
47 | 后一推子组 | 接受速度控制 |
48 | 前一推子通道 | 接受速度控制 |
49 | 后一推子通道 | 接受速度控制 |
50 | 翻页 | 接受速度控制 |
51 | 全局视图 | 接受速度控制 |
52 | 切换名称/值 | |
53 | 切换 SMPTE 时间码/拍 | |
54:61 | 拓展功能 | 功能号 = 音符序号 - 53 |
62 | MIDI 轨道视图 | |
63 | 输入视图 | |
64 | 音频轨道视图 | |
65 | 乐器视图 | |
66 | AUX 视图 | |
67 | 总线视图 | |
68 | 输出视图 | |
69 | 用户视图 | |
70 | Shift | 接受速度控制 |
71 | Option | 接受速度控制 |
72 | Ctrl | 接受速度控制 |
73 | Alt | 接受速度控制 |
74 | 自动化读取 | |
75 | 自动化写入 | |
76 | 自动化修整 | |
77 | 自动化风格 | |
78 | 自动化锁定 | |
79 | 组合 | |
80 | 保存 | |
81 | 撤销 | |
82 | 取消 | |
83 | 确认 | |
84 | 标记 | |
85 | 轻推 | |
86 | 循环 | |
87 | 丢弃 | |
88 | 替换 | |
89 | 点击 | |
90 | 独奏 | |
91 | 倒回 | 接受速度控制 |
92 | 快进 | 接受速度控制 |
93 | 停止 | 接受速度控制 |
94 | 播放 | 接受速度控制 |
95 | 录制 | 接受速度控制 |
96 | 上 | 接受速度控制 |
97 | 下 | 接受速度控制 |
98 | 左 | 接受速度控制 |
99 | 右 | 接受速度控制 |
100 | 缩放 | 接受速度控制 |
101 | 擦洗 | 接受速度控制 |
102 | 用户控制 A | |
103 | 用户控制 B | |
104:111 | 推子通道 | 接受速度控制 通道号 = 音符序号 - 103 |
112 | 推子主通道 | |
113 | SMPTE LED | |
114 | 拍号 LED | |
115 | 原始独奏灯 | |
116 | 中继点击 |
CC 通道 | Mackie Control 功能 | CC 值 | 备注 |
---|---|---|---|
16:23 | V-Pot | {0:62}: 顺时针 {其它}: 逆时针 | 通道号 = CC 通道号 - 15 tick值 = CC 值 % 64 |
46 | 外部控制器 | 控制器值 | |
48:55 | V-Pot LED 环 | {0:63}: 中心 LED 关 {其它}: 中心 LED 开 | 通道号 = CC 通道号 - 47 CC 值 % 64 在 0 到 15 之间: 单点模式 CC 值 % 64 在 16 到 31 之间: Boost/Cut 模式 CC 值 % 64 在 32 到 47 之间: Warp 模式 CC 值 % 64 在 48 到 63 之间: 传播模式 值 = CC 值 % 16 |
60 | 缓动轮 | {0:62}: 顺时针 {其它}: 逆时针 | tick值 = CC 值 % 64 |
64:73 | 时间码/BBT 显示 | Mackie 字符 | 数位 = 74 - CC 通道号 |
74:76 | 模式 LED 数码显示 | Mackie 字符 | CC 通道号: {74}: 右侧数码管 {其它}: 左侧数码管 |
Mackie Control 使用 MIDI 弯音轮事件控制推子音量。
当 MIDI 通道号为 1:8 时,表示推子通道 1-8;当 MIDI 通道号为 9 时,表示主通道推子。
弯音事件值即为推子值。
Mackie Control 使用 MIDI 通道压力事件控制电平表值。
电平表通道号 = 通道压力值 / 16 + 1.
当通道压力值 % 16 在 0 到 12 之间时,电平值 = (通道压力值 % 16) / 12 * 100%.
当通道压力值 % 16 等于 14 时,设置电平过载指示。
当通道压力值 % 16 等于 15 时,清除电平过载指示。
你可以参考如下代码转换 ASCII 字符为 Mackie 字符:
uint8_t charToMackie(char c) {
if (c >= 'a' && c <= 'z') { return static_cast<uint8_t>((c - 'a') + 1); }
else if (c >= 'A' && c <= 'Z') { return static_cast<uint8_t>((c - 'A') + 1); }
else if (c >= '0' && c <= '9') { return static_cast<uint8_t>((c - '0') + 0x30); }
return 0x20;
}
mackie-control-monitor
V2Mackie
tracktion_engine
mc_protocol_mappings
Mackie Control MIDI Map