DJ hardware · MIDI
Driving the Reloop Mixon 8 Pro jog displays
MIDI packets for time, BPM, pitch, needle, progress and keylock.
The Mixon’s jog displays accept messages through its MIDI output destination. These commands were captured from Serato, checked against the djay mapping and replayed with both applications closed. Results below refer to the physical display, not just a successful MIDI send.
Capture the host’s output
Monitor messages to the controller. Input traffic mostly describes buttons and faders. In MIDI Monitor, enable Spy on output to destinations. Change one display value, compare packets, then replay the candidate and check the hardware.
Packet format
F0 00 20 7F DD FF N0 N1 ... F7
DD = logical deck (01–04)
FF = field ID
N0… = value nibbles, most significant first
Each value byte holds one hexadecimal digit, 00–0F. Six nibbles produce a 13-byte message; eight produce 15 bytes. No checksum was observed. All packet bytes below are hexadecimal.
For deck d (1–4), Note On status is 0x90 + d − 1 and CC status is 0xB0 + d − 1. Decks 1/3 select the left jog; 2/4 follow the right-side mapping but have not been independently replayed.
Time, BPM and pitch
| Field | ID | Nibbles | Encoded value |
|---|---|---|---|
| Time | 04 | 8 | 0x80000000 + milliseconds |
| BPM | 01 | 6 | round(BPM × 100) + 5 |
| Pitch | 02 | 6 | 0x800000 + round(percent × 100) |
These deck 1 examples were replayed successfully:
1:23.4 (83,400 ms)
F0 00 20 7F 01 04 08 00 00 01 04 05 0C 08 F7
125.0 BPM
F0 00 20 7F 01 01 00 00 03 00 0D 09 F7
+2.50%
F0 00 20 7F 01 02 08 00 00 00 0F 0A F7
−2.50%
F0 00 20 7F 01 02 07 0F 0F 0F 00 06 F7
Time: the leading 8 appeared in both elapsed and remaining captures. It is not a remaining-time flag. Send elapsed milliseconds or max(duration − position, 0) as appropriate. The elapsed/remaining label command is unverified.
BPM: +5 is the observed Serato convention, also confirmed at 81.0 and 69.0 BPM in captures. Rounding boundaries and djay’s different convention need further testing.
Pitch: keep calculations signed until the offset is added. Negative pitch encodes below 0x800000; there is no separate sign byte.
Other display fields
| Deck 1 indicator | Packet | Verified result |
|---|---|---|
| Needle | B0 2B pp | Rotation, positions 1–88 (decimal) |
| Blue progress ring | B0 07 pp | Progress, positions 1–88 (decimal) |
| 16% pitch range | 90 0E 10 | Range 16 displayed |
| Keylock on | 90 0D 41 | Icon lit |
| Keylock off | 90 0D 3F | Icon unlit |
Needle and progress need separate updates. A 20-second test updated time and both indicators at 40 Hz, wrapping the needle every 1.8 seconds. Zero/end positions, orientation and reverse motion are uncalibrated; 40 Hz is a tested rate, not a throughput limit.
Range 8 was captured; range 16 was independently replayed. Keylock values are decimal 65/63, not 127/0. They change the symbol only; keylock audio processing belongs in your software.
Deck and USB indicators
The hardware updates these indicators without a DJ application running. Switching the left deck from 1 to 3 produced:
92 08 7F deck 3 active
90 08 00 deck 1 inactive
A time write to deck 3 then displayed 33.3 seconds:
F0 00 20 7F 03 04 08 00 00 00 08 02 01 04 F7
The USB indicator changed to 2 with the computer connected to rear USB B and the channel source set to B. No host override is established. Source-selection CC values have not been decoded into absolute A/B states.
Integration notes
- Store state per logical deck and repaint after selection changes or reconnects.
- Send MIDI outside the audio callback; coalesce repeated updates.
- Derive animated positions from playback state, including pause and seeks.
- Do not let a late “deck inactive” event clear another deck’s active state.
Cold-start initialization, right-side replay, inactive-deck buffering, time-mode labels and additional pitch ranges remain open. Field 03 matched track duration in a capture, but its effect has not been independently replayed.
Protocol and examples
Download integration kit (ZIP)
Protocol guide, 21 packet fixtures, evidence notes, a macOS MIDI sender and replay examples. The guide includes Rust encoding examples; those examples have not been compiled. Fixtures were checked against the replay files and Python encoders.
Individual files: protocol text · packet fixtures.
For corrections or new tests, send the exact packet, deck, display result and power-on conditions through the contact links.