Introduction: Build MIDI Bass Pedals for About $150
MIDI bass pedals, similar to pedals organists use to play bass notes, but instead used to play a MIDI synthesizer or sound module, have been popular for the last few decades. In addition to keyboard players, many electric bass players, such as Geddy Lee of Rush, have used them to expand the palette of bass sounds they use. But they can be quite expensive.
These were my main costs for building a set of bass pedals:
$35 Bass pedals from a Conn organ bought on eBay
$35 Shipping for the bass pedals
$44 Arduino Mega 2650 R3 controller board
$20 Sparkfun MIDI Shield
$7 9V 1000 mA AC adapter for Arduino boards
_______________________________________________
$141 TOTAL
In addition to these I used some miscellaneous stuff like wire, solder, contact cleaner, tie wraps and cables I already had. A good place to to get the Arduino components and the MIDI Shield is the Robot Shop.
Step 1: Get the Bass Pedals
I went on eBay, and literally the cheapest set of bass pedals available looked good to me, partly because it had a strong metal frame. It had been removed from a Conn home organ, and was $35, with an additional $35 required for shipping it. This is what it looked like when it arrived.
There were lots of sets of bass pedals available which had been removed from Hammond M3 organs that would likely have worked just as well, but they were a bit more expensive and didn't have the metal frame.
Step 2: Take Off the Cover and Clean the Contacts
Upon removing the cover, I could see the mechanism. There was a complex set of springs, all badly corroded. In the closeup, you can see the mechanism furthest to the left has had the contact cleaned, while the other two have not. You can see how heavily corroded they were.
This set of bass pedals had multiple switches on each pedal, but for MIDI, we will only be using one switch. We will use the top back and top front contact, so that when the pedal goes down, the spring comes up and touches the front contact.
I used DeoxIT D5 contact cleaner, but I'm sure other contact cleaners would also work. In addition to the contact cleaner, I gently rubbed with the flat part of a slot screwdriver that was coated with contact cleaner. The part that needs to be cleaned consists of the front contact and the part of the spring that touches it.
Step 3: Remove Electronics and Attach Wires
Clip the wires that go to the pedal switches and remove all the other electronics. The switches are the only part of the original pedals we will be using.
Set up the pedal switches so that one side of each switch is connected to a common bus. This will be connected to ground. The other side of each switch should have a separate wire that will go to the controller board. I had multiple colors of wire, so I based the colors of wire I used on the resistor color code as shown above, which helped me keep track of which note was going where.
Step 4: Add the Controller
Next I mounted the controller. It is important that the connections on the bottom of the Arduino Mega controller board not touch metal, so I 3D-printed a "coaster" for it. The STL file for the coaster is attached, but you don't need to 3D print something. Anything that will act as an insulator between the controller board and the metal frame will work well, such as corrugated cardboard.
The Arduino board has several holes in it. I selected two, drilled 1/8" diameter holes in the coaster and the metal frame, and used standard 4-40 machine screws to attach it. I had positioned it carefully so the power jack is flush with the end of the pedals, and the USB connector protrudes slightly.
Then I plugged the Sparkfun MIDI shield onto the Arduino, Make sure to line up the RX and Analog 5 pins on the MIDI Shield so they plug into the RX and Analog 5 pins on the Arduino Mega 2650.
Attachments
Step 5: Connect Up the Pedal Switches
I plugged a couple of 0.1" header strips into the inner row of sockets on the connector at the end of the Arduino Mega board. I already had them, but if you need to get some, you can order them from Adafruit.
I then soldered the wires from the pedal switches to the header pins. Above is a list of the wires and the digital pin numbers they connect to. The digital pin numbers are silk screened onto the Arduino board next to the connector. Do not solder to the very top pin, as it has +5 volts, and is not a digital pin, and bad things will happen if you short it to ground.
Also, connect the bottom pin, which is ground, to the common bus where one side of each of the pedal switches is connected together. I used a black wire for this one. That's it! You are all wired up!
Note: An earlier version of this step incorrectly showed the low C being connected to pin 49. 48 is the correct pin.
Step 6: Prepare to Program the Controller With a Test Program
You will need a computer to do this. The software you need is free, and is available for Macs, Windows and Linux machines. You can download it at this page: Arduino Software
Once you have the Arduino software installed and launched, extract the Bass Pedal Test program from the attached BassPedalsTest.zip file. In the Arduino software, click the menu File->Open and select the directory named BassPedalsTest, which is what you extracted from the zip file. Click the Open button in the file dialog. At this point, it will look similar to what is shown in the top picture above.
You will also need to get a USB cable, one with an A-type connector (to connect to your computer) and a B-type connector (to connect to the controller), as show in the bottom picture above.
Attachments
Step 7: Program the Controller With a Test Program
Before proceeding, flip the switch circled in the top photo on the Sparkfun MidiShield to the "PROG" position. It must be in this position for the controller to be programmed.
Use the USB cable indicated in the previous step to connect your computer to the controller. The USB cable will supply power, so you do not need to plug a power supply into the controller at this point.
If you are on a Windows machine, your computer will automatically install a necessary driver for the controller board. If installation fails (as it sometimes does), just unplug the USB cable, wait a few seconds, and plug it in again. The installer will launch again. Macs and Linux machines don't need a driver installation.
With the controller connected (and the driver installed if on Windows), next we will configure the Arduino software. With BassPedalsTest loaded from the previous step, select Tools->Board->"Arduino Mega or Mega 2650". Then select Tools->Port, and pick "Arduino Mega orMega 2650" from the list of ports. The software is now configured to program the controller.
Press the right arrow icon in the top left of the window. The program will compile and then be uploaded to the controller.
Step 8: Test Your Hardware
With the controller still connected and the Arduino software still running, select Tools->Serial Monitor. A new window will appear. If it is not set for 9600 baud at the bottom, change it to 9600 baud. Press the small reset button on the Sparkfun MIDI Shield. A line saying "Setup Complete" should appear on the Serial Monitor.
Press a bass pedal. A message saying "Note On:" followed by the corresponding MIDI note number will appear on the monitor. When you release the bass pedal a message saying "Note Off:" followed by the corresponding MIDI note number will appear on the monitor.
Press each bass pedal in turn, and ensure that the correct note number appears. If the wrong number appears or one of the bass pedals does not produce an output, check your wiring. A list of MIDI note numbers for each pedal is included above.
Step 9: Finish It!
Extract the Bass Pedal Run program from the attached BassPedalsRun.zip file on your computer. Make sure the controller is attached via the USB cable to your computer. Run the Arduino software (if it is not already running). Make sure the RUN/PROG switch on the Sparkfun MIDI Shield is set to the PROG position. Press the small reset button on the MIDI Shield.
In the Arduino software, select File->Open. In the file dialog that appears select the BassPedals1 directory you extracted from the zip file, and click the Open button. A new Arduino software window will appear.
Press the right arrow icon in the upper left of the new window. The real program to run the bass pedals will compile and download onto the controller.
After it completes successfully, unplug the controller from the USB cable. Flip the RUN/PROG switch on the Sparkfun MIDI Shield to the RUN position, and plug the Arduino power supply into the controller. Plug a MIDI cable from the MIDI Out jack on the Sparkfun MIDI Shield to the synthesizer or sound module you want to control. You can now play your bass pedals!
Attachments
Step 10: Customize It!
Attached is a document describing ways to customize the controller software. You do not need to be a computer geek to do most of them; you just need to make simple edits to the program and re-load the program into the controller.
Attachments
7 People Made This Project!
- therealjimmyg made it!
- JohnF591 made it!
- jonahliew made it!
- jbassista6 made it!
See 3 More
44 Comments
1 year ago on Introduction
I went to arduino and robot shop and they dont have the 2650, arduino does have 2560
Do you know of any other site i could check
Reply 1 year ago
I believe the 2560 is the correct model and it is a typo, but I have not been able to make the project work yet, so take that with skepticism.
Question 1 year ago
So... I built this. I was able to get all the “not on” “note off” with the test program, however when I reset and attempted to load the actual program I was unable to use the 5-pin midi out. I connected all the pins on the midi-shield to the arduino, like all 30 something of them. Was this my mistake? Was I only supposed to connect a few? Any help would be appreciated.
Question 2 years ago on Step 9
Excellent project and terrific instructions! I recently built a set from a old broken Hammond organ which turned out much to my liking. One thing I would like to try is to program them with an octave up and down switch, and maybe a midi channel selector.
Has anyone tried this?
Question 2 years ago
Hi there,
Thanks for sharing. Mine’s different. It’s quite devoid of any electronics except for the wires. Do I want to cut those and replace them or use them to wire to the Arduino board? I’m flying blind here. I know very little about this. I just wanted to build it.
5 years ago
Built the pedal and it works great! Just wondering if anyone has come up with an octave selector using the three switches on top of the midi shield? Thing about three separate foot switches that would select keyoffset 0 through keyoffset 2 to select octaves 0-2. New to Arduino so I'm not exactly sure how to pull that off, especially having the three foot switches operate based on last press.
Thanks for any replies!
Paul
Reply 3 years ago
I have a basic 2-octave toggle and 2-velocity mode toggle with indicator LEDs.
See top of code for pin allocations.
Reply 4 years ago
After looking through the original code keyoffset integer variable could be used to do octave changes
Since keyoffset is an integer I would suggest adding another integer variable that would = keyoffset * 12
Would just need to add scanning of the keyoffset octave buttons up & down to the loop
Not exactly sure how to do that as I don't usually write code in C++ but shouldn't be to hard to figure out.
If you are only doing 12 or 13 pedal input this project could be done with just an Uno R3
Since there are enough analog and digital inputs to handle 13 key switches along with an octave up & down.
This only requires wiring up the pedals with a common ground and one wire for each switch no diode matrix required
Here is a link to some good info on doing this
<https://www.midikits.net/midi_13_switches_bass_pedal/midi_13_switches%20_bass_pedal.htm>
Reply 5 years ago
I've been waiting for this info for months and months
5 years ago
so nobody has re-written the code to include octave buttons? or useful uses for the potentiometers?
Reply 3 years ago
I have added an octave toggle button and a velocity toggle.
So far I only have 2 octaves and 2 velocity states though.
Reply 3 years ago
Check at the top of the code for the pin numbers associated with switches and indicator LEDs. Don't forget to use 220ohm resisters on the anode of the LED.
Question 3 years ago
How do I change the midi channel to 3?
Answer 3 years ago
In the code where the integers are defined add: int MidiChannel = 3;
Example:
...
...
int keyOffset = 0;
int keyVelocity = 127;
int MidiChannel = 3;
...
...
Question 3 years ago
Whenever I play a note, it plays every note before it. Any ideas how to fix this?
Answer 3 years ago
did you remove the previous circuitry?
Reply 3 years ago
I got that part working, but now there is a long sustain whenever I hit a note. Is there any way to fix that?
Reply 3 years ago
Depends on how long, but mess with the debounce is my only guess
Reply 3 years ago
I did not. I didn't realize that I had to rewire it if the old wires were in good condition. After doing that (in parallel and not series like the old wires) the test program worked fine. Now I just need to test it with a sound module.
5 years ago
Is it possible to use this interface utilizing the USB instead of MIDI? I want to avoid using MIDI if possible.