For my gig at Thee Sunday Sonics this weekend I decided to make a new USB controller. I was previously using one with many more buttons and knobs than I actually needed. For this project I used the Teensy LC. A low cost version of the Teensy (around £10). It has less memory and computation power than the 3.2, but more than enough to make a simple USB MIDI controller. I used a mustard tin to house it all in. It’s suspended inside using these. It worked a treat in practise but for some reason on the night of the gig (typically), in soundcheck it stopped working and seemed to be interfering with my other controllers. Luckily I bought my previous controller as a spare. Still not entirely sure what the issue was (it works fine again now). My best guess is that there was some form of power issue. I’m hoping to be able to recreate in an environment that not on-stage so I can actually resolve it.
Once I’d reverted to my spare everything was fine, and the gig went well. Thanks to Thee Sunday Sonics for inviting me, it was lots of fun.
[EDIT] I’m fairly confident I’ve solved the problem. The software wasn’t consuming and discard MIDI messages it received, only sending its own messages. Updated code on GitHub
After some soldering and drilling I’ve finished the final version of my MIDI pedal. I’m really pleased with how it’s turned out. I’ve used it live now, and it was really handy having LEDs to show which pedals I had active, and I can now control Ableton’s looper more accurately. I’m less convinced by the usefulness of the MIDI clock LED flash, it’s in equal amounts useful and distracting. Never mind, it’s easy to disable in code if I choose.
I tried to make the layout of my breadboard prototype as close as possible to the layout I was going to use on the Veroboard. Soldering this together was pretty straightforward, and although it looks a little untidy it worked first time (ok, second time, I had to solder suck some of the solder from one of the joints as it was connecting 2 rails together).
The build went reasonably smoothly. I used InkScape to create a drilling schematic. The only problem was I didn’t factor in the size of the components (only the size of the drill holes), meaning it was only by chance that the bodies of the potentiometers didn’t overlap the USB port – phew! I then marked each centre point with an awl, before drilling a small pilot hole, and then cutting the desired hole size with the hole cutter. This may well be the de-facto drilling technique, not sure, but it worked for me.
The code is now slightly more complex. LEDs can be paired together allowing the activation of one to toggle the state of another (called a sister pedal in the code). This is because 2 of my pedals control the activation of the ‘Record Arm’ on 2 audio tracks that output to the same channel on my Audio Interface (basically 2 different guitar amps, which can play simultaneously but only one can be receiving audio). Activating one ‘Record Arm’ disables the other.
The prototype of my USB MIDI pedal is now complete. What you see below is prototyped on breadboard using the TEENSY development board, running software which I wrote in C/C++. It has 4 fully programmable pedal switches (either toggle or momentary), and an LED which flashes in time with the midi clock. This clock LED is to enable me to record loops without the need for headphones (I have not actually tried doing this). The next stage will be to solder it up on veroboard and build the housing. The enclosure has arrived, just need to do some drilling!
Once this is finished I’ll have more control over my live performance. My previous MIDI pedal was not programmable, and therefore I was somewhat restricted. With this I’ll be able to have more control over my live looping.