Skip to content
Craven112 edited this page May 24, 2016 · 32 revisions

This is for the full version. For the standalone version go here.


Contents

Overview
Disclaimer
Requirements
Setting it all up
Arduino connections
Standalone mode
Failsafe
Android app
SysEx messages


Overview

Watch this video for an overview of the full setup.

At the center of it all is an Arduino with a USB host shield. The Zoom is connected to the USB host shield, and is sent program changes (A0-J9). Using a HC-05 bluetooth module the Arduino communicates with an Android device.

The idea is that you make a list of songs. You can assign 3 different patches (patch A, B and C) to each song. The (optional) pedalboard consists of 6 switches. Three switches to choose between patches A, B and C, a switch to go to the next song, a switch to go to the previous song, and a switch to enter tuner mode.
You don’t need the pedal board, since the Zoom can be fully controlled with the Android device, but for changing patches in the middle of the song it is much more convenient to use footswitches.

Have a look at this page to read more about what the app can do.

Features

  • up to 100 songs, with 3 patches and a text box each
  • songs order can be changed
  • move/copy/insert functions
  • area for notes/chords/lyrics
  • clear all (deletes all song settings)
  • Zoom is powered through USB
  • 1 footswitch for each patch (A,B and C) with indicator led
  • prev/next song switches
  • tuner switch with indicator light
  • power/BT connection indicator light (red = no connection, green = connection)
  • power in & out (5v out for charging the Android device)
  • control out (goes into the control in on the Zoom, allows tuner mode and in the future volume control)
  • Standalone mode
  • Failsafe

Work in progress/future features

  • volume control using on-screen slider. Can also be used for other things, it's basically a simulated expression pedal (will need to use a DAC, since PWM isn’t read correctly by the Zoom)
  • backup/import set

There are still some bugs that I need to work out, and some features to add, but I do believe I’ve made a quite powerful addition to my Zoom B3. Let me know what you think. And if you have questions or suggestions for features, please let me know.


Disclaimer

I cannot be held responsible for any damages. This includes electrocution, lost fingers, lost gigs due to malfunction, etc. Everything is still in beta, so expect bugs and other problems. Use at your own risk!


Requirements

You can get away with only using the Android app, without any footswitches. But I don't recommend it. You could also choose to use less switches, for instance only 2 patch switches, or you could leave the prev/next song switches out. It's all up to you.

Minimum requirements

  • Zoom B3/G3
  • Arduino Uno
  • Arduino USB Host Shield
  • HC-05 Bluetooth Module
  • Resistors: 1x10k, 1x22k

Optional

  • Momentary footswitches (6x)
  • LEDs (4x mono color, 1x duo color)
  • 6.3mm Stereo Jack
  • Enclosure
  • Resistors: 1x220 ohm for every LED, 10k for every switch

Arduino libraries


Setting it all up

  1. Download and install the Arduino software and the required libraries (here and here) (guide to installing libraries)
  2. Download the Arduino code and Android app here.
  3. Upload the Arduino code to the Arduino (guide) (Always disconnect the HC-05 when you're uploading code)
  4. Set the HC-05 baud rate to 115200 (guide) You can also change the name and password if you like.
  5. Connect everything to the Arduino
  6. Pair the HC-05 to your Android device (default password is probably 0000)
  7. Install the Android app & run it
  8. Connect the Zoom to the USB host shield
  9. Done!

Arduino connections

Here's a schematic of the footcontroller:

Footswitches

Each footswitch is connected to vcc at one leg, and to ground through a 10k resistor and to the arduino at the other leg, just like at the blink tutorial. They are connected to the following Arduino (analog) pins:

  • PatchA = A0
  • PatchB = A1
  • PatchC = A2
  • Previous song = A3
  • Next song = A4
  • Tuner/Mute = A5

LEDs

The leds are connected to an Arduino pin and ground, with a 220 ohm resistor in series. The duo led has a single cathode (-) leg, so the resistors are placed at the anode (+) side. The duo led is the power/BT on indicator They are connected to the following arduino pins:

  • LED A = 2
  • LED B = 3
  • LED C = 4
  • LED Power Red = 5
  • LED Power Green = 6
  • LED Tuner = 7

HC-05

The HC-05 has 6 pins, of which 4 will be used. Note the voltage divider on the RX pin, this is necessary to reduce the voltage from 5V to 3.3V. This voltage divider can be made from 2 resistors of which one is around twice as big as the other. I used 22K and 10K. You connect both resistors in series, connect the 10K resistor to the Arduino pin, the 22K resistor to ground, and the HC-05 RX pin in the middle of the two resistors (where they are connected). The HC-05 is connected as follows:

  • State = Not connected
  • RX = To TX (pin 1) on the Arduino, through the voltage divider
  • TX = To RX (pin 0) on the Arduino
  • GND = To ground
  • VCC = To VCC (5V)
  • EN = Not connected

Note: Always disconnect the HC-05 when you're uploading code to the Arduino Since the HC-05 uses the same tx and rx pins as the usb connection on the Arduino, they will interfere. You could simply put a switch between vcc and the vcc pin on the HC-05, and disconnecting the power whenever you're uploading to the Arduino.

More info on the HC-05
The HC-05 has to be set up separately from the Arduino to set the BAUD rate, name and password. The BAUD rate has to be set to 115200, the name and password are up to you. Guide to setting up the HC-05 here and here.

Note: Some pins might be labeled differently on your model

Control

Note: Expression pedal function has been successfully emulated using a digital potentiometer, a DAC might also work. This is not included in the code.
The footcontroller can simulate both a footswitch and an expression pedal through a single stereo cable.

  • Sleeve = Not connected (ground is already supplied through the USB cable)
  • Ring = Pin 9
  • Tip = Pin 8

How it works:
Under normal operation (use as expression pedal):

  • Tip = High
  • Ring = Variable voltage

To go into the tuner:

  • Tip = Low
  • Ring = Low

Standalone mode

This video demonstrates the standalone mode.
The full version has the option to use it as a standalone controller. To go into standalone mode you must power the controller down, and while holding the tuner button, power it back up. Keep holding the tuner button until the power led turns orange. Functions:

  • PatchA button: Previous patch
  • PatchB button: Next patch
  • PatchC button: Previous bank
  • PrevSong button: Next Bank
  • NextSong button: Not in use
  • Tuner button: Tuner/mute

Failsafe

This video demonstrates the failsafe function.
In case the bluetooth connection is lost, the controller has a failsafe function. The power led will turn red to indicate that the bluetooth connection is lost. The three patches will stay just like they were before the connection was lost. If either the previous or next song button is pressed the failsafe is activated. It will load three chosen patches into patch A, B and C. It is advised to use the three most important patches for this, the ones that are most essential to you. The failsafe patches can be set up in the Arduino code, under 'failsafeA', 'failsafeB', and 'failsafeC'. The default settings are patches A0, A1 and A2 respectively.


Android app

Note: The app was made for a Samsung Galaxy Tab 2 10.1", it might not display properly on your device.

Note: Starting up the app for the first time might take some time, please be patient.

Go here for more info on the app.

SysEx messages

For future reference These are the SysEx messages send between Edit&Share and the Zoom.

Code structure: {F0 [base] [code] F7}
[Base] for B3: [52 00 4F]
[Base] for G3x: [52 00 59]

At startup Edit&Share sends a lot of information to the Zoom and vice versa to sync the two. After that Edit&Share sends the following every 500ms (probably to check if both devices are still awake and connected):
[code] = [50]
Followed by
[code] = [16] if nothing happens
[code] = [new setting] if something happens

The Zoom then responds with: [code] = [17 45 00 00 00 00]

Changes Edit&Share sends:
[code] = [31 A B C 00]
A:

  • 00 = effect 1
  • 01 = effect 2
  • 02 = effect 3
  • 03 = other settings (for Zoom B3)
  • 06 = other settings (for Zoom G3x)
    B:
  • 00 = switch on/off
  • 01 = change effect
  • 02 = knob 1
  • 03 = knob 2
  • 04 = knob 3
    if A = 'other settings':
  • 02 = patch level
  • 08 = tempo
  • 0A = balance
    C:
  • 00 = off
  • 01 = on otherwise:
  • C = value

This list is incomplete, so if you find anything please let me know at cdeenen@outlook.com and I'll update the list.

I have not been able to successfully send SysEx messages from the controller. I tried simply sending the code and I tried including the 500ms repetition. After the initial sync I was able to send custom SysEx messages from my computer to change the settings on the Zoom as long as I didn't disconnect the Zoom. Sending SysEx messages without first starting up Edit&Share did not work. Edit&Share probably sends some kind of message to let the Zoom know to listen for SysEx messages, but I have not worked this out.