holofermes/orba-protocol

GitHub: holofermes/orba-protocol

该项目通过逆向工程完整还原了 Artiphon Orba 音乐控制器的 USB-MIDI 与蓝牙通信协议,并提供 Python 和 JavaScript 参考实现,使开发者无需官方应用即可程序化控制设备。

Stars: 0 | Forks: 0

# orba-protocol **Artiphon Orba 控制协议的逆向工程规范与参考实现** —— 如何在无需**官方应用**的情况下,通过 USB-MIDI 或蓝牙读取设备状态并驱动设备参数。 该规范源自官方 Android 应用,并已通过捕获的蓝牙流量和实际设备验证其**字节级完全一致**。 ## 目录说明 ``` spec/SPEC.md the canonical protocol spec python/ Python reference: codec + command builders + a CLI js/ JavaScript reference (ES module): codec + BLE-MIDI framing + builders ``` ## 快速开始 **Python** —— 解码捕获的消息,或构建一条消息: ``` python3 python/orba_protocol.py decode F0 00 02 03 00 03 50 60 40 00 00 06 00 18 0c 1d F7 python3 python/orba_protocol.py build 60 03 01 00 03 02 # SET active part = Bass ``` ``` import orba_protocol as O O.build_command(O.set_tempo(120), msg_id=0x60) # -> SysEx bytes for 120.00 BPM O.set_fx("bass", "volume", 50) # -> payload: 03 02 50 10 80 00 01 04 ``` **JavaScript**(通过 Web Bluetooth / Web MIDI 的浏览器环境,或 Node): ``` import * as orba from "./js/orba-protocol.js"; const sysex = orba.buildCommand(orba.setActivePart("bass")); // F0 .. F7 bytes for (const pkt of orba.bleWrapMidiPackets(sysex)) { // split for a BLE GATT write await characteristic.writeValueWithoutResponse(new Uint8Array(pkt)); } ``` 详情请参阅 [`python/README.md`](python/README.md) 和 [`js/README.md`](js/README.md)。 ## 如何与设备通信 该协议在 **USB-MIDI** 和 **BLE-MIDI** 上使用相同的 SysEx payload 运行,仅外层封装格式不同。Orba **不**发送或跟随 MIDI clock :( 有关传输方式和通道/声部映射,请参阅 [`spec/SPEC.md` §1](spec/SPEC.md)。 ## 先前工作 本项目建立在 Orba 逆向工程小型社区的基础之上。在此向以下项目致谢: - [subskybox/Orba](https://github.com/subskybox/Orba) - [IanHalbwachs/orba-presets](https://github.com/IanHalbwachs/orba-presets) - [Batninja/Orba-Preset-Editor](https://github.com/Batninja/Orba-Preset-Editor) 本仓库的贡献在于**控制协议**:包括封装/编解码器/CRC 以及寄存器映射,并提供了多语言的可用实现。 ## 许可证 代码采用 [MIT](LICENSE) 许可证。`spec/` 下的规范还额外采用了 [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) 许可证。请参阅 [`LICENSE`](LICENSE)。
标签:CMS安全, JavaScript, MIDI, MITM代理, Python, 云资产清单, 数据可视化, 无后门, 物联网协议, 硬件交互, 自定义脚本, 逆向工具, 逆向工程