Deciphering Hieroglyphics

BeforeĀ the Christmas break,Ā I restartedĀ working on a Mac application for controlling my Zoom 9.2tt guitar effects pedal. I originally started on it many, many moons ago, when I was pretty unhappy with the application that Zoom provided to control the unit.

Screenshot of the Zoom app

I was specifically unhappy with:

  • The controllability, with little knobs for the parameters which are really hard to control with the mouse,
  • The many, many windows, one for each module in the signal chain,
  • The fact that Zoom was no longer updating it. It’s not a sure thing that the app will keep running on new versions of macOS.

So I started developing a replacement. How hard could it be? Just create an app that sends the right MIDI messages to the unit.

Ha.

First challenge, which shipwrecked my efforts years ago was that the data model for the unit is amazingly complicated. Just trying to figure out what the ranges for the parameters are as the settings change was a herculean task.

The next challenge, which shipwrecked my efforts the second time I picked this project up a couple years ago, was trying to come up with a user interface that was simple enough to be usable while still encompassing all of the complexity I uncovered while discovering how the underlying data worked. That, plus around that time, Line 6 put out a product called AMPLIFi, which basically did everything that I wished my software could do. It’s one thing to work hard to create something new, and quite another to work hard on something that will never beĀ as good as something you could pick up for about $300 at Long and McQuade.

I don’t have a good answer for why I picked it up for a third time. I just wanted to code something, and I’d put a lot of effort into it already. This time, I’ve had a lot of success, and I now have an app with a user interface that isn’t pretty (yet), but is amazingly functional compared to the factory application.

ZoomControl

I have focused on the parts which read the data file, and allow the user to manipulate the parameters. This has been a good learning experience. I still have things to do (a LOT of things to do), but all of the work I have done is for nothing if I can’t get the application to talk to the Zoom guitar unit. This involves technology that I’ve never tried to program before (MIDI) and judging by the staggering complexity of the unit itself, I knew it wasn’t going to be easy.

But today I started investigating that part. I have hooked the unit up to my computer with a USB-MIDI cable, and I have installed MIDI Monitor. I am running the factory software and I am monitoring the messages that the application sends to the unit. There are two basic message types:

  1. Parameter changes. The appĀ sends the module id, parameter id, and the new value.
  2. Patch changes. The app sendsĀ everything, including the name and all settings.

The parameter change message was pretty clear, and I figured out how it works in about an hour. Unfortunately, this is what the patch change message looks like:
00 F0 52 00 42 28 48 19 08 00 27 41 41 3D 01 27 28 | R B(H 'AA= '(|
10 14 10 08 34 55 20 53 67 1E 63 0C 18 54 48 30 29 | 4U Sg c TH0)|
20 00 60 2C 28 48 40 2D 04 00 14 0D 00 00 00 00 01 | `,(H@- |
30 00 02 00 00 00 00 00 00 01 06 64 0A 53 00 00 00 | d S |
40 00 01 00 0E 0E 00 0C 0E 0C 0C 00 50 00 00 0E 00 | P |
50 57 21 46 65 6E 00 64 65 72 00 00 00 64 00 00 00 |W!Fen der d |
60 00 01 00 64 00 00 00 00 64 00 00 00 64 02 00 00 | d d d |
70 00 64 00 0E 00 10 1E 01 10 00 1E 00 00 00 00 64 | d d|
80 00 00 00 64 00 40 67 00 0D 00 00 00 32 00 00 00 | d @g 2 |
90 00 32 00 00 00 00 32 00 F7 | 2 2 |

I have started pulling it apart, but it’s not going to be easy.

Sigh. Long and McQuade is only a ten minute drive away…