Zoom R16 LED Midi Driver.
Hello. I recently became the proud owner of a Zoom R16 Recorder:Interface:Controller. Despite not being the latest piece of kit the drivers are still supported and available. I’m quite happy with it as it’s a serious upgrade to my studio. There was just one problem. When I went to use it with my DAW of choice (VCV Rack) I found that the little LEDs don’t light up when I press the appropriate buttons. Well this was no good. If there’s one thing I like more than making music, it’s pushing buttons, and if there’s one thing I like more than pushing buttons, its lights that do things when I push buttons. So I decided to do some digging. I found that there was a surprising dearth of readily available and accessible information on the topic. Hence why I have decided to document my findings and eventual solution here.
The first thing to note is that the R16 follows the Mackie Control protocol. A full documentation of which can be found at the link bellow. Thanks to Gearspace user Ensefalon for compiling this info (or coagulated as they would say).
https://sites.google.com/view/mackiecontroluniversaldiyguide/home?authuser=0
The R16 does indeed follow this standard. But that wasn’t the simplest thing to figure out so I’ll put how it works here in plain English.
The eight channel LEDs as well as the start, stop and record LEDs are all turned on by a specific note-on message. And they are each turned off again by a corresponding note-off message. There are three pages of channel LEDs and each page has its own notes and colors associated with it.
Every LED message must have 0x90 as its status byte. I’m not totally sure why but that’s what I’ve found.
Here is a table of the codes for each LED.
Record 1. | 0x00 |
Record 2. | 0x01 |
Record 3. | 0x02 |
Record 4. | 0x03 |
Record 5. | 0x04 |
Record 6. | 0x05 |
Record 7. | 0x06 |
Record 8. | 0x07 |
Solo 1. | 0x08 |
Solo 2. | 0x09 |
Solo 3. | 0x0A |
Solo 4. | 0x0B |
Solo 5. | 0x0C |
Solo 6. | 0x0D |
Solo 7. | 0x0E |
Solo 8. | 0x0F |
Mute 1. | 0x10 |
Mute 2. | 0x11 |
Mute 3. | 0x12 |
Mute 4. | 0x13 |
Mute 5. | 0x14 |
Mute 6. | 0x15 |
Mute 7. | 0x16 |
Mute 8. | 0x17 |
Stop. | 0x5D |
Start. | 0x5E |
Record. | 0x5F |
As an example a midi message to turn on the LED for mute 4 would look like this.
0x90, 0x13, 0x7F
And to turn it off would look like this.
0x90, 0x13, 0x00
There are two LEDs associated with the Bank buttons, but I haven’t figured out how to make those work.
So, I wanted a way to have these lights work while using my DAW. Eventually what I settled on as the best way to do this was to run a custom script in MIDI-OX. MIDI-OX is a pretty old piece of software, and its a bit fragile, at least on my machine. But it is a fantastically capable and versatile MIDI utility. You can find it at the link below.
I took some example code that I found, expanded and modified it to serve my purpose and now I’m letting it out into the world. Here it is.
You’ll need to take the plain text file and resave it as a .js file. Then it should run just fine. Here’s how it works.
The first thing you’ll want to do is set the output in MIDI-OX to the R16 and the input to a loopmidi port coming from your DAW. If you don’t know about loopmidi follow the link.
https://www.tobias-erichsen.de/software/loopmidi.html
Next you’ll need to set the midi filter in MIDI-OX to filter out note-off messages and to filter out the data as well as display. MIDI-OX will probably crash a whole bunch, it did for me. Usually when it crashed I had to cycle the connection on the R16. Only once did I have to reboot my computer. It took a bit of trail and error to figure out the magic order to start everything up in. It might be different for you but here’s what I do.
- Fresh cycle the R16 connection.
- Open a plain instance of MIDI-OX.
- Set the input to Loopmidi and the output to the R16.
- Close that instance of MIDI-OX.
- Run the custom script which opens a new instance of MIDI-OX.
- Open my DAW.
- LEDs go burrrr.
Well I think that’s it. Figuring this out I felt like I was the first person to have this issue. I know I’m probably not but I couldn’t find anything on it. Maybe now the next person will have some help. I hope so, but my SEO’s not great. Have a good one.
Robin