Just want to report about a work in progress.
My favorite bugaboo is the lack of scripting in MIDI controllers and devices. Yeah, they’re OK for 90 percent of the common use cases. However, you’ll eventually run into the need for System Exclusive (SysEx) message support or some other MIDI functionality which doesn’t fit the fixed, built-in usage model.
I’ve wanted a flexible, scriptable MIDI event processor for quite some time. The MIDI Solutions Event Processor Plus handles the most common filter and mapping use cases, but lacks scripting. In particular, I want to build a MIDI event processor that handles key switching like a VST software instrument. I want to be able to invent my own “Super Articulation” voices that use key switching, for example. [More about this idea another day.]
Arduino-based solutions are sort of OK. The Sparkfun MIDI shield coupled with a standard Arduino UNO is a good start. However, if you want to stack a display on top of the MIDI shield, you’re out of luck (the MIDI connectors prevent stacking).
The AdaFruit Feather family of boards is feeling like a good solution. The Feather form factor is very small. The Feather M4 Express processor board (ID: 3857), by itself, is much smaller than Arduino UNO. There’s a lot packed on that tiny board: a 120MHz ARM Cortex-M4 processor (ATSAMD51), a Neopixel, the usual micro USB connector, a JST connector with LiPo charge support, and all the usual ins/outs (digital, analog, I2C, SPI, etc.)
The FeatherWing expansion boards have the same small, stackable form factor and the range is staggering. I have the following FeatherWings at hand:
- FeatherWing 128×64 OLED display (ID: 4650)
- MIDI FeatherWing (ID: 4740)
- Joy(stick) FeatherWing (ID: 3632)
- FeatherWing NeoKey mechanical key switches (ID: 4879)
The whole lot can be had for less than $100 USD. Together with the M4 Express, the FeatherWings make for a powerful MIDI processing platform.
Of course, a vertical stack of Feather boards would be quite unweildy. AdaFruit offer three “motherboards” for arranging Feather boards horizontally:
- FeatherWing Doubler (ID: 2890)
- FeatherWing Tripler (ID: 3417)
- FeatherWing Quad (ID: 4253)
The horizontal layout provides convenient access/visibility to the joystick, display and 5-pin MIDI ports. This is so much better than vertical stacking.
I have the Doubler and Quad, and intend to use the Quad for my MIDI event processor. Even though I used the word “motherboard”, the Doubler and Quad are completely passive and merely route the Feather signals across two or four slots, respectively.
Software is, of course, an important ingredient. The Feather M4 Express supports both the Arduino IDE (C programmeing) or CircuitPython. I decided to try CircuitPython in order to learn something new. The best and fastest way to go is the Mu Editor (environment). The Mu workflow is a bit quirky if you’re accustomed to the Arduino IDE or Java environments. Once you get with its flow, you’re good.
The FeatherWings are all supported by one or more CircuitPython libraries. You’ll need to chase down the libraries and copy them to the M4’s internal flash memory. Fortunately, the M4 presents itself as a flash drive, so it’s simple to copy the libraries to the M4 Express from a Windows PC or Mac.
As to project status, the headers are soldered on, Mu and the libraries are installed, and I’ve run example code for the OLED display, joystick, and MIDI ports. AdaFruit has quite a bit of development information on-line — all well-written with downloadable PDFs. Still, you should expect to modify the example code for your specific boards and use cases (e.g., SH1107 display, 5-pin MIDI instead of USB MIDI).
I haven’t done much Python programming, so that is another learning curve. Given Python’s formatting requirements and syntax, I don’t really see how Python is an easy beginner’s language. Somebody is smokin’ somethin’. I’m going to stick with CircuitPython unless I run into execution speed issues. Take your medicine, boy. 🙂
Copyright © 2025 Paul J. Drongowski



