Full HX Stomp preset management (SysEx read/write via MIDI)
- Dominant language
- Python
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
## Problem
Currently `rig apply` only sends MIDI PC messages to recall existing presets on the HX Stomp. The full preset configuration (blocks, parameters, routing) defined in `pedals/hx-stomp/presets/*.yaml` is documentation-only — it is never pushed to the device.
## Goal
Make rig-cli the source of truth for HX Stomp presets:
1. **Read** existing presets from the device via MIDI SysEx
2. **Write** full preset config back to the device
3. **Diff** presets between config YAML and device (what changed)
4. **Apply** pushes the full config to the correct preset slot
## Research Required
HX Edit communicates with the HX Stomp via a proprietary serial-over-USB protocol that bundles MIDI SysEx commands. We would need to reverse-engineer:
- The SysEx format for reading/writing individual presets
- Block parameter encodings (float → hex conversion)
- How preset data (which we already parse from .hlx JSON) is packed into SysEx messages
- Command sequencing (handshake, chunking, checksums)
The .hlx file format gives us the JSON schema — the SysEx protocol is the missing link.
## Prior Art
- [line6-hx-edit-protocol](https://github.com/nicknisi/line6-hx-edit-protocol) — community reverse-engineering efforts
- HX Native / HX Edit USB packet captures
- Python `python-rtmidi` for raw MIDI I/O (already a dependency)
## Implementation Sketch
- New `src/rig/io/hx_sysex.py` module for encoding/decoding HX SysEx
- New `src/rig/io/hx_device.py` for communication (read preset, write preset, list presets)
- Integration with plan engine: compare config preset blocks against device
- Integration with apply engine: write preset blocks before sending PC recall
## Acceptance
- `rig apply hx-push` or similar writes a config-defined preset to the HX Stomp
- `rig plan` can detect when a config preset differs from what is on the device
- Can round-trip: read from device → export YAML → re-apply and get the same tone
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.