Zoom MS70 - CDR Pedal preset is available

Hi, recently @1overf mentioned in another thread he wants to build a preset for the Zoom MS70-CDR preset.

This got me fascinated somehow. I have this pedal and never thought about getting it controlled via MIDI, let alone the E1. After a bit of research yesterday, as well as with what @1overf mentioned, it looks like this is really possible to achieve.

If anyone is out there wanting to help or having made progress on the topic so far, be happy to join in.

The MS70-CDR is a very popular pedal amongst synth players, so it’s an effects pedal that might be to use for a lot of us.


If you search for “Zoom MS70 Sysex” you’ll quickly find like at least 2 attempts with unofficial sysEx explanations, enough to get one started.

this blog is my attempt to describe the proceedings.

Here is what I plan to do:

The challenges:

  • the documentation is incomplete
  • the meaning of a parameter differs per effect type
  • the range of a parameter differs per effect type
  • there are up to 6 simultaneous effects, so approach should be made generically to avoid having to repeat everything 6 times.
  • not all parameters found in the sysex string can be controlled one by one (on/off on fx 3, 4 and 5, and tempo)

I will start with

  1. establishing comms : can I have the E1 send a sysex and the MS70-CDR respond, while monitoring that communication via MIDI-Ox ?
  2. Can I get the MS70-CDR to send each separate parameter value, when I tweak knobs on the pedal itself , and see them in MIDI-Ox?
  3. Can I draw a matrix explaining how each parameter for each effect type is identifiable, what name to give to the parameter and what range it has (within each effect type). In case the parameter acts as an option list, what options are there? Is there a source of info already having this data (partially)?
  4. Can I test sending the following from E1 to pedal : change program, change effect type, change a value for a parameter? So I can validate the paramter change SysEx would be working bidirectionally ?
  5. Can I define a range of virtual parameters so I can craft each parameter change SysEx when the parameter changes, so I do not have to type them all in?
  6. Can I define an algoritm capable of reading each single received parameter change SysEx from the pedal and setting the right value in the ParameterMap?

When all this is positive, we’ll first check the patch parsing capabilities, before building anything. Reason: ensure we know if and how the values in the memory dump SysEx correspond to the ones on the parameter change SysEx .
7. Can I request a current program (buffer) memory dump SysEx , or only a dump of a specific program, in which case I need to know what program is current
8. Can I identify how the Zoom SysEx uses the 8th bit (AFAIK this should be similar to how Sequential deals with their 8th bit)?
9. Can I easily identify the corresponding changes in the SysEx info, when a value in the program has been altered?
10. Are the values, as found in the memory dump SysEx , the same values and range as the ones in the individual parameter changes ?

If all of the above gets positive answers, we can build our preset. The task ahead is then:

  • draw the matrix in a structured way (in excel) by reverse engineering each single parameter
  • create a preset with 4 pages : one general (program change, unit select and parameters, effects on/off, tempo), and one page for naming, then 2 more, each with 3 effects units.
    • create an algo that will compose each parameter change SysEx when a knob is turned
    • create an algo that will decompose each received parameter change SysEx and set the appropiate parameter without retransmitting (avoid creating a MIDI loop)
    • take inspiration from previous presets (like the 03R/W) where one also had to deal with effects parameters that change meaning, color and range , depending on the chosen effect type, and apply the documented matrix to it

Once all of this is tested sufficiently and working well, we can go about requesting full dumps and reverse engineer those. But the road is long and winding :slight_smile: Let’s start with Question 1.

1 Like

establishing comms

YES :slight_smile:

And fairly easy: I connected the MS70 with an old fashioned USB cable (the ones used on older photo camera’s) onto my MioXL. Lo and behold, my MIOXL even provided the pedal with power ! No need for the external adapter. That IS brilliant.

I downloaded the Zoom MS70-CDR MIDI specification, made by C. Feddema aka sixeight (www.vguitarforums.com). You should be able to find it on the internet. I’ll use it as a reference.

First step: I created a sysEx button on an empty preset and send the identity request to the MS70 (be aware the 00 in bold is a variable and stands for a sysEx Device ID. I’ll will make this a variable later on in my sysEx strings):

F0 7E 00 06 01 F7

When sending it, the MS70 replied with

F0 7E 00 06 02 52 61 00 00 00 32 2E 31 30 F7

which is as expected.
image

The communications have been established :partying_face:

Next thing I did, was create my standard interface for program changes, this time keeping the programs between 0 and 49 (= 1 to 50), without bank numbers. If you want to know the ins and outs, go check some of my presets, I’m doing this more or less identical in all of my presets.

image

Last task of the day: have the MS70 send out parameter changes?

For this I made a toggle pad that transmits

F0 52 00 61 50 F7 (go into editor mode)

when On and

F0 52 00 61 51 F7 (leave editor mode)

when Off.

And indeed I now see the pedal transmitting sysEx messages of 10 bytes in total, when I control an effect parameter on the pedal (see below in the screenshot, the ones sent as “A01 --” are the ones coming from the MS70)

image

That’s all for today!

2 Likes

Following, super interested if this comes to fruition. Though I am not sure I’d be able to assist, I thank you for your efforts.

1 Like

A bit of patience will be needed : there are more than 130 separate effects to document, and the documentation is neither correct, nor complete.

Here’s a draft version of the conversion work being done
Zoom MS70 FX Matrix draft.zip (73.1 KB)

1 Like

Good news :effect type address logic more or less found.

I may have resolved how the various effect types are addressed. It is a combination of a Category, a main ID and a variant ID. If I order the effect types with those 3 ID’s I get exactly the same order as the pedal itself uses.

Below are the address components for the First effect as found in the 146 bytes Current Patch dump.

The category is a 4 bit ID, but only 7 values are used.


with the following values:

  • 0 - Thru
  • 1 - Dynamics
  • 2 - EQ/Filter
  • 6 - Chorus
  • 7 - Various
  • 8 - Delay
  • 9 - Reverb

The main ID is made from 6 bits, mostly used sequentially, and ranges from 0 to 32.

The variant ID is made of 4 bits, but only 6 values are used: 0, 4, 5, 8 ,10, 12 which I labeled:

  • blank (no variant)
  • 4
  • 5
  • B
  • B2
  • B4

The logic in the variant ID is probably more meaningful to the effect designers than to users.

The general look and feel of the preset could be as follows (no logic yet!)

1 Like

And by now, all effects should have been identified. For each effect type, a name has been given, knob setting (name, min, max, option list/overlay and color). There are 57 overlays to dynamically allocate to various parameters.
The details per effect type and per parameters are found in the zipped excel.

The foreseen colour coding:

  • White : levels or Left Channel
  • Blue : speed and times
  • Green : tone , filter
  • Red: pitch, or Right Channel
  • Purple : all others

Zoom MS70 FX Matrix.zip (100.4 KB)

On to the next step.

The first usable version of the MS70 CDR pedal is out.
https://app.electra.one/preset/XQIdiLos9vCzBs4lk8fO

It should be usable for some other Zoom models, but I haven’t got them so I can’t test them.
Loading might take a while: there are almost 60 overlays to be constructed, 2 of which are created while loading and together they contain more than 6000 values. Let it run :slight_smile:

A few things can’t be controlled yet from the E1: on/off of FX units 4-6, changing the effect type of a unit, setting the number of units and setting the tempo. For this to work I can’t use the more straightforward sysEx parameter Change, but I need to reconstruct the full 146 bytes of a preset and send these back to the pedal.
That work still needs to be done.

In the meantime, enjoy, and provide me some feedback.

This looks really useful! Out of interest will it work with the hacked pedal with all the Zoom effects, or does it need the stock ones only? I’ll try it out on my Mk1 anyway but that might be my first stumbling block…

Actually ? Yes, I could make it work :grin:. By accident I learned about that hack today, seeing Florian Pilz’s youtube on it. I think it is possible, but I’ll need your assistance .

I guess currently when you reach one of your hacked preset types, it will either show the incorrect parameters of the previous unit slot you looked at, or it would show a big undefined parameter range. I did not really took measures on this, so it will not look nice, but it won’t lock up your pedal. I should always show the undefined parameters, in such case. Will work on it for the next version.

Word of advice: if you scroll very quickly through effect types in a slot on the Zoom, disable edit mode on the E1 while doing that: the Zoom transmits the full patch every time you click, and there is a lot of processing going on on the E1 to get it all straightened out. If you move very fast, communications may get clogged. By disabling edit mode, there is no MIDI traffic to get clogged !

You’ll need to provide me info on each of these additional zoom effects.
The data needed are:

  • name of the effects
  • category it belongs to
  • name of each parameter
  • range (starting at 0) for each parameter when sent out by the MS70 (check this with Midi-Ox, be aware each parameter change can use two bytes to go beyond 127: the first is the LSB, then the MSB)
  • overlay needed for the range (per parameter) What labels do you get to see on the MS70?
  • dump of the received sysEx(via MID-Ox ) of the first 25 Bytes from the 146 byte dump the Zoom sends out when in edit mode, whereby you assure your new effect Type is in slot 1…

It would be interesting you reserve engineer at least one that way, so we may try it out

1 Like