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, 云资产清单, 数据可视化, 无后门, 物联网协议, 硬件交互, 自定义脚本, 逆向工具, 逆向工程