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控制器, 二进制协议, 云资产清单, 依赖分析, 压缩器, 参数均衡器, 场景管理, 对讲, 开源, 录音棚, 数字信号处理, 无专用驱动, 混响, 混音器, 监听控制, 硬件控制, 自动化攻击, 逆向工程, 门限, 音乐制作, 音频接口, 音频矩阵