Pedalboard
Pedalboard
As discussed in planning / pedalboard, I searched eBay to see if I could find a good quality pedalboard at a reasonable price. Reasonable to me was £200 or less in good shape or £300 or less with an encoder. Checking today, I can see prices between £1 and £250, all unecoded. You need to watch carefully as they come up for sale occasionally. Some sellers want a great deal for them and some are short pedalboards (27 notes).
I finally ran across one that was reasonably priced, good size and had the switches pre-installed in an encoding matrix, all for £131. It included a very nice wiring diagram and, while a bit dirty, looked very good. I had visions of having to strip it and revarnish everything.
I partly disassembled, vacuumed, and cleaned the pedalboard. All the contacts were checked with an ohm meter to ensure they worked, and a small piece of oak was added to mount expression pedals and the MIDI encoder on. It is a bit ‘thumpy’ when pedals are pressed and released but I think they just need to have the felt replaced. (This picture has the oak piece added. Extra cost: about £20)
The man that sold it to me gave me an accurate drawing of it’s plug. I confirmed it’s connections and that the diagram was accurate. I use a dsub-to-molex connector to connect with the MIDI encoder.
The encoding boards are mounted nicely on the end.
With the extra oak piece, I mounted the controller box underneath. My wiring isn’t the best as I was going to add in a secondary board and solder, but didn’t want to commit everything until I was sure it all would work.
I used an Arduino to encode the data. I wrote the code to:
- Scan and transmit the MIDI serial data.
- Check the status of every key to ensure a ‘stuck’ key doesn’t occur.
- Added a “speaker” to buzz notes when debugging (this can be turned on and off)
- Encode up to 4 different expression pedals. Each pedal will store the highest and lowest values of the pedal. This allows pedals to have less-than 100% voltage passthru. (Which mine have).
- Allow up to 32 pistons. Each piston can have any value sent and is either 16 or 32 bytes in length. (If 32 bytes it can only send a message on the ‘down’ event.)
- Accept sysex messages to set various parameters.
I currently don’t have any pistons, but will add them in the future.