Reverse-engineering notes on the MIDI protocol of the tc electronic NDR-1 Nova Drive pedal captured with a tc electronic G-System.

My NDR-1, front.

My NDR-1, back.
Notice the single MIDI plug. It uses a special split Y cable to provide both input and output on this single connector. Without it, it only provides a MIDI in. I may talk about it in more details in an upcoming article.
Sent (pedal → controller)¶
No published documentation exists for the status SysEx emitted by the pedal; the decoding below is the result of my own capture and analysis.
A 27-byte SysEx message is emitted automatically every 3.5 seconds.
Typical captured message:
F0 00 20 1F 00 55 56 01 01 06 00 00 01 4C 4B 71 46 50 50 7F 4B 00 33 36 32 00 F7Decoding¶
Analysis using MIDI Explorer, my own MIDI analysis tool.
| Byte # | Raw value(s) | Role | Comments |
|---|---|---|---|
0 | 0xF0 | Start of SysEx | Standard |
1 | 0x00 | Manufacturer ID | Standard 3-byte Manufacturer ID (first byte) |
2 | 0x20 | Manufacturer ID (second byte) | StandardEuropean Manufacturer |
3 | 0x1F | Manufacturer ID (third byte) | StandardTC Electronic |
4 | 0x00 | Device ID | Standard |
5 | 0x55 | Model ID? (Constant) | Start of proprietary payload Role inferred from the TC Electronic M-ONE, D-TWO & C-THREE MIDI specification |
6 | 0x56 | Message type? (Constant) | Role inferred from the TC Electronic M-ONE, D-TWO & C-THREE MIDI specification |
7–8 | 0x01 0x01 | ? (Constant) | — |
9 | 0x06 | Preset | Displays:0x00: --0x01–0x12 (1-18):1–18 in normal and toggle modeor A-I 1-2 in bank mode |
10 | 0x00 | Overdrive (on/off) | 0x00 (0): off0x01 (1): on |
11 | 0x00 | Distortion (on/off) | 0x00 (0): off0x01 (1): on |
12 | 0x01 | Routing | 0x00 (0): OD→DS (serial)0x01 (1): DS→OD (serial)0x02 (2): OD∥DS (parallel) |
13 | 0x4C | DS gain | 0x00–0x7F (0-127) |
14 | 0x4B | Bass | 0x00–0x7F (0-127) |
15 | 0x71 | Treble | 0x00–0x7F (0-127) |
16 | 0x46 | Mix | 0x00–0x7F (0-127) |
17 | 0x50 | DS level | 0x00–0x7F (0-127) |
18 | 0x50 | OD level | 0x00–0x7F (0-127) |
19 | 0x7F | Tone | 0x00–0x7F (0-127) |
20 | 0x4B | OD gain | 0x00–0x7F (0-127) |
21 | 0x00 | Switch mode | 0x00 (0): normal0x01 (1): toggle0x02 (2): bank |
22–25 | 0x33 0x36 0x32 0x00 | ? (Constant) | End of proprietary payload |
26 | 0xF7 | End of SysEx | Standard |
Received (controller → pedal)¶
All messages on Channel 2.
| Parameter | Message | Value Range |
|---|---|---|
| Preset | PC (0xC2) | 0x00–0x11 (1–18) |
| OD on/off | CC 21 (0xB2 0x15) | 0x00–0x63 (0): off0x64–0x7F (127): on |
| DS on/off | CC 22 (0xB2 0x16) | 0x00–0x63 (0): off 0x64–0x7F (127): on |
| OD gain | CC 23 (0xB2 0x17) | 0x00–0x7F |
| OD level | CC 24 (0xB2 0x18) | 0x00–0x7F |
| OD tone | CC 25 (0xB2 0x19) | 0x00–0x7F |
| OD mix | CC 26 (0xB2 0x1A) | 0x00–0x7F |
| DS gain | CC 27 (0xB2 0x1B) | 0x00–0x7F |
| DS level | CC 28 (0xB2 0x1C) | 0x00–0x7F |
| DS bass | CC 29 (0xB2 0x1D) | 0x00–0x7F |
| DS treble | CC 30 (0xB2 0x1E) | 0x00–0x7F |
| Routing | CC 31 (0xB2 0x1F) | 0x00–0x2A (0): OD→DS 0x2B–0x54 (32): DS→OD0x55–0x7F (64): OD∥DS |
Cross-referenced with the manual, page 23.