Arduino Based ZOOM MS70-cdr Midi Program Changer

6,179

14

23

This project is based on Lawrence Doss 's one. The only difference is on the choice of the usb host device (in this case a USBHOST2 from Hobby Tronic with Midi firmware on. Here is an exemple of what you can generally make with an Arduino bord, here a Uno one and 2 switches. The number of presets depending of how many switches you need and the capacity of the Arduino board obviously.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: MS70 Arduino Midi Program Change

material:

1. arduino UNO - chinese one they're cheaper

2. USBHOST2 from Hobby Tronic

3. two momentary spst footswitches (or more than two depending on which example you'll take)

4. spare electrical cable

5. a box to fit all

6. a usb cable between usb shield and Zoom pedal + another one to program the arduino (different type)

7. spare arduino's male pins

8. nine to twelve volts transformator (positive center pin) for the Arduino

9. ZOOM MS70-cdr obviously / with its own power supply (negative center 9V.)

tools:

1. soldering device

2. iron

3. drilling tools if you want to fix all in the box

4. some hot glue always help!

5. Arduino simulator free @ https://www.tinkercad.com (optional)

.

Step 2:

Solder cables with the male pins and the instant switches (see schematic), the choice of the pins is yours just adapt the code and send it thru your Arduino ide (mine is version 1.8.5). Pay attention that these chinese Arduinos need a proper driver.

Connect the usb host to your Zoom pedal, it doesn't need proper power when connected to USB but it's less noisy .

Plug your Arduino board to power transformer (wait a moment)

Test all the thing, it must do work! If not, check out all cables and wiring.

.

Step 3:

if it works disconnect it all, fix it all in your case (some drill work needed here)

drill a hole for power plug and another for the usb host, ensuring that it all fits in your box before.

Don't forget to drill holes for your switches, except if you plan to make'em externals...

I suggest to put a little hot glue on the soldered males pin and to NOT solder anything directly on your Arduino board.

.

Step 4:

Upload the exemple code here below but pay attention that they are two different schematics as two different projects like exemples... Connect it all again and enjoy!

You normally do have in the exemple 1 below, one switch to increase preset and another to decrease . For any other kind of controls just adapt your ino sketch. If you need help just ask.

------------------------------------------------------------------------------------

Arduino example code (see below):

added: the sketch named MS70_4patches_2banks is an example suggested by a follower that involved 4 switches (4 patches) and 1 switch to select bank A or B, by ex: 1 to 4 = A / 5 to 8 = B.

Just adapt code to hardware (pin numbers etc...)

------------------------------------------------------------------------------------

Step 2: Personal Links of Interest

check out the most outstanding band I actually play on it!

ZeK

Microcontroller Contest 2017

Participated in the
Microcontroller Contest 2017

Be the First to Share

    Recommendations

    • Assistive Tech Contest

      Assistive Tech Contest
    • Reuse Contest

      Reuse Contest
    • Made with Math Contest

      Made with Math Contest

    23 Discussions

    0
    None
    SpiffyBiscuits

    7 weeks ago

    Hi

    This is an amazing resource. I’ve been looking for ages for something like this and tried lots (including Lawrence’s) and this is by far the simplest.

    I’ve got the increase/decrease working just fine but when I use the patches some of the buttons skip a random amount of presets then stop working altogether.

    Anyone got any clues for a fix or had this happen to them?

    7 replies
    0
    None
    CarraNSpiffyBiscuits

    Reply 7 weeks ago

    Hi!

    if you post your code (and a schem) maybe we'll can help...

    cheers

    0
    None
    SpiffyBiscuitsCarraN

    Reply 7 weeks ago

    Hi! Thanks for replying!

    I just used the patches 2 bank code unedited from the download above and copied the circuit from the schematic above. It worked perfectly for the up and down change with the other code and I just added a few more switches for the patch change code and it acted not quite as I was expecting!

    Thanks

    0
    None
    CarraNSpiffyBiscuits

    Reply 7 weeks ago

    So question 1: what are you expecting?
    question 2: what are doing the added switches and how are they connected within the circuit ?
    question 3: what are the changes you made in your code?

    0
    None
    SpiffyBiscuitsCarraN

    Reply 7 weeks ago

    So:

    1) as far as I understood the code/ intention - the patches 2 banks let you select individual patches at Will with the press of a switch. So you could go from patch 1 to 3 to 4 and to 2 without having to scroll up and down. Is that right?
    2) the additional switches are wired as per the schematic and connected to the next few analog pins after the two used for the increase/decrease code. I’ll check that the patches code is working on the pins that I connected the switches to. That could maybe be a reason for the off behaviour?
    3) as far as I know (unless it was by accident) I’ve not changed the code at all from when I downloaded from the link above.

    Thanks for your time helping me with this!

    0
    None
    CarraNSpiffyBiscuits

    Reply 7 weeks ago

    1) not exactly, there are 4 switches for patches (presets) and another one for banks. In this case 2 banks but you can add more... Check below, I've added a new schem as it matches the code "MS70_patches_2banks-2.0.ino" above.
    2) right!
    3) I have upgraded this code as it was something wrong on it (never tested). You were right, sorry!

    cheers!

    0
    None
    SpiffyBiscuitsCarraN

    Reply 7 weeks ago

    Amazing - thanks! I'll give it a go this evening and see if that works for me.

    Out of interest, what did you change in the code? I'm fairly new to all this and am trying to get my head around what does what in the code!

    0
    None
    CarraNSpiffyBiscuits

    Reply 7 weeks ago

    Actually there were too much mistakes to describe them all here !
    But I debugged this code with an excellent and free simulator at https://www.tinkercad.com .
    Now it must do work!
    Don't hesitate to tell us what's going on! Cheers!

    0
    None
    juarescamargo967

    Question 4 months ago on Introduction

    good night
    I have a G1on zoom pedalboard and would like to control it by buttons with the arduino, but I do not know how to do the programming.
    I want to control the individual banks: A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 - It would be 9 buttons.
    it would be possible? Can you control these individual banks with arduino? You can do the programming. Thank you

    0
    None
    RuiMonteiro

    6 months ago

    Hi, nice work,

    Is it possible to send Control Change CC messages? I would like to control the parameters from a DAW with CC midi messages but I don't know if it's possible or not!

    Thanks.

    1 reply
    0
    None
    CarraNRuiMonteiro

    Reply 6 months ago

    Hi

    yes indeed but what you must pay attention for is: what kind of midi CC will recognise your pedal? In theory you can deliver any kind of midi messages including notes.
    cheers

    0
    None
    CarraNanto_angus

    Reply 1 year ago

    you can try... but not sure it works.

    cheers

    0
    None
    oetzi1977

    1 year ago on Step 2

    Hi CarraN, I've used the first code and it works great!

    So I've tried to do another step using the second code (4 patches 2 banks) but it doesn't work: I've uploaded the code on my arduino board as it is, using the same connection scheme you've posted for the original instructable, simply adding another three buttons connected to pins A2, A3, A4.

    Every button just let you increase the patches up in number. I've checked connection many times and everything seems to be right, if I swap back to the "first version" of the code it works.

    Maybe I have to change something in the code?
    Many thanks!

    0
    None
    oetzi1977

    Question 1 year ago on Step 1

    Hi, I've realized your arduino based controller for Zoom ms70cdr, and it works great!
    I was wandering if it could be "expanded" with more functions. Unfortunately I'm not a programmer, and I don't know how to modify Arduino code to add more switches.
    Is it possible to recall a specific patch instead of slide one step up/down?

    I've seen a project where you got 4 stomp - like the two in your project - to recall 4 different specific patches, and another stomp (3pdt?) to switch between bank A/B, so you can have 8 patches to recall.

    2 answers
    1
    None
    CarraNoetzi1977

    Answer 1 year ago

    Hi!

    yes it could be used as an example but more important it sould be used to expand it, depending on the kind of arduino you choose and the final project you want ! In your case it's very simple to do, the key of the code are the program change numbers and which switch act to change 'em. If you own a Uno you can built until 17 switches and choose what you want they do. Theorically you can even built an arduino based programmer but I don't recommend you to do it at this stage, more skills are needed!

    Feel free to ask for more if it's too general...

    edit:

    your code->

    int presetSwitch[] = {14,15,16,17}; // presets 1 to 4

    const int rangeSwitch = 18; // add or disminish +4 (range)

    int range = 0;

    int programChangeValue = 0; // if you want to begin from preset 1

    int dlay = 100; // adjust this to taste

    /******************************************************/

    void setup()

    {

    for(int i=0; i<5; i++)

    {

    pinMode(presetSwitch[i], INPUT_PULLUP);

    }

    pinMode(rangeSwitch, INPUT_PULLUP);

    Serial.begin(31250); /* for midi communication - pin 1 TX */

    }

    /*********************************************************/

    void midiProg(byte pcNum)

    {

    Serial.write(0xC0); //midi program change status

    Serial.write(pcNum);

    }

    /*********************************************************/

    void rangeValue() //select presets 1 to 4 or 5 to 8

    {

    if (digitalRead(rangeSwitch)!= HIGH)

    {

    range = range +4; // add 4

    if(range >4)

    {

    range = 0; // minus 4

    delay(dlay);

    }

    }

    }

    /*********************************************************/

    void loop()

    {

    rangeValue();

    for(int i=0; i<5; i++)

    {

    if(digitalRead(presetSwitch[i])!= HIGH)

    {

    programChangeValue = programChangeValue + i + range;

    midiProg(programChangeValue);

    delay(dlay);

    }

    }

    }//end

    cheers

    0
    None
    oetzi1977CarraN

    Answer 1 year ago

    Great! Thank you so much!

    The board I'm using is the one you linked into your instructable, with the usb shield from hobbytronics.

    In order to "miniaturize" it all I was wandering if this board can be used instead of the UNO:

    https://www.aliexpress.com/item/MINI-USB-Nano-V3-0...

    About the code you sent me:
    I have to copy/paste this code into Arduino IDE and Load to the board, right?

    Just a question: this setup will let me select between 1,2,3,4 patches WITH bank a/b switching?
    so it will be: BANK A - Patch 1,2,3,4 / BANK B - Patch 1,2,3,4

    I'll attach an incomplete image of PIN Usage: is it necessary to use a 3pdt (or 2pdt) for bank switching, or a soft touch 1spst like the other 4 can be mounted using only pin 4?

    I was thinking about 3pdt or 2pdt to insert a led that gives you visual feedback about the bank you are using, but maybe this can be done from the arduino board...

    Thank you so much!

    Schematic-Patch-Switcher.jpg