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
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.
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.
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!
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.