bod09/motu-mk5-controller
GitHub: bod09/motu-mk5-controller
通过逆向工程 MOTU UltraLite-mk5 的二进制协议,在 Linux 上提供完整的 Web 混音器控制方案,替代官方 CueMix 5 软件。
Stars: 0 | Forks: 0
# MOTU UltraLite-mk5 Web 控制器
一款独立的 Web 应用程序,用于在 Linux 上控制 MOTU UltraLite-mk5 音频接口。完全替代 MOTU 的 CueMix 5 Electron 应用程序——无需专有驱动程序。
mk5 在 Linux 上符合 USB 音频类标准。该应用程序使用完全逆向工程的二进制协议(77 个命令),通过其内置的 WebSocket 服务器直接与设备的固件通信。
## 功能
### 混音器
- **14 个输出总线** — 所有输出(Main、Line 3-10、Phones)的推子、VU 表、静音、立体声链接、硬件微调
- **8 个输入通道** — 带有点击选择功能的 VU 表,用于 DSP 编辑,支持自定义通道命名
- **32x14 混音矩阵** — 每个总线的每输入推子、声像、独奏、静音和立体声链接
- **输出通道命名** — 双击任意通道标签进行重命名
### DSP 处理
- **每个输入 4 段参量 EQ** — 模式 (Peak/LowShelf/HighShelf/HPF)、频率、增益、带宽、每段旁通
- **每个输入的压缩器** — 阈值、比率、启动时间、释放时间、补偿增益、旁通
- **麦克风通道上的门限** — 阈值、启动时间、释放时间、旁通
- **每个总线对的 3 段输出 EQ** — 与输入 EQ 相同的控制
- **混响** — 4 种预设 (Room/Hall/Plate/Church)、衰减、阻尼、预延迟、宽度
### 监听与对讲
- **监听部分** — A/B、单声道、静音切换
- **对讲** — 启用/锁定、电平、衰减、源选择、目标位掩码
### 系统配置
- **采样率**、时钟源、光纤模式
- **MIDI 直通** 切换
- **USB 环回** 配置
- **主机输出混音模式**
- **脚踏开关** — 启用,可配置的按下/释放动作
- **自动发现** — 扫描 USB 和网络以查找已连接的设备
### 超越 CueMix 5 的功能
- **场景管理** — 保存/加载/重命名/删除混音器快照,JSON 导入/导出,持久化到 localStorage
- **撤销/重做** — 通过 Ctrl+Z / Ctrl+Shift+Z 进行命令历史记录
- **键盘快捷键** — 1-8 选择通道,M 静音,[ ] 循环总线,Escape 取消选择
- **电平峰值记录** — 以 25fps 录制,导出为 CSV 以供分析
- **协议嗅探器** — 实时二进制流量查看器,带文本搜索、CMD ID 过滤器、差异记录器、JSON/CSV 导出
- **移动端/触摸支持** — 触摸友好的旋钮和推子,响应式布局
## 安装
```
curl -fsSL https://raw.githubusercontent.com/bod09/motu-mk5-controller/main/install.sh | bash
```
安装向导将引导您完成以下操作:
- **安装位置** — `/usr/local/bin`(默认)、`~/.local/bin` 或自定义路径
- **端口** — 运行 Web UI 的端口(默认:3000)
- **自动启动** — 可选择在登录时通过 systemd 启动
然后打开 **http://localhost:3000**
### 管理
```
motu-controller # Run directly
systemctl --user start motu-mk5-controller # Start as service
systemctl --user stop motu-mk5-controller # Stop service
systemctl --user enable motu-mk5-controller # Auto-start on login
journalctl --user -u motu-mk5-controller -f # View logs
PORT=8080 motu-controller # Custom port
```
### 卸载
```
curl -fsSL https://raw.githubusercontent.com/bod09/motu-mk5-controller/main/install.sh | bash -s -- uninstall
```
### 从源代码构建
需要 [Bun](https://bun.sh):
```
git clone https://github.com/bod09/motu-mk5-controller.git && cd motu-mk5-controller
bun install && bun start
```
### 构建您自己的二进制文件
```
bun run build:binary # Produces ./motu-controller with web UI embedded
./install.sh # Run the setup wizard
```
## 设置
所有设置均从 Web UI 的 **Config** 选项卡中管理,并在重启后持久化保存在 `~/.config/motu-mk5-controller/config.json` 中。
- **自动发现** — 默认启用。在启动时扫描 USB 和链路本地网络。
- **手动覆盖** — 如果自动发现未找到您的设备,请直接输入设备 IP 和序列号。
- **服务器端口** — 通过 `PORT` 环境变量设置(默认:3000)。
要手动查找设备的 IP:按下 mk5 的前面板左侧旋钮,滚动到第 5 个菜单项。
## 键盘快捷键
| 按键 | 操作 |
|-----|--------|
| `1`-`8` | 选择输入通道进行 DSP 编辑 |
| `M` | 切换当前输出总线的静音 |
| `[` / `]` | 上一个 / 下一个混音总线 |
| `D` | 切换 DSP 侧边栏 |
| `Escape` | 关闭 DSP 侧边栏 / 取消选择 |
| `Ctrl+Z` | 撤销上次参数更改 |
| `Ctrl+Shift+Z` | 重做 |
## API
服务器提供 REST API 和 WebSocket API,用于程序化控制——构建脚本、集成、自定义 UI 或自动化您的工作流。
```
# 获取完整设备状态
curl http://localhost:3000/api/state
# 将 mic 1 gain 设置为 40dB
curl -X POST http://localhost:3000/api/command \
-H "Content-Type: application/json" \
-d '{"cmdId": 5001, "index": 0, "value": 40}'
# Batch: 取消静音并设置两个 main bus faders
curl -X POST http://localhost:3000/api/command/batch \
-H "Content-Type: application/json" \
-d '{"commands": [
{"cmdId": 1028, "index": 0, "value": 0},
{"cmdId": 1028, "index": 1, "value": 0},
{"cmdId": 1027, "index": 0, "value": 0.8},
{"cmdId": 1027, "index": 1, "value": 0.8}
]}'
```
通过 `ws://localhost:3000/ws` 处的 WebSocket 获取实时状态 — 以 30fps 接收电平表数据、增量更新、嗅探数据包。
有关包含 Python 和 Node.js 示例的完整 API 文档,请参阅 [`docs/api-reference.md`](docs/api-reference.md)。
## 协议
完整的二进制协议已从 CueMix 5 源代码中解码 — **77 个命令** 涵盖设备的所有功能:混音矩阵、EQ、动态、混响、路由、电平表、对讲、监听控制、脚踏开关等。
有关完整的命令参考,请参阅 [`docs/protocol-reference.md`](docs/protocol-reference.md)。
## 架构
```
[MOTU mk5] <--binary WS--> [Bun Server :3000] <--JSON WS--> [React Browser]
```
- **后端** 在设备的二进制协议和浏览器的 JSON 之间进行转换
- **状态缓存** 维护完整的设备状态,发出细粒度的增量更新
- **前端** 使用带有精确选择器的 Zustand 存储,以实现最少的重渲染
## 技术栈
- **运行时:** Bun(也可构建为独立二进制文件)
- **后端:** Express、ws、TypeScript
- **前端:** React 19、Vite、Tailwind CSS v4、Zustand
- **协议:** WebSocket 二进制(从 CueMix 5 逆向工程)
## 致谢
协议研究基于社区逆向工程工作:
- [m1no 的 API Bridge gist](https://gist.github.com/m1no/90c5776df3f1c06e067076d14477ef43)
- [jpcarrascal 的 WebSocket bridge](https://github.com/jpcarrascal/motu-ultralite-mk5-bridge)
## 许可证
MIT
标签:CueMix替代, DSP处理, EQ, MOTU, UltraLite-mk5, USB音频, WebSocket, Web控制器, 二进制协议, 云资产清单, 依赖分析, 压缩器, 参数均衡器, 场景管理, 对讲, 开源, 录音棚, 数字信号处理, 无专用驱动, 混响, 混音器, 监听控制, 硬件控制, 自动化攻击, 逆向工程, 门限, 音乐制作, 音频接口, 音频矩阵