Building an electronic wind instrument using an Arduino

Similar projects worth following
I really want to play a musical instrument again, but I can't disturb my housemates. I could use a MIDI keyboard, but I don't know how to play the piano. I do know how to play the flute. So I decided to try building an electronic wind instrument with an Arduino since I don't have the budget to go out and buy a commercially manufactured EWI. Plus, building one will be more fun.

The goal of this project is to make a playable MIDI electronic wind instrument prototype using parts I can buy at Digi-Key. Once I get it working, I'll streamline the design to make it look a little less 'prototypey'.

  • 2 × BB830 830 Point Breadboard
  • 1 × BB400 830 Point Breadboard
  • 10 × CT1103AF180 Large Tactile Switch
  • 1 × A000066 Arduino UNO R3
  • 1 × MPX5010GP Air Pressure Sensor

View all 7 components

  • Whistle Plus Buttons Equals Instrument

    ellejohara07/10/2023 at 05:53 0 comments

    I have finally gotten around to making a project update. Hooray! Taking the code wrote in my previous two YouTube videos on Arduino MIDI, I've combined the whistle code with the buttons code to create a playable musical instrument I've dubbed the MIDuino EWI.

    This is a super simplified instrument more akin to a recorder or a six-hole flute made from a PVC pipe, if either of those things were MIDI devices. I have eight buttons to play twelve semitones in an octave, and a breath sensor which enables a two octave range just from air pressure alone. (Though that particular feature is still a little fussy.) Key fingering is pretty versatile thanks to the power of math, and prior DIY EWI code pioneers Johan Berglund and Bret Pimentel. This is a chart of the key fingering I typically use, but there are a lot more options for each note than are depicted here.

    Here is a flowchart of the loop function for the EWI code. Only when the airflow is above a specific threshold will the instrument begin checking for key fingering positions to determine which MIDI note to play. If the airflow stays above that threshold, and the key fingering stays the same, the EWI will send MIDI CC breath data to control volume (or whatever the player chooses in the synth). If airflow crosses the midpoint or cuts out completely, or the key fingering changes, the MIDI CC data ends and a note off signal is sent to the synth. Then the loop begins again.

    I've been using software called Hairless MIDI to bridge the serial data from the Arduino to the MIDI port. It's just a stopgap until I get a model of Arduino that I can program to use as a true USB device. (I'm thinking the Arduino Micro will do the trick.) I'm also looking into using capacitive touch pads instead of mechanical buttons to try and make the instrument a little more efficient to use.

    The code can be found on my GitHub page in the 'video-58' folder. It's file '5801-MIDuino_EWI.ino'.

    Watch the latest YouTube video for this project:

  • Under Pressure (aka Wind Power)

    ellejohara04/19/2023 at 17:36 0 comments

    The best air pressure sensor for making a DIY EWI is currently out of stock, like, everywhere. Sigh! So it's a good thing I already have one. The MPX5010GP is the device in question. Connected to the Arduino, I can use it as a mouthpiece for my electronic wind instrument.

    My latest YouTube video documents connecting and coding the pressure sensor to turn it into a really fancy whistle. With buttons working and breath working, two of the three Bs are now taken care of. The third B? Why that's building the EWI! But that'll have to wait until the next video.

  • I Made A Hackaday Page

    ellejohara04/12/2023 at 22:09 0 comments

    It is 12 April 2023 as I write this, though I created my Hackaday page back in February and actually began working on this EWI about a year ago. Since I've finally gotten around to making a YouTube video on my build, I thought it would be good to have written documentation as well.

    You can view part one of my build videos right here:

    And you can have a look at the code I used at my GitHub page:

View all 3 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates