MIDIZilla for MODEP

I know, I know…I was supposed to be working on upgrading MODEP to 1.10…but I have a more pressing need. I really wanted to have a small floor based MIDI controller that I could use with MODEP when playing live. I found the one mentioned here at treefallsound.com but I already have my PiSound card and matching case for my setup. I also wanted the option to NOT have to break out the MIDI pedal in situations where I might not need to change my sound. I also wanted the ability to change pedalboards in MODEP in the same device. There are MIDI pedalboards out there but they are all very generic and certainly don’t have the ability to select a pedalboard from MODEP. So…I decided to make one.

With the recent release of the Raspberry Pi Pico W (“W” means it has wifi) I embarked on creating a MIDI pedalboard that could also connect to MODEP to select a pedalboard. Happy to report that I am getting VERY close. Attached is a picture of what I’ve dubbed “MIDIZilla”.

So basically it has:

  • 6 programmable switches that can be mapped to any MIDI CC (0 to 127). To the right of each switch is an LED that will toggle on/off as the switch is pressed.
  • The LCD in the upper left shows a small description (4 characters) of what each footswitch does and this label can be changed.
  • The set of buttons to the right allow for changing the pedal’s settings. Through these buttons you can create one or more “Mappings” (MIDI CC and label for the 6 switches), edit the MIDI CC and label for each button, enable/disable a button, create a new mapping, delete a mapping, etc.
  • 4 function buttons. F1 currently allows you to switch between upper, lower, numbers and symbols when editing text on the LCD. F2 is a backspace character when editing text on the LCD. F3 is not currently used. F4 is hooked to the “RUN” pin on the Pico W. Pressing F4 once resets the microcontroller and runs the main code. Pressing F4 slowly twice puts the controller in “safe mode” where it won’t run the main code. Useful when you write code that crashes the microcontroller.
  • The switch on the upper right is a Mode switch where you can press while playing and select a Mapping. After pressing the Mode switch you can press switch 3 for up and switch 6 for down. Once you have selected a mapping pressing the Mode switch again loads the mapping.
  • A red LED to the left of the Mode switch turns on if the microcontroller code runs into an error.
  • There is an expression pedal jack on the right hand side (code not yet implemented because I don’t have an expression pedal)
  • USB Connection on the back
  • The board can be powered off the USB port connected to the PI.

The button panel is a custom panel that I created with simple tactile switches and PCB board.

The code on the microcontroller is custom written by yours truly. I’m using CircutPyton currently and the only drawback is the wifi module on the Pico W is not yet supported in CircuitPython. I could use MicroPython but it lacks USB midi support which is more important to me at the moment. When CircuitPython enables support for the wifi module I will add code to connect to a MODEP instance. Then pressing the MODE switch will allow you to load a pedalboard in MODEP. At that point the code will also look for a mapping that matches the selected pedalboard and load that mapping.

One of my primary goals in this project was to keep the cost to a minimum. That’s why I chose a character LCD instead of a TFT or similar. I did get the 4x20 LCD so I could have more lines/characters to work with.

Everything needed for this board can be purchased on Amazon. If anyone is interested I will also supply the code that will need to be loaded on the microcontroller as well as a Scribus document that you can use to cut out the holes for the enclosure. Let me know and I can post a list of items that I purchased for the project. FYI, Pico W are hard to find right now, hopefully supply will get better soon.

I used an aluminum enclosure and if I did this again I might pick ABS plastic box. Cutting out the LCD/USB holes was a pain as I don’t have great tools at home for cutting rectangles into metal.

I’ll try to post a video of the unit in action once I get all the connections made.

7 Likes

No video yet but here’s a pic of the box from today. I ordered an expression pedal so the next step is to get that working.

3 Likes

More progress! Got the expression pedal wired up and working. Then I decided to get a pedal board so I don’t have to hook this stuff up every time. Can’t wait to try it out

2 Likes

Looks great! Have fun! By the way, have you tried the new MODEP version?

And just for the record, I would love to see an input pad option and an xlr direct out in a future version of the pisound card. For me I don’t need the midi ports so that would be a perfect spot for xlr out.

Another thought in the input pad. Would it be possible to have the gain pot maybe go from -15db to 25db? Still a 40db range but allow padding input for active instruments?

1 Like

I’d love to take a look at the code! Curious about implementing a MIDI controller in CircuitPython

Let me get a GitHub repository set up and I’ll post a link here.

Okay, if anyone is interested there are 2 github repositories that you’ll need to review:

and

MIDIZilla is the the main guts of the program and lcdzilla is a helper library I wrote for creating structured screens to use with character LCDs. I will also add a list of the components that I purchased for my box.

One note is the MIDIZilla repository has a .sla file that is used with Scribus as a template for where the holes should be cut for the various switches/leds/ports. Your setup may be different but you should be able to slightly modify the file in Scribus for your box if you choose to build one.

2 Likes

Okay, here’s the components that I ordered:

Aluminum Project Box - https://www.amazon.com/gp/product/B083QGGVWY/ref=ppx_yo_dt_b_asin_title_o04_s01?ie=UTF8&psc=1
USB Panel mount extension (this connects to the Pico W inside the box) - https://www.amazon.com/gp/product/B07G4XYJ5W/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&psc=1
Momentary SPST Foot Switch (note I only used 7 so I have a few spares in case one goes bad) - https://www.amazon.com/gp/product/B076V8C3LV/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&psc=1
LCDs (nice to have a spare of this) - https://www.amazon.com/gp/product/B086VVT4NH/ref=ppx_yo_dt_b_asin_title_o02_s01?ie=UTF8&psc=1
Standoffs for mounting LCD (if I had known that the holes in the breadboard and Pico were smaller I would have found an assortment that had a smaller size) - https://www.amazon.com/gp/product/B06XKWDSPT/ref=ppx_yo_dt_b_asin_title_o02_s01?ie=UTF8&psc=1
Prototyping circuit boards (way more than I needed but couldn’t find a smaller pack) - https://www.amazon.com/gp/product/B07FFDFLZ3/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1
Tactile button kit (I bought this kit with assorted button heights as I didn’t know exactly what I would need) - https://www.amazon.com/gp/product/B07VQF8P2Y/ref=ppx_yo_dt_b_asin_title_o06_s00?ie=UTF8&psc=1
Covers for tactile buttons - https://www.amazon.com/gp/product/B08MKQ68VG/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1
22 gauge wire kit (I couldn’t find 22 gauge wire anywhere locally. This was a nice kit) - https://www.amazon.com/gp/product/B088KQFHV7/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8&psc=1
Alligator clips for testing (these are not necessary but handy to have for testing circuits) - https://www.amazon.com/gp/product/B06XX25HFX/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8&psc=1
1/4" female stereo jacks (only needed 1 but couldn’t find a single pack) - https://www.amazon.com/gp/product/B08FDR6HXK/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8&psc=1
Expression pedal (cheap but seems to be okay) - https://www.amazon.com/gp/product/B000NLRWEI/ref=ppx_yo_dt_b_asin_title_o05_s00?ie=UTF8&psc=1
Right angle 1/4" stereo adapter (optional, I needed these so I could fit everything on my pedalboard) - https://www.amazon.com/gp/product/B01MED1RMC/ref=ppx_yo_dt_b_asin_title_o04_s01?ie=UTF8&psc=1
Right angle USB cable (optional, I needed this so I could fit everything on my pedalboard) - https://www.amazon.com/gp/product/B005EV2LHU/ref=ppx_yo_dt_b_asin_title_o04_s01?ie=UTF8&psc=1
Pedalboard with bag - https://www.amazon.com/gp/product/B08PNNHD3R/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&psc=1

As mentioned above, I bought an M2.5 standoff kit but could have used some smaller ones for the PCB button board and the RPi. I wound up just going to the local hardware store and finding some small bolts/nuts/plastic spacers.

2 Likes

Here’s a few pics of the custom button board and the inside of the box. For the custom button board each blue wire is connected to the “hot” side of the button. The black wires all converge to the bottom of the board where I basically made a ground bus bar that all connect to a single common ground wire that goes to one of the ground pins on the RPi.

Good or bad I wound up just hot gluing the LEDs into place. They seem to hold pretty well and they’ll be easy to replace if one goes out. I did the same common ground technique on the LEDs but just jumped the ground wire from one LED to another and attached the ground wire from the last LED to the RPi.

I have a document somewhere where I mapped out which wire connects to which pin and I will upload that here as well.




3 Likes