emonica - MIDI Harmonica

An electronic midi harmonica

Public Chat
Similar projects worth following
A Midi - Harmonica Low at price and easy to build.

Some time ago I saw that in the early 80's there was a synthesizer that you could play like a harmonica. The device called itself Millioniser 2000 and could probably never prevail in the market. Today you can still buy these (used) devices on ebay at horrendous prices. Therefore, I decided to build a midi harmonica myself. Suitable for the Hackaday price.

Construction difficulty: easy-medium

See it in action


When you plug in the emonica, the pressure sensor will be calibrated to the environment. So, don't blow into the emonica, when you start up.

Slider calibration
Since there are no reference points for the slider, the slider must be moved right and left once. A little animation shows the whole thing. After this, the emonika is ready for use.

Button assignment & menu structure

Here you see an image of the buttons. Each button can be assign to a special function (see menu structure).

Menu structure

When you start the emonica you are on the main screen, where you can see the current preset, current  note and the blow in/out level of the pressure sensor.

If you press all six buttons for more than three seconds, you get into the setting mode.

At the first , you can select the preset. There are eight presets, but the maxium number is changeable in the source code. Use Buttons 4 and 5 for selecting the current preset.

If you now use the buttons 1 and 2 you can navigate through the parameters for the selected preset.

Parameter description

Pressure threshold

  • With the pressure parameter, you determine from which pressure the emonica should react. If you are over this value, the emonica sends out a MIDI-Note and if set, a CC-Value.

Maximum pressure

  • This value sets the upper range for the blow in/out level.

CC Midi-Channel for blow

  • This value defines the Midi-Channel for the controller change.

CC Midi Controller for blow

  • This value defines the Midi-Contoller number for the CC event. E.g. you want to change the cut off filter on a synth dynamically or the expression.

CC MIDI minimum value for blow

  • If you exceed the threshold, this value will be sent as the smallest Midi-Value.

CC MIDI maximum value for blow

  • This is the MIDI-Value, which will be send when you reached the maximum pressure value.All values between will be mapped between the pressure threshold and the maximum pressure.

Note MIDI-Channel

  • This value sets the MIDI-Channel where the note will be send, when you hitting the thresold.

Low/(Root) Note

  • Here you can select the first note on the emonica (on the left). E.g. select the "A3" for the first note.

Highest Note

  • On the highest note you can select the last note on the right side of the emonica. All notes between will be calculated, depending of the scale you use. (See parameter: Tone scale)

Tone scale

  • This is the most important settings and requires a little music theory.

    Here is a short example. Let's say you have a piece of music that is played in A minor.
    As a root note you can then choose an A3 and as the highest note the A4.
    If you now set "minor" on the Tone Scale, the emonica will calculate all appropriate tones for the minor scale. This has the advantage that the notes that are not normally played in a minor harmony are suppressed.
    It becomes even easier if you use the pentatonic tone scales.

    Of course, you can also adjust the whole scale to chromatic, then  you'll have all 12 tones of the scale available, but that requires a lot of practice. :-)

Dynamic Expression

  • With the dynamic expression parameter you can select if you want to have a dynamic or static value for the expression (volume). When you select dynamic expression, the value depends of the pressure when you blow in/out.

Dynamic expression minium value

  • If you're using the dynamic expression, you have to define the lowest value of the expression when the blow-threshold is exeeded.

Dynamic expression maximum value

  • This value...
Read more »

JPEG Image - 377.97 kB - 08/29/2018 at 10:10


Standard Tesselated Geometry - 15.51 kB - 08/29/2018 at 10:10


Standard Tesselated Geometry - 107.02 kB - 08/29/2018 at 10:07


Standard Tesselated Geometry - 280.75 kB - 08/29/2018 at 10:07


Standard Tesselated Geometry - 233.09 kB - 08/29/2018 at 10:07


View all 19 files

  • 1 × Teensy 3.2 The brain of the Emonica
  • 1 × 0.96" OLED Display with I²C - 128×64
  • 6 × Tactile switches
  • 2 × Fork light senso Fork light sensors
  • 1 × MPXV5010GP Sensors / Pressure, Force

View all 9 components

View project log

  • 1

    As far as the boards are concerned, it's not really that hard. Basically, you could build the whole thing on a perfboard. But who owns an etching machine his own certainly has a small advantage.


    Connection Diagram for the Pressure-Sensor and Display

  • 2
    CASE and Slider STL Files

    You may have to make one or the other change to your 3D printer.
    Of course, the result will be even better if you have a SLS printer or you are using a print service, such as Shapeways.

  • 3
    Getting the source code

    Download the source from Github.

    To compile, you will need the i2c_t3 library instead of the standard wire library.
    You'll find it at:

    You also need this library :
    Adafruit GFX -

    Ignore the .vcxproj and .sln - Files. I use Visual Studio together with Visual Micro to develop, because it's more convenient.

View all 4 instructions

Enjoy this project?



jerryn wrote 09/02/2021 at 20:50 point

I may have found the answer.. It appears in the USA we call a Fork Light Sensor a T Slot photo interrupter.  Is there a link where I can make sure I get the right size ?

  Are you sure? yes | no

jerryn wrote 09/02/2021 at 19:51 point

Awesome.. this will work well with my Zynthian!   I am having  a heck of a time locating the "Fork Light Sensors".   Nothing at Adafruit, Sparkfun, or DigiKey.  Where can I find it ? 

  Are you sure? yes | no

thenettrainer wrote 04/06/2020 at 02:09 point

I've been playing harp and guitar since the 60's, midi guitar since the 80's.  A midi harp?  I WANT ONE!  I'm retired with no inclination to put one together myself.  But when an affordable one is available, I'll buy it!

  Are you sure? yes | no

AVR wrote 10/24/2018 at 13:57 point

simple and brilliant, really like this!

  Are you sure? yes | no

Matt wrote 10/24/2018 at 04:37 point

What a delightful weirdo project and undertaking. As a electronic music geek and a harmonica player I am both horrified by and excited by this project, it's so goofy, and yet that makes it fun, and in a way a really amazing take on a breath controller with a far lower threshold to entry than an EWI. Bravo, you beautiful geek you!

  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