Build MIDI Bass Pedals for About $150

32,595

85

41

About: If you enjoyed some of my projects, please take a moment an listen to some of Gekko Projekt's music. I play keyboards and write a lot of the music.

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.

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

4 People Made This Project!

Recommendations

  • Made with Math Contest

    Made with Math Contest
  • Multi-Discipline Contest

    Multi-Discipline Contest
  • Robotics Contest

    Robotics Contest

41 Discussions

0
None
Cjlbass

Question 4 days 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?

EE9F8E86-982B-43E5-807B-A7AFA5B469FF.jpeg50A8BCFB-4A89-4FE7-AA15-6808E1D7AF80.jpegC9DCE88C-49EC-41D1-875E-FCAA3BCCCC0F.jpeg
0
None
rkohlman71

Question 7 weeks 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.

BA7DEDA1-2359-4BB6-BD8C-800C2E4AC530.jpegDEDFC9A5-9CEB-4040-8F05-646455779783.jpeg
0
None
plav1959

2 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

3 replies
0
None
dfiorucciplav1959

Reply 2 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>

0
None
lrizzo2001plav1959

Reply 2 years ago

I've been waiting for this info for months and months

0
None
lrizzo2001

2 years ago

so nobody has re-written the code to include octave buttons? or useful uses for the potentiometers?

2 replies
0
None
slipawayslipaway

Reply 4 months 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.

0
None
slipawayPapadonWashy

Answer 4 months ago

In the code where the integers are defined add: int MidiChannel = 3;

Example:

...
...
int keyOffset = 0;
int keyVelocity = 127;
int MidiChannel = 3;

...
...

0
None
tmbgfan1234

Question 6 months ago

Whenever I play a note, it plays every note before it. Any ideas how to fix this?

4 answers
0
None
tmbgfan123401guitar00

Reply 5 months 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?

0
None
01guitar00tmbgfan1234

Reply 5 months ago

Depends on how long, but mess with the debounce is my only guess

1
None
tmbgfan123401guitar00

Reply 6 months 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.

0
None
lrizzo2001

2 years ago

Is it possible to use this interface utilizing the USB instead of MIDI? I want to avoid using MIDI if possible.

3 replies
0
None
BillG40lrizzo2001

Reply 2 years ago

https://www.arduino.cc/en/Reference/MIDIUSB

0
None
lrizzo2001BillG40

Reply 6 months ago

Hey Bill, I have no clue how to implement this code, can you kindly assist?

0
None
01guitar00lrizzo2001

Reply 6 months ago

basically there is a midi usb library you have to download and add to the code in the arduino IDE. If you get too frustrated just find a cheap used midi usb interface or an audio interface with usb because most have them. midi cable is cheaper in longer lengths as well. hope this helps