Skip to content

Latest commit

 

History

History
146 lines (137 loc) · 5.96 KB

MackieControl_zhCN.md

File metadata and controls

146 lines (137 loc) · 5.96 KB

Mackie Control 协议

什么是 Mackie Control 协议

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 事件功能对照表

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 时,清除电平过载指示。

Mackie 字符格式

你可以参考如下代码转换 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