Arduino Controlled GTR Pedal Board - DB/Ram/Etc...

So, I've built this pedal board... Basically every pedal is in its own loop, and each loop is switched in and out of the circuit via a DPDT relay (controlled by arduino mega 2560 r3) and, additionally the two volume pedals on the right I modded with 10k pots and have them hooked to analog pins... Arduino converts their voltages into MIDI continuous controller data which can be sent to any parameter on the MIDI-enabled pedals. The foot controller can also be used as "bass pedals" to send MIDI note data to the onboard analog synth (MOPHO), or to external synths / computer.

In the empty spot in the middle of the board I'm going to add a seven-segment based display and 5 multi-function momentary switches. There are a lot of parameters to manipulate - signal routing, Expression pedal Channel / CC selection, Beat clock master selection, tempo, Program Changes, etc, etc...

This is where my question starts. I'm basically going to need to create a menu system similar to a digital synth to control all these parameters. I would also like a database which houses "presets" where I can instantly recall a set of stored parameters. Obviously all of this will require a fair amount of data storage, mostly, it seems for the text strings for the preset names and menu text. This is my first microcontroller project, and I'm not sure of the best way to store all this data (SD Card or EEprom) ? I'm wondering if a more powerful microcontroler board with more RAM might be necessary for this. I'm trying to keep beat clocks, etc away from the Arduino MIDI ins to lower the amount of data being processed. The amount of real-time data to be processed isn't too extreme, but I'd like to have some processing power to spare should I want to add more features.

Also, the pedal board is very clean sonically. I wasn't sure how to set up a good grounding scheme, but I experimented a bit and have it working quite well. However I can hear some noises, especially it seems when serial data is being sent by the Arduino... Are there certain guidelines as far as how to keep processing noise out of audio circuits? Being a guitar setup, the gain is very high, so even a very small amount of noise is highly magnified.

Hopefully I've described the scope of the project in enough detail... and people can offer some advice on how to move forward.

Thx yall!!

Tim

P.S. forgive the feet in the photo

Hi Tim,

I’m doing something similar, but no MIDI on mine. My version has: in/out of loop for each pedal, tap tempo, multiple inputs (guitars), and multiple outputs (amps). I am using the EEProm for my memory, but with no MIDI settings to store, I assume I do not need as much to store as your project.

I am using an uno with shift registers to get enough input / outputs for mine. I have tested everything on the breadboard, and I am currently combining everything onto my circuit board for my first full test of the system.

I am using a 20x4 LCD for user to see what is going on and to program settings. It only takes 6 outputs from the arduino.

When you mentioned noise, are you picking up noise when you send power to the relay? If yes, I would guess you are having bounce issues at the relay. The way to beat bounce issues is to slowly apply power to the relay (still faster than the blink of your eye). The circuit called “relay driver” from this link is what I am using to stop bounce issues. Login . It eliminated all of my noise issues on the breadboard while testing.

Here is a great article (a bit dated) of an early version of what we are both doing: A Remote Indicating Effects Bypass System

I would be happy to discuss more if you have questions, but I do not claim to be an expert.

Rob

Thanks Rob,

Did you use the DB library for preset storage? I had an issue with it, addressed on a different thread, where eeprom would be wiped upon upload. I am hoping to have one sketch to manage/upload presets and another to just run the thing. Seemed like a good idea since I wouldn't have to have all the preset text strings within the sketch code (which would take up program memory, and kind of defeat the purpose of a DB anyway, if I am thinking about this correctly).

Is the LCD bright/big enough for you to read if playing? I got a bunch of 1" high 7-segments from Futurelec with controller chips which I'm hoping will look pretty awesome. I think they just need a serial connection but I haven't jumped into that yet.

The noise thing was actually happening when moving the CC pedals. I think it is because I am currently sending debug code from the arduino when the pedals are moved.

As far as my storage needs, I guess I'd like to be able to store up to 100 presets, each would have:

12 Char "Title" String
Loop On/Off Pedal Array (12 pedals)
Preset Values for each MIDI pedal (4 x 3 digit number)
CC channel/number/value for each of the two controllers
Song BPM
Probably a bunch of other info I'm forgetting about...

There are so many possiblities with this setup... as I said above I don't want to be running up against processor / storage boundaries right out of the gate. Basically I'm wondering if I should be looking into one of the more powerful clones with more memory. I hope that's not an inappropriate question on the Arduino forums :slight_smile:

Rob - let me know how your project is coming along, and if I can provide any help in the other direction.

Thx

Tim

Tim,

Here is a quick proof I did to test EEProm. The read one uses the serial monitor to see what is happening. I am afraid that EEProm might not have enough space for what you want to store.

To populate:

#include <EEPROM.h>

void setup()
{
  for (int i = 0; i < 512; i++)
    EEPROM.write(i, i);
}

void loop()
{
}

To Read:

#include <EEPROM.h>

int a = 0;
int value;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  value = EEPROM.read(a);

  Serial.print(a);
  Serial.print("\t");
  Serial.print(value);
  Serial.println();

  a = a + 1;

  if (a == 512)
    a = 0;

  delay(500);
}

For the LCD size, I built some large custom fonts (up to 4 rows tall), so it is very visible from a long way away. There are some good examples on this site for large fonts. My version shows a large 4x4 number for the "channel" that is being run (each stomp button is a channel), or "B" for bypass, and the it shows a 2x2 number for the port/pedal that is in the loop.

Rob

Hey, sorry so late to the party, but this looks like what I'm after. Tim, or whoever else is still around, is there code/schematic available? Any updates?

Thanks,
Ben

Hi Ben,

I'm not one of the original posters, but I've done a similar project.
Let me ramble a bit and hopefully trigger some helpful thoughts.

What should your switching board actually do?

  • switch individual effect boxes in/out of the signal path - this is probably the basic requirement?
  • do you have MIDI controllable effect boxes?
  • do you need programmable presets?

If you only have 3 or 4 non MIDI effect boxes, then the whole thing is probably not worth the effort, because for a real "preset", also the settings of the effect need to be changed, and this is not possible.

If you have 6 or more effect boxes, then presets becomes more useful - especially if you can arrange the presets, so they match the song list of your gig. Now you can switch from one song to the next with one button push.
Effect settings still can not be changed. However if you have, say, 3 different distort boxes, you can have 3 different distort sounds, without having to change any settings.

If you have MIDI effect boxes, then the project becomes really useful :slight_smile:
However also the complexity of the user interface (menus) rises.
There is always the compromise between

  • a high resolution display (good for displaying menus and changing settings, but small), and
  • 7-segment LEDs (big, well readable from far, but unfriendly menu navigation)

Commercial multi effect pedals solve this with several approaches:

  • the multi effect board has a menu display AND a 7-seg display
  • configuration editing is done on the PC with a software interface

Do you have a tablet? If yes, you could use the tablet as interface and display. Very elegant!

If you are actually at the beginning of your guitar effects adventure, and don't own many effect boxes yet, then seriously consider a high quality multi effects board. This makes life on the stage MUCH easier :slight_smile: (if budget allows :wink:
Studio is a different matter. But I assume you want this for live stage?

Have you found other examples of your kind of project on the internet?

Are you a beginner with arduino projects? Your number of posts, and your request for code and schematic suggest so. If yes, then you need to seriously consider how much time, effort and money you want to put in this project.
If you are a maker and tech at heart, then go ahead!
If you are mainly a musician, and the whole tec thing is just a means to an end, then your time and money is maybe better spent with a multi effects board.

Thomas

Hey, Thomas. I am a beginner with Arduino, but not with effects. To start with I would expect to have one MIDI-controllable effect (a Zoom MS-70-CDR), and just switching for the others, but down the road the ratio may change. I have for years had a simple pedalboard, with all the effects (some of which are DIY) hooked in series, but creating an Arduino-controlled board seems to really open up the possibilities by allowing me to select an entire patch, from input to amp, with a single stomp. I have always had trouble with tap dancing, so this just seems like the thing to pursue. I'm also well aware of commercial products that do this sort of thing to a greater or lesser extent, but I'd rather DIY it because (a) I'd rather DIY anything; (b) I'm not a gigging professional, so I can't really justify the expense of the commercial units that come close; and (c) I like the possibilities of customization. For example, a typical 8-loop switcher treats all the switched effects equally; I might want to explore having certain units arranged as a 1/x block, such as preamp/distortion types that set the basic gain structure for the patch; or pre- and post- boost/eqs controlled by a dedicated "Lead" switch, but configurable via loop switching or MIDI; selectable compression settings; amp channel switching; etc. Some of these are things I currently shy away from because of the added complexity and the tap dance, but preset patches just opens that door right up.

Jagtone:
MIDI-controllable effect (a Zoom MS-70-CDR),

It doesn't have a MIDI interface - however it responds to MIDI commands via USB. Which means you need a USB host shield. Connecting the Arduino directly to the MS via USB will not work, as both parts are USB clients. The USB host shield is a USB master. See also

I might want to explore having certain units arranged as a 1/x block, such as preamp/distortion types that set the basic gain structure for the patch; or pre- and post- boost/eqs controlled by a dedicated "Lead" switch, but configurable via loop switching or MIDI; selectable compression settings; amp channel switching; etc. Some of these are things I currently shy away from because of the added complexity and the tap dance, but preset patches just opens that door right up.

All sounds doable. I guess now the point has arrived, where you need to decide how exactly the audio signal path is supposed to be, and what exactly your foot buttons should do.

Audio signal path
The wiring is relatively simple, if the order of effect chain stays the same. For each effect box, you would have a relay which switches the box in/out of the chain.

If you want to change the order of the effects in the chain, a lot of multipe-throw relays(or alternatively CMOS analog multiplexers) are needed. See here (very interesting reading :wink:
http://www.geofex.com/article_folders/fxswitchr/fxswitchr.htm
http://www.geofex.com/article_folders/spiderfx/spiderfx.htm
http://www.geofex.com/Article_Folders/juggler/juggler.htm

Button scheme
Some suggestions:

  • A row of 5 (or 10) switches for presets 0 - 9
  • 2 up/down switches for selecting the next/previous group of 10 presets, e.g. 10 - 19. This group is typically called a bank.
  • a Lead/Boost switch, which toggles on/off 2 predefined effects e.g. a distort and an EQ. If these effects are already contained in the preset, then there is no change in the sound.

selectable compression settings

You'll need either 2 compressor pedals, or a MIDI controllable one.

amp channel switching

How do you normally switch the channels on your amp? Does it have a foot switch? Is it MIDI controllable? What amp is it?

1/x block

do you mean a block of e.g. X = 3 distort pedals, where only 1 of the 3 distorts should be active at any time?

Pedal board mode vs. Preset mode

Even though the preset mode sounds great at first, it's not a one-fix-all solution.
Preset mode is great for switching from one song to the next. But what if you have different sounds within the song? You will have to put all the relevant sounds beside each other. You could arrange it in such a way, that every bank is one song, and within the bank, you have 5 or 10 different sounds.
This is possible, but needs a lot of planning and preset programming ahead. And it's not very flexible, if the musical arrangement changes. E.g. if you want to change the MS-70 settings a bit for the song, you will have to change it in ALL the presets for this song.

I actually started to use the pedal board mode a lot again, after I was fed up with re-programming and re-arranging the order of the presets all the time. Now you can switch e.g.the delay on/off, without needing a dedicated preset simply for switching the delay on/off.

With the above setup in mind, this would be another row of e.g. 5 buttons, which are dedicated to one kind of effect type, e.g.

  1. Compression
  2. Distort
  3. Chorus
  4. Delay
  5. Reverb

Unfortunately, you can't use the footswitches of the actual effect pedals for this purpose, because they need to be on all the time, or else the presets will not work anymore.

Your Lead/Boost button is actually a similar concept - a button dedicated for one sound change, regardless which preset is active.

Display/interface
It would be useful to have an indication which effects are currently on/off. Either with a radio button type graphics on the LCD, or with actual physical LEDs.

Remembering the purpose of 100+ presets is actually not easy, if you don't use them every day. Therefore you will need a paper cheat-sheet, or you provide a possibility to save and display the purpose/name of the preset. E.g. Bride pickup crunch 70s style delay.

What do you think?
Thomas

Thanks, Thomas, for brainstorming this with me. Yeah, what you said, that's my thinking, pretty much. I hope I'm not biting off more than I can chew in complexity, but here is some more of how I imagine this.

I am familiar with all the Geofex stuff--I have been a member of DIYStompboxes back to the old Ampage days--but I don't think the ability to change the order of pedals globally is worth the added complexity. The only order change I have ever found terribly useful is phasing before or after distortion, but there may be other ways to skin that cat (such as to leave post-distortion phasing to the MS-70-CDR and just stick a small phaser pedal in the same loop as the distortion for pre-distortion phasing), and it's not a deal breaker in any event.

I agree about having independent control of the pedals even after a preset has been selected, and this can take the form of category buttons, as you suggest, or just separate buttons for each switched loop that can be turned on or off regardless of the active preset (with one preset being the null preset, so to speak--everything off until it is turned on). Just that those in a group--distortion/overdrive/preamps, e.g.--would work in a 1-of-n fashion, so that if I select the Fender-style preamp, for example, the Vox-style preamp, the fuzz, the clean preamp and the acoustic simulator are automatically turned off, since I'd never use two of those together. Come to think of it, that may be the only such grouping.

As for compression, I ought to be able to rig a DIY compressor with 2-3 Digipots and a Midi input to control them. This might make more sense than multiple compressors to work with, say, an ethereal ambient-type patch, country-clean, funky rhythm, janglebox, or a singy-sustainy lead patch, going between extremes of super-squishy to always-on-barely-know-it's-there settings.

I also like Tim's idea of having the loop buttons arranged in keyboard format, with a "bank" type switch to convert them on the fly to a bass pedalboard, and maybe an octave and/or tonic switch as well. Tapping out a few notes with my foot every now and then might be fun. I would think it would be possible to program a single momentary switch to select between effect, programming and bass pedal modes, with three LEDs as a mode indicator.

As for display, it is trivial, I think, to have a single LED active with each loop situated right next to each loop switch, but some of the pedal board projects I've seen also implement a small LCD display. I don't know how much more complex this makes things, but I think it would make programming the patches and keeping track of them a lot easier than always having to refer to a cheat sheet.

As for amp channel switching--all my amps are vintage-as-hell. So channel switching probably just means switching inputs, at least for the time being. I think a useful feature here might be separate volume setting at the output buffer optimized for each amp channel, whether set by midi or just a relay/mosfet switch between a pair of pots or buffers, so that signal and noise levels through the pedalboard are kept more or less even, even if the levels going into each amp channel are not. Come to think of it, this is a setting that the "Boost" switch ought to have access to as well.

I know about the USB-2-midi challenge with the MS-70-CDR, but also about Lawrence's work on that, so it seems a solution exists. I assume (but don't know) that the simplest way to go is to program each patch in the MS-70 itself, so that the pedalboard only has to send a single midi code to the MS-70 to select the patch, and not to diddle individual parameters. At the same time, if it is possible, I'd like to be able to activate an external tap tempo and an expression pedal to control certain parameters in certain patches, but I suspect that that is something that will depend on the MS-70, which I don't yet have. Currently, I have an old DOD FX-17 vol-wah pedal on my board, and it has a 5-volt CV output in addition to the standard jacks, so that might be useful. Still, if the board has the option midi control, there has to be a way to program parameters. This may be as simple as a single button to select among available parameters, and a single pot to dial them in. I imagine this gets complicated at the display.

Just FYI, other pedals on board would include an overdrive/boost (probably an SD-1 or Timmy) for stacking with the main gain elements, an octave down, an autofilter, and an echo or delay. I'm assuming that the MS-70 will cover 99% of modulation/delay needs, and kick my vibe, trem, Electric Mistress and one delay off the board, but of course that will be seen. In any case, I think 12 loops (including one to bypass the MS-70) would be plenty, and 15-30 presets in 2-4 banks. Tuning could either be handled by the MS-70, if that turns out to be workable, or by a separate tuner pedal. If it is separate, it need not be part of the system--it would just need a couple of normalled jacks somewhere to patch it in. Same thing for a looper; it doesn't need to be switchable by the system, just patched in just ahead of the output buffer.

Whadya think?

So, signal flow (tentative) with 12 bypass loops and amp channel select:

Guitar

Hardwired Input buffer/boost with midi controlled gain and eq for the "boost" button, and separate buffered outputs for preamps (loops 3-7), sidechain out for envelope control, tuner

Bypass Loop 0: Compressor, with midi-controlled compression, level and ??? settings

Bypass Loop 1: Octaver (compression automatically on and high)

Bypass Loop 2: Wah/Vol pedal (serves as expression pedal even when bypassed)

Bypass Loops 3-7: Basic gain/eq (Fender & Vox preamp/sims, fuzz, and acoustic sim) in 1/n arrangement (may be wired in series or parallel since only one of them is ever on at a time--if in parallel each gain unit only needs an SPST/SPDT switch/relay)

Bypass Loop 8: Envelope filter (compression automatically on and high; control input from envelope signal sidechain)

Bypass loop 9: Zoom MS-70-CDR

Bypass Loop 10: ???

Bypass Loop 11: Looper (I rethought it--best to leave it out of the signal chain unless I need it)

Hardwired output mixer/buffer/boost with midi selectable level controlled by "boost" button and amp selector

"Loop" 12: Amp selector

Amp

Controls required:
(A) Pedalboard/(B) program/(C) bass pedals selector (first digit in 4x 7 segment display)

Multi-function:
Buttons 0-12 (individual loops + amp selector in modes A & B) double as 1-octave bass pedals in mode C.
Selectors (a)-(d) & pot (e):
In (A) Pedalboard mode: (a) Preset bank & (b) patch selectors, (c) Boost and (d) "Bypass all"
In (B) Program mode: (a) Preset bank & (b) patch selectors, midi (c) parameter scroll-up/select (hold) (d) scroll-dn/save (hold), (e) midi parameter set (pot)
In (C) Bass mode: (a) octave, (b) tonic, & (c) waveform selectors & (e) level pot,
with multi-function indicators (digits 2-4 of 4 x 7-segment +/ LCD screen)

Tap tempo (for MS-70-CDR) (hold down for MS-70-CDR tuner on (disable all loops and output)/off)

Hi Ben,
your plan sounds good. Some remarks:

Relays
For each loop, you only need one SPDT relay. See image

loop.jpg

You can get 5V relay modules with 4 or 8 relays including driver circuit for a few $ on ebay, aliexpress etc.
They also have indicator LEDs on board. You could wire a separate indicator LED in parallel to the relay coil (with series resistor, of course)

Groups of effects and the 1/n logic
I would put all effects in series, and handle the 1/n logic in software.

LCD display
It's not that complex. There are cheap 320x240 SPI displays for 5$, e.g. ILI9341

Controls
I assume with "buttons" you mean footswitch push buttons?
"Selectors" are rotary encoder switches or small push buttons for fingers?
"pot" is a rotary switch?

Output mixer/buffer/boost
Do you want to build one or buy one?

Amp selector
This could be a 4 channel relay module -> 4 outputs.

Wiring
If you use Stereo jack sockets with L as output and R as input, you only need one socket per loop.
You will then need splitter cables. Stereo jack -> 2 mono jacks.

Pins

Input count:
4x4 matrix of push buttons = 16 buttons (wiring wise. You don't need to arrange them in a matrix)
2 inputs for the rotary encoder

10

Output count
12 loops
4 amps

16

SPI - LCD and USB host
7 pins (3 core SPI, 2 slave select, LCD reset, LCD data/command)

seven segment display - 4


Total: 37 pins

So this is definitely an arduino mega project.

Thomas

loop.jpg

Thanks! I would definitely build the in/out buffer/boost circuits--that kind of simple gain circuit is right in my wheelhouse. The compressor and preamps will also be DIY. I was actually figuring I'd probably need a couple of MUX for this--if I can get everything plugged in with a Mega, that's not half bad. Layout and wiring will be an adventure, I'm sure (as will finding a suitable enclosure at a reasonable price), but coding will be the real challenge. The last time I programmed anything, it was in PASCAL, and 35 years ago. But I have some sketches to work with. A very nice fellow named Patrick Klaassen who made "Switch8" an 8-loop +midi pedalboard controller sent me his BOM and code, as well as a link to his photo archive. I still hope to get code from Lawrence Doss to help control the Zoom--and I know that what stumped him, accessing the tuner and tap tempo through midi/USB, others have licked. So if a lot of the code is pre-written, that should help, and then the job will be mainly tweaking and integrating all those snippets and sections.

Patrick told me that for his latest build he was switching to a DPDT relay board with lower current requirements, so I am going to look into that. While I am not a true-bypass-or-die fanatic, twelve effects in series with the inputs always connected seems to me to be a recipe for tone-sucking/signal loss, unless every one of them is well buffered. The answer may well be a mix of DPDT and SPST.

I just saw that v2.0 of the Zoom firmware adds some cool toys to the MS-70, including compressors and filters. Depending on how much external control is feasible (tap tempo, expression) and how well stacking effects internally works (although the manual says up to six effects per patch, there is a point where the pedal's internal resources run out), that might just knock one another pedal or so off the board.

As for pots or stepper controls, I surely don't know enough at this point about midi to answer, although I was given to understand that pots can be connected to the analog inputs and their settings converted to midi numeric in the software. So that would seem to be cheaper and more natural for certain applications.

Jagtone:
coding will be the real challenge. The last time I programmed anything, it was in PASCAL, and 35 years ago. But I have some sketches to work with.

I‘m willing to help with the code. Since this whole thread got revived by you asking for code, I would actually suggest that we make an open source collaboration project out of this. We would host the code publicly on github, and both of us then can work on the code, and download the up to date version.
I would not build the whole thing, because I don‘t have a need for it, but I would build a mock-up of the relevant external parts, so I can test the code as well.

Github or Instructables are also good places to store other relevant information for the project.

twelve effects in series with the inputs always connected seems to me to be a recipe for tone-sucking/signal loss, unless every one of them is well buffered. The answer may well be a mix of DPDT and SPST.

It depends...
Since all the effect inputs are designed for direct guitar pickup input, they are very high impedance. The outputs however are low impedance, so they could easily drive 12 other effects without tone degradation.
However if ALL effects are bypassed, then the pickup has to drive 12 effects. This will definitely degrade the tone.
2 solutions:
Either always have a not bypassed preamp type effect as first effect, which drives all other effects
Or use DPDT relays. There‘s nothing wrong with DPDT relays, except that you won‘t get them as module, pre-soldered including driver circuits. You could simply drive 2 SPDT from the relay modules in parallel, to achieve the same wiring scheme as with DPDT. This still might be cheaper and easier than making the DPDT circuits yourself.

As for pots or stepper controls, I surely don't know enough at this point about midi to answer, although I was given to understand that pots can be connected to the analog inputs and their settings converted to midi numeric in the software. So that would seem to be cheaper and more natural for certain applications.

You can certainly use analog pots to get an analog value and then convert that to numeric.
But this approach as one big disadvantage: The analog pot is an „absolute“ value source, meaning that the position of the knob provides exactly this value. If you now edit a MIDI value, say 500, and the pot is at 100, then the MIDI value will jump to 100 as soon as you touch the knob.

The rotary encoder is a „relative“ value source. You can increase or decrease the value by turning, regardless of the current position of the knob.

I will be away without internet access for a few days.
Thomas

I’m back.

Hey. Good news: there are 8-relay DPDT boards available now. I think I would also cut down the number of effects to 8.

I'm waiting for my Uno starter kit to arrive, and I'd like to do a few simpler projects first just to get my feet wet, before really going all in on this one.

Jagtone:
I'm waiting for my Uno starter kit to arrive, and I'd like to do a few simpler projects first just to get my feet wet, before really going all in on this one.

Good plan :slight_smile: