Introduction: Aetherharp-3

About: my inventions

I had a Theremin-based synthesizer instrument on my wishlist for many many years, but when I saw the Aetherharp from XenonJohnI decided to build this instrument also. The hardware is not very complicated and tinkering with the software is a very nice challenge to get the sounds you really want.

My first design was the Aetherharp-2 published here: https://www.instructables.com/Aetherharp-2/

Now I have upgraded this Aetherharp-2 to version 3, using the same Teensy 3.5 microcontroller and eight SHARP infra-red sensors laid out in a row, but now 8 notes in 5 octaves can be played, by hovering your hand in the position of the note you wish to play and using the UP/DOWN octave buttons.

This board reacts even faster, plays multiple notes at the same time and also sends MIDI signals to an attached laptop via USB. This PC uses software to convert these signals into sound. via the free software sound program VMPK (Virtual Midi Piano Keyboard), combined with VirtualMIDISynth from CoolSoft (also a free progam)..

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

This Aetherharp-3 has many improvements compared with the original design:

 . An LCD display with a rotary encoder for selecting MIDI instruments from a list.

. Two pushbuttons to select (UP/DOWN) 5 octaves, starting with the middle octave.

. 8 notes can be programmed via the rotary encoder button.

. 8 notes can be reset to the original set via the UP pushbutton.

 . Two switches to toggle ON/OFF vibrato and sustain effects.

 . Two Light Dependent Resistors (LDR) to allow pitch bending while playing by moving your hand above them.

 . The Sharp IR sensors (type GP2YA41SK0F) are turned 90 degrees for better reaction to hand movements.

. See the attached Sharp datasheet for details.

 . The SharpIR Arduino library is not used, the sensor reading is done via the standard analogRead Arduino instruction.

 . Outlier value compensation is not used, only limiting the minimum value when no hand is detected.

 . Random notes seem to occur only when no hand is detected.

 . The software uses the struct instruction to create a variable that structures a selected set of data.

 . See the Arduino playground at https://playground.arduino.cc/Code/Struct/ for details.

. This results in much faster reaction times.

 . External 5VDC power supply for the sensors wired per sensor to a central connection with a large capacitor.

. This minimizes power noise.

 . An indication LED is added for the 5VDC external power supply.

 . The sensors are mounted directly underneath the acrylic cover to avoid blocking of the IR sensor light.

 . Indication LEDs are added for each sensor. They are ON when a note is played and when sustain is active.

Supplies

See the attached PDF document for the components and tools.

Step 1: The Enclosure

The enclosure is made from pinewood and glued together without using screws. See the attached construction drawing for the details and the supplies list for the exact dimensions. The top cover is made from a white plastic L-profile with a clear acrylic cover for the sensor part. The control unit has a hardboard cover. The outside of this enclosure is finished with a nice clear coating.

Step 2: The Teensy 3.5 Microcontroller and the Sensors

The Teensy 3.5 microcontroller is very small and cannot be bolted in an enclosure. I used a small hardboard frame with four holes and used double sided tape for the Teensy. I soldered two rows of female headers on the Teensy and attached male connection pins for the wiring. The Sharp sensors are placed inside the enclosure with a spacing distance of 110 mm. I used additional 28 mm. plastic spacers and 40 mm. M3 bolts to mount the sensors just under the acrylic cover. This cover reflected and blocked the IR signals when the sensors were mounted on the pinewood bottom of the enclosure. Blue indication LEDs are added for each sensor. Leds are ON as long as a note is played and when the sustain setting is active.

Step 3: The Power Supply for the Sensors

To avoid power supply disturbances and noises through the wiring the sensors are not powered in series but are each connected to a centralized connection board with a capacitor and GND and +5 VDC connections, mounted close to the Teensy. With this setup power fluctuations will be minimized for the sensors. The 3K3 resistors are included for possible future addtions with LEDs, the 4K7 resistors are for the I2C connections of the control display. The power for the sensors now comes from a separate external 5VDC power supply, the Teensy board and the LCD screen are powered via the USB connection.

Step 4: The Control Unit

The control unit consists of an LCD display with I2C connections, 2 toggle switches (vibrato and sustain), two pushbuttons for octave selection UP/DOWN, a rotating encoder to scroll through the instrument list and a blue LED to show the presence of the external 5VDC power. A different set of eight notes can be programmed by pushing the rotary encoder button, they can be reset to the original set by pushing the UP button during programming. These different notes are not stored in EEPROM memory, they get lost when the Aetherharp-3 is switched off. For the pitchbend I used two Light Dependant Resistors, these are are mounted on a small circuit board strip with 5 mm. plastic spaces together with a few resistors. To prevent a short-circuit between GND and +5 VDC when both LDR's have a low resistance 4K7 resistors are placed in series, both 12K resistors take care of a correct range setting for the pitchbend. (try-and-error designed).

Step 5: The Software

This project does assume some familiarity with Arduino microcontroller projects.

The Teensy can be programmed with the Arduino IDE (Integrated Development Environment) using the TeensyDuino addition. 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. The program uses only one Arduino librariy, needed for the I2C Liquid Cristal Display. The original library embedded into the Arduino IDE work very well with the teeensy 3.5 board. It must be uploaded to the computer using tools/manage libraries and install. Search for Liquidcristal_I2c. There are many other libraries on the internet with the same names, but some will not work with the Teensy 3.5. For the LCD display, the sustain and vibrato switches, the octave selection, the note programming and the instrument selection six subroutines are included, CheckOctave(), CheckSustain(),CheckVibrato(), CheckInstrument() CheckNote() and CheckPitchBend(). The software uses the struct instruction to create a variable that structures a selected set of data. See the Arduino playground at https://playground.arduino.cc/Code/Struct/ for details. This results in much faster reaction times.

I integrated not all instruments in the Teensy sketch, but it is easy to add all 128 instruments.

See the attached PDF document for the instruments I included in the software.

The PC uses software to convert these signals into sound. I based my design on the free software sound program VMPK (Virtual Midi Piano Keyboard), combined with VirtualMIDISynth from CoolSoft (also a free progam).

When you start making music you must first start the Aetherharp-3 and then the VMPK program on the PC.

If you first start VMPK then you will hear no music.


Step 6: The Wiring

The control unit is connected with colored wiring. The sensor wiring is neatly hidden inside a white cable tray. A second cable tray is used to add the blue indication LED's. The Teensy is connected inside the enclosure with a 100 mm. USB cable to a pass-through connector mounted in the side of the enclosure. To avoid short-circuit on the Teensy connectors the wiring is insulated with shrink tube material. The sensors are connected to 8 analog input pins of the Teensy. The selected pins are all 5 Volt tolerant, this is a must because the sensors are powered with 5 VDC.