Close
0%
0%

The Open Woodwind Project

An Electronic Aerophone with focus on usability as an instrument.

Similar projects worth following
A project that aims to make an Open Source Woodwind MIDI controller with onboard synthesizer.

Latest Demos:


Overview of the onboard Synthesizer:


2018 HaD Prize Official Entry Video:

What is the Challenge this Project Addresses?

Many engineers, hackers, and makers have focused on the hardware implementation of creating a musical gadget of some kind. The challenge is that most of these instruments are heavy on hardware and light on usability as an actual instrument. 

In the digital instrument market today there are very limited options for MIDI woodwind controllers. This project aims to bring a DIY opensource version up to the plate that the average maker can create and play. This could eventually be a great project in school curriculum for those technologically inclined musicians beyond the standard robot classes.

We are flooded with MIDI keyboards, matrix controllers, drum sets, but those who wish to harness the dynamic response of breath are left lacking in options. This open source instrument should be a source to many hackers who would like to implement an intuitive and configurable instrument.

In the end I wish to offer up kits (laser cut files and pre-programmed microcontrollers) to those who would like to build their own instrument.

Project Goals:

    1. Create an electronic aerophone (MIDI woodwind controller) that is intuitively playable.
    2. Easily re-created by the average maker and is not just a music making gadget.
    3. Inexpensive and easily adaptive to new sensors and fingering modes

What is an Electronic Woodwind Controller?

Electronic instruments, and even MIDI instruments have been around for decades now, but usually you see developments in keyboards, drum pads, and matrix controllers. Several companies have made woodwind controllers to include Yamaha, Roland, and Akai, all stemming from the original concepts from pioneer Nyle Steiner. The EWI (Electronic Woodwind Instrument) and EVI (Electronic Valve Instrument) were the products of Mr. Steiner's genius. Akai still produces instruments from the original concepts introduced in these first designs.

Modern day computers have provided MIDI controllers a vast powerhouse for synthesis and sound design that can't easily be reproduced by stand alone instruments.

Nearly three years ago my first prototype was born, and recently the project has been picked back up to drive it to completion. This project is creating an Electronic Aerophone as a variation on the EWI, and will be released to the community once development has reached an adequate level of completion.

The following attributes are unique to this project, and help bring this controller to a new level:

  • Custom fingering mode, specifically designed to combat the 'glitch' issue of the Akai EWI
  • IMU integration for modulation and pitch effects
  • Analog outputs for Eurorack Systems

Technical Details

The controller itself utilizes a Cortex M4 microcontroller board (the venerable  Teensy 3.2 from PJRC), two MPR121 touch controllers (24 total channels of capacitive touch capability), an MPX2010GS pressure sensor,  an OLED screen, and some other various discreet components. 

Sensor data is fused together and sent via a MIDI stream to a computer for sound generation, or actualized into audio via the onboard synthesizer (currently a DSP-G1, but will probably change)

Code is released under the GPL.

Interesting Project Logs

Current Status

  • Second Prototype - 95% complete - Playable 
  • Designing laser cut files for final instrument design

OpenWoodwind Analog Patch.cmb

Reason combinator patch

cmb - 104.62 kB - 10/21/2018 at 20:42

Download

  • 1 × Teensy 3.2 Microcontroller
  • 2 × MPR121 Semiconductors and Integrated Circuits / Misc. Semiconductors and Integrated Circuits
  • 1 × MPX2010GS Sensors / Pressure, Force
  • 1 × BNO055 IMU 9-DOF IMU
  • 2 × 1 kOhm Resistor

View all 9 components

  • Audio Input to OWP_Synth

    J. M. Hopkins04/23/2020 at 21:36 0 comments

    The OWP_Synth now accepts an audio input, which can be selected to allow VCA, Filter, and Effects processing from external sound sources.

  • Onboard Synth Update

    J. M. Hopkins04/12/2020 at 02:10 0 comments

    I've been able to do a lot more work with the synthesizer. Fun times!

    Features list:

    • Four Oscillators
      • Sine, Sawtooth, Variable Pulse and Variable Triangle
      • Gain, Detune, Pulse Width (for Pulse and Triangle) are able to be set
      • Portamento, during legato can be adjusted, and when the Portamento is modulated
    • Pink and White Noise Generators
    • 2 LFO Sine Wave Generators
      • 0Hz to 100Hz (adjustable in config to be more)
      • Gain, frequency and range can be modified by breath, expression, or modulation wheel
      • LFO destinations include Oscillator frequency, Oscillator Gain, and Filter Cutoff Frequency
      • LFO1 affect Waveforms 1 and 2, LFO2 affects Waveforms 3 and 4
    • Low pass filter
      • Adjustable cutoff frequency offset, modulated by breath, expression, or modulation wheel
      • Adjustable resonance, modulated by breath, expression, or modulation wheel
    • Waveform shaping
      • Four 'overdrive' banks that allow for waveform shaping with custom arbitrary waveforms
      • Gain for each waveform shaping is adjustable, overall bank can be modulated by breath, expression, and modulation wheel.
    • Effects
      • Flange effect, adjustable
      • Stringy Chorus effect, adjustable (this is a modified chorus that stretches and re-integrates the audio blocks to sound more bowed instrument like)
      • Delay, with adjustable amount and time delay adjustments
      • Reverb, adjustable room size
    • MIDI Note transposition via CC channel
    • Fine tune via CC channel
    • Save and Load patches to SD card (127 of them)
    • Play backing tracks from the SD card (127 of them)
      • Adjustable volume via CC channel

    Current source snap shots located on my Github Repository: https://github.com/jeffmhopkins/Open-Woodwind-Project/tree/master/src/owp_synth

    Here are some screenshots of the OSC interface (via TouchOSC on an iPad) that I have running to control the synthesizer:

  • Onboard Synth / OSC Interface

    J. M. Hopkins04/08/2020 at 04:00 0 comments

    Here’s a longer format (16 minute video) on the onboard synthesizer and OSC interface to control it. 

    Enjoy!

  • TouchOSC GUI for Teensy Synth

    J. M. Hopkins04/07/2020 at 01:00 0 comments

    Since I'm using the Raspberry Pi as a base station for this project, I was able to get an OSC to MIDI bridge running which allows me to run the TouchOSC app on an iPad with a custom GUI.

    The Raspberry Pi is running 'osc2midi' (an OSC to MIDI bridge) and 'a2jmidid' (a MIDI to ALSA bridge) which all gets auto patched via 'qjackctl' (The Jack patching session manager).

    The end result, is that OSC messages coming from the TouchOSC GUI on the iPad is wirelessly transmitted via the Pi Hotspot (or local WiFi).

    There needs to be a configuration file written for osc2midi to map the GUI to MIDI channels, but I loaded this up on GitHub for those who want to replicate.

    https://github.com/jeffmhopkins/Open-Woodwind-Project/blob/master/touchosc/custom.omm

  • Carbon Fiber Keys

    J. M. Hopkins04/06/2020 at 17:33 0 comments

  • Teensy 4.0 Audio Library Demo

    J. M. Hopkins04/04/2020 at 01:03 0 comments

    The new microcontroller came in, and this time the real 'onboard' synthesizer is being demonstrated. The Pi will probably still be on the base station, but this synth will run directly on the microcontroller, without the need for external anything.

    I've also added the sourcecode to a four oscillator woodwind controller synth to github for the Teensy 4.0: https://github.com/jeffmhopkins/Open-Woodwind-Project/blob/master/owp4/owp_synth.ino

    Here's a demo of some upper octave stuff to show the aliasing:

    https://soundcloud.com/jeff-m-hopkins/open-woodwind-project-teensy-library-upper-octave-testing

  • Update

    J. M. Hopkins04/02/2020 at 18:34 0 comments

    Final Designs

    So I have finished the final 3D CAD files, and printed out the body. I'm having the keys cut out of carbon fiber, and then I have a bunch of prep work (sanding, filling, painting, veneering) ahead of me to to turn the 3D printed body into a 'final' instrument.

    I'll be dropping all new electronics in this instrument, but basically the same setup. Teensy 4.0 with audio shield this time, and wireless MIDI, but the basics will be the same. Two MPR121s, pressure transducer and accelerometer/IMU.

    Stay tuned!

  • ALSA Modular Synthesizer on a Raspberry Pi

    J. M. Hopkins04/01/2020 at 00:17 0 comments

    In this quarantine I've also been able to play a bit with using a Raspberry Pi as a sound source. Using the ALSA Modular Synthesizer I've got this patch going:

  • A Quarantined Small World

    J. M. Hopkins03/28/2020 at 01:08 0 comments


    Stay safe through these crazy times!

  • 3D Printed Body

    J. M. Hopkins03/05/2020 at 00:05 0 comments

    Been a while since an update, so I apologize! Starting to CAD up the body, and printing prototypes with PETG.

    Final construction will be sealed, sanded, painted, and looking pretty.

    Keys will be metal the holes are just for M3 fasteners.

View all 38 project logs

  • 1
    Prepare Instrument Body

    Cut two pieces of hobby grade plywood into rectangular pieces, 2"x20", drill holes for furniture tacks and body spacers

  • 2
    Solder Main Board

    Solder Teensy, IMU, pressure, and capacitive touch breakout boards to proto board. Attach board to main body, route tube to top of device, solder keys to the MPR121 touch inputs.

  • 3
    Flash Teensy

    Download and flash the .ino file to the Teensy

View all 5 instructions

Enjoy this project?

Share

Discussions

Mark DeSimone wrote 04/30/2020 at 15:45 point

Hi there! I've been working on a couple versions of a MIDI wind controller too, and your post is really exciting to see. Among other challenges, I've been trying to figure out how to get a smooth breath response, and I wanted to ask if you experimented with different designs for the tubing. 

Yours looks to be a closed system, where the tube just goes to the sensor, and nowhere else. When you play on this, does air actually go through the tube? If so, is this easy enough to get used to? 

I have tried two ways of setting it up - first, I had a T-section split the breath tube so that the T-branch led to the pressure sensor, and the main straight line just led to an open tube. So, it's an open system. This seemed to make the most sense at the time, but it leads to drips of condensation coming out the other end, and jittery breath CC signals. 

Second, I saw that some folks use a closed system, where the air just goes right to the sensor. I tried this, but it feels so strange (i.e. different from an acoustic wind instrument) that you're not actually blowing air into the instrument, and I didn't feel like it'd be easy to learn how to play that way. So, I glued a second tube next to the first tube -- one goes to the sensor, the other just goes nowhere. I still get the condensation, but it seems that the jittering is a little better.

I figure that the jittering is probably a problem with turbulence inside the tubing, but I just can't figure out how to resolve it. It's at the point where it's definitely playable, and better than it was, but I can't help but wonder if I'm just way off base with my approach.

I'm really impressed with your work on this project. Tackling the synthesis looks like quite an endeavor!

  Are you sure? yes | no

J. M. Hopkins wrote 05/13/2020 at 07:00 point

Sorry for the delay is response, Hackaday isn't the best at notifications :D

I do use a closed system, and it is significantly different from most acoustic instruments. The proper technique is to leak air out the side of your mouth. It is a bit weird feeling at first, but it truly gives a much better control over the breath signal when done right, and allows for circular breathing to be done easily.

Depending on your jittering amount, it could be from your implementation, noise sources, etc, hard to tell without hearing/seeing an example.

As a whole, I do not get much jitter, and don't have to filter the signal to get a smooth response.

I do have my github link posted, so feel free to look and borrow code from anything in there.

  Are you sure? yes | no

Michael Johnston wrote 03/31/2020 at 20:10 point

It's great to have you back.  I've created the hardware for a very similar controller based almost entirely on your design.  Thank you, so much for sharing what you've done.  I'm beginning the software development now.  Are you anywhere close to being able to share your source code?

  Are you sure? yes | no

J. M. Hopkins wrote 04/01/2020 at 00:32 point

The source code is shared above in the files section. The state machine is very solid, but the pitch bend and fingering functions are quite messy and pretty hard to follow. Most of the 'magic' of the instrument is actually in the IMU filtering, dampening, and gating, which was very 'by feel' over many days and fiddling. 

I also have a repository: https://github.com/jeffmhopkins/Open-Woodwind-Project that I just put public.

I have a teensy 4.0 that I have arriving here soon that I plan on doing some more DSP attempts with, bu the state machine and general code will be that from above, just with the Teensy audio library overtop.

The Raspberry Pi has also been very interesting recently as a sound source and price point. So we'll wee where we end up.

  Are you sure? yes | no

J. M. Hopkins wrote 04/01/2020 at 01:24 point

I've also just cleaned up and commented a bit... so hopefully it makes more sense (see github)

  Are you sure? yes | no

AlexC wrote 07/31/2019 at 18:29 point

Hi. I noticed that activity halted in late 2018. Is there going to be any more movement on this project? Also, from listening to your latest demos from teensy synth, I've imagined adding a 'chiff' or 'shiff' sound at the beginning of each breath to give it a more natural woodwind flute quality.

  Are you sure? yes | no

J. M. Hopkins wrote 03/05/2020 at 06:57 point

Hey sorry for like a 8 month lack in response, life keeps me busy. I've started work on the 3D printed body recently

  Are you sure? yes | no

sacha.elijah.duprez wrote 06/12/2018 at 16:42 point

Woah, just discovered what you're doing. I'm very surprised by the quality of the sound, especially concerning the low notes : I like it ! 

Do you plan to improve it again ?

  Are you sure? yes | no

J. M. Hopkins wrote 06/14/2018 at 03:19 point

Thanks man, yes there is still quite a bit of development going to take place.

  Are you sure? yes | no

Johan Berglund wrote 05/14/2018 at 17:21 point

Great to see you are picking this up again!

  Are you sure? yes | no

J. M. Hopkins wrote 05/15/2018 at 06:16 point

Thanks!

  Are you sure? yes | no

Johan Berglund wrote 06/06/2016 at 18:26 point

Hi,

Thanks for your replies! Thinking of putting the dsp-G1 in my Casio horn if I get to modifying it. Then I won't be missing the pitch bend functionality, as it didn't have it to begin with :) Portamento will still be missed though... but then again I get a key free for other things, like a bis key perhaps. Anyway, thanks again, and I hope you get time to proceed with your Aerophone project soon!

  Are you sure? yes | no

pietkamps wrote 01/19/2016 at 20:31 point

Hi Hopkins, I am interested in how you made the bite sensor or what hardware you have used.

  Are you sure? yes | no

J. M. Hopkins wrote 01/20/2016 at 12:15 point

I've used simple FSRs mostly.

  Are you sure? yes | no

edil07 wrote 06/06/2015 at 20:30 point

Hi Hopkins, I am very interested in your work and thinking of implementing it during my vacation at work in case you have already released it as open source.
Have you considered using Moteino (http://lowpowerlab.com/moteino/) as the microcontroller since it provides wireless 

  Are you sure? yes | no

J. M. Hopkins wrote 06/06/2015 at 23:38 point

Hello, as of right now there's not been a release of code, but I can release some of it through my Open Woodwind Project.

There are a few microcontroller options with built in wireless, but I've opted to use separate devices for more flexibility in transceiver choices. 

  Are you sure? yes | no

Gwendolyn Scogin wrote 06/05/2015 at 17:36 point

I am curious as to what hardware you are using for the breath pressure sensor.

  Are you sure? yes | no

J. M. Hopkins wrote 06/06/2015 at 23:39 point

It's an MPX2010GS. I'm still developing this project, but just taking a bit longer than I was hoping for. Being active duty military with a family eats a lot of time. 

My software and hardware will all eventually be released as open source under the Open Woodwind Project, which I assume you'll find interesting :)

Also, I'm now using a Teensy as my primary microcontroller... Good stuff.

Jeff

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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