Skip to content
MIDI woodwind controller
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Docs and references Added reference sheet with Casio Digital Horn recorder fingerings. Jun 1, 2016
MiniVI-cap Correction in note on state, where a new note could be trigged after … Jun 15, 2016
MiniWI-cap-pmt-ArcoreProMicro no message May 2, 2017
MiniWI-cap Correction in note on state, where a new note could be trigged after … Jun 15, 2016
MiniWI-lite Correction in note on state, where a new note could be trigged after … Jun 15, 2016
MiniWI Correction in note on state, where a new note could be trigged after … Jun 15, 2016
TeensieWI-FSR no message May 2, 2017
TeensieWI-mod Added LED indication for breath on. Mod value wraparound fix. CC inte… Oct 13, 2017
TeensieWI Update Apr 14, 2016 Changed the alternate modulation function to be pitch bend vibrato wi… Oct 31, 2017


MIDI woodwind controller


This MIDI controller is running on an Arduino Pro Mini with Atmega328 16MHz/5V. It makes use of breakouts for analog pins A6 and A7, so it needs a Pro Mini version with these breakouts. The pressure sensor used for the project is the Freescale MPX5010GP. Fingering is reverse engineered from Akai EWI and note values are calculated from pressed keys. For details on this, read my guest post on the Gordophone blog.

Details on the state machine approach for handling the events is also available on Gordon's blog where I borrowed it from. He's got a step-by-step how-to on DIY wind controllers that I highly recommend.

Hardware notes for connection of MIDI, pressure sensor, keys and joysticks are available in the MiniWI.ino file.

The MIDI routines and the MIDI connections are pretty standard, but I first found them on the website, so I'll give Tom Scarff a mention here. Kept his nice MIDI pinout ASCII sketch thing and some comment style too.

The controller is made to work well with synthesizers using wind controller patches from Patchman Music, with the breath data sent by CC #2 (Breath). For testing I’ve been using their wind controller soundbank for Roland JV-1010.

Or you can make your own patches optimized for breath control. Pointers for doing that can also be found on the Patchman website.

Questions and suggestions are welcome. Just send them to

-Johan Berglund



MiniWI.ino is the original proof of concept breadboard version with regular switches.

MiniWI-lite.ino is a simplified version (no joysticks) for my guest post on the Gordophone blog.

MiniWI-cap.ino is the capacitive touch version implemented in my first playable prototype.

MiniWI-cap-pmt.ino is a modification of the touch version to feature portamento (glide) control and a separate potentiometer for setting base octave instead of using sideways motion of joystick to increase range. This reduces instantly playable range but increases the total range of the controller.

MiniVI-cap.ino is a not yet realized EVI version (Electronic Valve Instrument) based on the Akai EVI1000 and the Steiner MIDI EVI.


I’ve added some pictures from my Instagram account. Check it out for more pictures from this and my other projects.


Project profile for the MiniWI added on


Added optional Casio DH 2nd octave fingerings. Default disabled. Set #define casioMod 1 to set default enabled. Hold octave stick up at power on for manual selection of the setting that is not default.


Added tested and working version of the new TeensieWI, a simplified version for USB MIDI using the built in capacitive touch sensing in the Teensy LC and breath sensing from the MPX5010GP. Small warning here: the breath sensor output is not limited and could reach values near 5V, while the analog input on the Teensy LC is 3.3V and not rated 5V safe. To reach these levels you’d have to blow really, really hard. If you need to feel safe, go with a Teensy 3.1 or 3.2 as they have 5V tolerant inputs. Only minor alterations needed in the code for use with Teensy 3.x (touch sensing on other pins, some as pads on the back).


Improved the joystick version of the TeensieWI, now called T.WI, with breath response curves and some other stuff that can be configured at plug-in. Started making these for sale on Tindie.

You can’t perform that action at this time.