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
- establishing comms : can I have the E1 send a sysex and the MS70-CDR respond, while monitoring that communication via MIDI-Ox ?
- 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?
- 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)?
- 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 ?
- 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?
- 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 Let’s start with Question 1.