Goals of this project:
Create a recorder/blockflute styled MIDI controller to allow access to a wider variety of sounds than a real recorder, and to allow for practice without disturbing others.
Design with a focus on durability, ease of construction, low cost and portability.
What was learned from this prototype:
Capacitive input works well when fast response is required, and space does not allow for high quality buttons.
Simple is often better. Original designs used potentiometers, more control buttons, and greater options for expression, which when removed, left a much more friendly, playable instrument.
I went through many design revisions (both virtual and physical) before finally arriving at a working configuration.
Finger input was originally handled via cheap momentary push-buttons. These are murder on the fingers however, and quick playing is nearly impossible. These were changed with photoresistors to detect when the finger holes were covered. Once the sensor threshold is dialed in, this works surprisingly well. Unfortunately, temperature seems to have an profound effect on the readings, and values would continue to drift during use until the instrument was unplayable. I also experimented with building load cells from copper clad PCB and conductive foam, but I could never get these to work reliably enough. I had almost given up on this project until discovering the Teensy 3.6 and it's touchRead enabled pins, which coincidentally exactly match the number of finger holes required for a baroque recorder.
Breath sensing was originally handled by blowing across a cheap condenser mic. However strong finger taps would frequently trigger accidental input, and it didn't take long for the components to become fouled with moisture and stop working. Breath input was then upgraded to a MPXV7002DP differential pressure sensor. Unfortunately, this part costs nearly as much as the microcontroller, and designing a sufficient housing proved difficult. I eventually settled on a spare arcade button, if only to give a solid reliable input source to use for testing. To my surprise it actually works very well, but I think there is definitely still room for improvement.