Aetherharp: Three Level, 24 Note, MIDI Air-harp.

5,591

84

10

Introduction: Aetherharp: Three Level, 24 Note, MIDI Air-harp.

This project is loosely inspired by the laser harp of Jean-Michel Jarre.

https://www.youtube.com/watch?v=DnAfXK-hft8

Instead of lasers however, it uses eight SHARP infra-red distance sensors, the variants with the longest range of 35 to 40cm. These sensors are laid out in a row to provide rows of 8 notes at 3 different height levels giving a total of 24 notes playable by hovering your hand in the position of the note you wish to play.

These sensors are connected to a Teensy 3.5 microcontroller which is compatible with the Arduino ecosystem. This has a much faster processor than a regular Arduino board and very conveniently has the ability to output MIDI commands built in.

MIDI means Musical Instrument Digital Interface: a standard means of sending digitally encoded information about music between electronic devices, as between synthesizers and computers.

A variation of this is USB-MIDI, which just means the device sends MIDI data up a USB cable to an attached computer. The attached PC or laptop then runs software which converts this to sound. This software can be very complex but basic free versions exist and are outlined later on.

Conveniently the laptop or PC supplies enough power via the same USB cable to power the Teensy microcontroller and the SHARP sensors. This makes the wiring quite straightforward as no battery power supply is required.

Finally, I have added a simple low cost gaming thumb joystick to the design which allows you to play notes with one hand while the other hand can operate this joystick to pitch bend the notes to give more expression.

The aetherharp is being played in the video by the person I made this for. It has been placed into a nice wooden enclosure. The layer of clear red acrylic on its upper surface does not appear, by trial and error, to impede the function of the SHARP sensors at all so long as you keep it out of bright sunlight.

This project is quite easy to construct, however it does assume some familiarity with Arduino boards.

The vast majority of the time was spent on the software as a lot of noise filtering is required to stop incorrect and also random unrequired notes being played.

Supplies

Parts listing:


SHARP GP2Y0A41SK0F Infra-red distance sensors x 8

Note: SHARP make these sensors with different minimum and maximum sensing ranges. They all look exactly the same. Therefore, when ordering, make sure you get the ones with the part number given above and no other, these are the longest range ones.


Generic thumb joystick x 1: 

Search on shopping website for “Analog Thumb Stick Sensor Joystick Module” and the correct type will show up.


Teensy 3.5 Arduino compatible microcontroller.

For setup with the Arduino IDE on your computer, read tutorials on the manufacturers website:

https://www.pjrc.com/store/teensy35.html


Generic USB (A) to Micro USB data cable: Search online for "Micro USB Data Cable Lead"

Make sure you include the word Data in your search as some are for charging only and will not carry data.


Miscellaneous:

Piece of wood approximately 1m long.

Assorted cable ties, glue gun is also useful.

Lots of hookup wire and possibly ribbon cable.

Soldering skills will be required.

Step 1: Screw Sensors to a Wooden Board

Space out the sensors at least 10cm apart. If closer there will be a risk of you activating two adjacent sensors with your hand due to the width of your hand. Screw each to the board with two small screws as shown.

Extend the wires to each sensor so they will reach the Teensy 3.5 board. All the black wires join together and attach to a GND pin on the Teensy. All red wires of the 8 sensors join together and are soldered to the 3.3V(i.e. power output) of the Teensy board.


Step 2: Wire Up the Thumb Joystick

The joystick is used to 'bend' the pitch of the note being played with your other hand.

These joysticks contain two potentiometers, one for forward/back movements and one for left/right movements. In this case we will use just one of these potentiometers.

Each potentiometer has 3 pins. Choose the one you wish to use for the pitchbend feature and solder 3 wires to it. The left hand pin is connected to 3.3V analog supply pin of the Teensy and the right hand pin to any GND pin on the Teensy.

The central wiper Pin is connected to Pin 23 (A9) of the Teensy.

I made a 3D printed enclosure for the joystick module. You can mount it any way you like but for me this was convenient. The .stl file for the 3D printer is attached.

Step 3: Wiring Diagram

The wiring of each sensor is quite straightforward however it is recommended that you try to keep your wiring reasonably neat and tidy as it can rapidly become spaghetti otherwise.

The joystick is also wired as shown with 3 wires.

There is no battery power supply as a laptop will (just) supply enough power via the USB cable between the Teensy and USB socket of the laptop to run the Teensy and the 8 sensors.

To make it clearer in the wiring diagram, the yellow wires from each sensor have been shown in purple. The black wire of each sensor is wired to GND and the red wire of each sensor is the power supply and is connected to the 3.3V pin of the Teensy microcontroller.

Step 4: Connecting to a PC or Laptop

NOTE:

If connecting this to an iPad, via an Apple female USB to Lightning adapter for example, to run it with a software synthesiser program such as bs-16i then the iPad will NOT supply enough power and a battery power supply will need to be provided for the Teensy board. Therefore, at least to begin with I suggest you use a PC or laptop with the aetherharp.

Plug the micro-USB end of the cable into the Teensy 3.5 microcontroller. Ideally fix the cable to the wooden board to de-stress the rather fragile connection between this small plug and the Teensy board. I drilled 2 small holes one each side of the cable and just used two cable ties through the board to achieve this. The other full-sized male USB end of the cable then simply plugs into your PC or laptop and this also then provides power to the Teensy board.

I fixed other items to the board in a similar way.

To hear the MIDI output from the Teensy you need something that will run on your PC - a software synthesiser (also known as a DAW or Digital Audio Workstation).

Many of these are available and they can be very sophisticated. However, to begin with you may wish to use a very simple to use free one called VMPK or Virtual MIDI Piano Keyboard

Information and download here:

https://vmpk.sourceforge.io/

Step 5: Code for the Teensy Board

NOTE: This project does assume some familiarity with Arduino microcontroller projects.

Here is the Arduino code that needs to be uploaded to the Teensy board.

When you upload it you need to select "Serial + MIDI" in the options it gives you when setting up the connection between the laptop/PC and the Teensy.

Audio Challenge

First Prize in the
Audio Challenge

1 Person Made This Project!

Recommendations

  • Block Code Contest

    Block Code Contest
  • Make it Glow Contest

    Make it Glow Contest
  • Cold Challenge

    Cold Challenge

10 Comments

0
mcshrade
mcshrade

1 year ago

I finally built this today, but had/have a few problems. When I tried to upload sketch I got error/ failure. It says it can't find SharpIR.h and RunningMedian.h !! After some poking around the arduino program I found Tools->Manage Libraries and there was a list of Libraries waiting to be installed. I typed the file name in the search and sure enough they were there waiting, so I install them both. Now at least the Teensy will load with the program.
I can't get it to talk to my computer now. Downloaded Virtual Midi Piano Keyboard, but can't get it to communicate with the Aetherharp. Anyone have any ideas to get me going?

0
BJG145
BJG145

Reply 12 months ago

Are you using a PC...? I'd start by using a utility like MidiOx to see if you're receiving MIDI data. You should be able to see the Teensy in the list of inputs under Options...MIDI Devices.

0
JoeL58
JoeL58

Question 1 year ago

Hello I asked about splitting the keyboard to use two Arduinos so I could play two notes at the same time as it seems it can only play a single note at a time. I don't recall seeing what sustain peddle you use. Could you tell me what instrument you based your sensors on? A guitar has 8 notes and 4 sharps and the piano has 7 notes and 5 sharps. Now it has been played for a time, what changes would you like to have? Thank you for a great inspiration and project.

0
BJG145
BJG145

Answer 12 months ago

Hi JoeL58 -

Around 2010, Omer Yosha created a controller called the Airpiano.

https://newatlas.com/airpiano-midair-keyboard-inte...

It's long discontinued and the website is no longer available, though you can still find it on Wayback.

https://web.archive.org/web/20110718194148/http://...

The original maual is available here:

http://www.airpiano.de/wp-content/uploads/2011/04/...

This was produced and sold in small numbers, but they're now impossible to find. The only person to have used them seriously is Scottish musician Jo Hamilton.



The Aetherharp is partly inspired by the Airpiano concept; that's where the grid of 3x8 notes comes from.

If I was going to develop the idea further, I'd add a couple more of the features of the original design:

1) The ability to configure sensors as MIDI controllers (eg filters) as well as notes
2) Presets which would store a set of notes/controllers
3) Polyphony and sustain pedal. (It's not currently configured for a sustain pedal; that's just the synth sounds being used. I expect you could add polyphony just by changing the code.)

The case for mine has prest buttons and a pedal input jack like the original, but they're not connected up yet.

I've found that in general it can be made to work pretty well, though it's quite sensitive to the lighting conditions. For the demo, I played around with the variables that define the three levels a bit to get it as responsive as possible without triggering extra random notes. It would be cool to have some physical dials which allowed you to change the boundaries for the three levels so that you could make some quick adjustments when setting it up for a gig, in the same way that you'd tweak the settings/sensitivity on a theremin before a performance.

I'd probably add some lights too. The original had LEDs that indicated hand level. It would be nice to include something like NeoPixel Rings for this.

Incidentally I found that I could get away with the layer of red plexiglass over the sensors, but it had to be directly on top, in contact with them. If there's a gap it throws the readings out. (I used "Red Tint 4401" Perspex.)

Ben

AH.jpegairpiano.jpg
0
JoeL58
JoeL58

1 year ago

Sir I was wondering how or where would I add another sensor? I want to add 2 more Arduinos so each would run 3 sensors. That would let 3 notes sound at once. There will a ras.pi 3 built in then a tube preamp feeding an ic amp, so it will need a fan. Do think a multi jet drive reader would let me build in different voices? Thanks for a great project, I'm a fan from now on. God bless and keep well.

0
jonas.diaboliste
jonas.diaboliste

Question 1 year ago on Step 5

Hello I make on, I have sound with it, good, but I have always note player her self? Do you have an idea please? If I put my hand statick on the A0 sensor the note routine stop and wen I put out it's star again!
I use Ableton Live to generate sound piano.
Thank's Jonas

IMG_2609.jpg
0
LarsQ1
LarsQ1

Answer 1 year ago

Change the dist. to 10,18 and 25 will help.

0
The Cardboard Kitty

I have zero electronics experience, but I really want to try making this! What a beautiful instrument!

0
XenonJohn
XenonJohn

Reply 1 year ago

If you can find someone familiar with Arduino microcontroller projects it would help you a lot. There is a bit of setup required to allow the Teensy microcontroller to be programmable from an attached laptop using the standard Arduino interface. It is all described on the manufacturer's website: https://www.pjrc.com/teensy/td_download.html

0
jessyratfink
jessyratfink

1 year ago

That is awesome! Looks very fun to play :)