Midi Concert Harp

This is a 44 strings concert harp using individual pinch strenght on each string to produce midi events played using zynthian/Pianoteq

Similar projects worth following
The goal about this project was to create a concert harp for my daughter.
Designed on fusion 360 (work in progress).
Strings are guitar strings. Strenght on ech string while pinching is monitored using cheap strain gauge (chineses ones used in balance) coupled with an AD620 amplifier.
Amplifiers are linked to an arduino Due (9 string per board) on the analog input.
I also used digital pins on the arduino to get a capacitive touch on each string but that was a dead end ( 99 % of reliability, not enough for an instrument).
Rise up and down of each string is monitored : A rise down triggers a midi event to usb port (using midi usb library).
Usb is connected to a raspberry Pi using Zynthian with Pianoteq layer.
Everything is playable. I now have to build pedals to get half tones up and down. Not technically a big deal, but I have to find some time for that. For now, half tones are selectable using a arduino touchscreen.

I planned to build a midi harp (cheaper, no need to tune it and intersting project).

It will be made with composite material but wood is used for now, till I get the final hardware configuration.

I want to keep the touch for the harpist, so I didn't want to use touchless strings (like laser ones).

I wanted to use both string strengh and capacitive touch. I was wrong with capacitive touch ( 10 times much to get a reading compared to analog reading and 99 % efficiency (not enough !!! ) so I gave up with this.

I used piano strings first (because I needed conductive string for capacitive touch) but they were not smooth enough. I went on guitar strings (painted with silver to improove conduction : useless now). I think the project will work with nylon strings.

The project is powered with powerbank, I want it to be autonomous.

From a software point of view on arduino : The code is not very long but I spend a lot of time on it (smoothing signal from amplifier, analysing strenght curves to know when to trigger midi events, etc.).

Some work also on string strenght. In other words, how to keep the harpist touch (i.e. the more the string is pinched hard, the more the sound is loud even if physical string tune has changed during the night).

Next step is to build pedals : not a big deal from a technical point of view, but I have to find time to achieve it.

  • Pedals

    julien.hors03/31/2020 at 10:02 0 comments

    I had a lot of work this year... Not enough time left for this project.

    Now, I'm stuck home for two weeks now, because of the virus. First of all, I really hope that you and your famillies are ok. I hope that the worl will sort this out as soon as possible !

    I rediscovered the primal way to hack : I mean without the the help of Amazon or Aliexpress ;-) Funny how you can find things if you really dig in your house. As an example, I found pieces of wood under some furnitures in my living room. They were here for like 5 or 6 years....

    I also had arced buttons laying around (the arcade box is built, but I wanted a better quality button set).

    Video is better than words :

    Hardware : I already had the tft screen working on the celtic version. I added a physical switch (pedal / celtic) and a set of 14 arcade (foot) switch. Everything is wired in pullup mode on the mega 2560 analog inputs (digital are used by the TFT).

    A semi-fail : 2560 + TFT is a I2C master for the 5 aduino DUEs slaves (each one sense the string tension variation and produce the midi event). To prevent another wire mess, I planed to add an arduino nano on the pedals, so only I2c wire would be running along the frame (instead 14 + ground). It was late, I was a bit lazy and , sometimes, the simpler is the better (even if it involves another mess of wire on my prototype). The truth is that I think that my I2c configuration is close to the breakdown (Due and 2560 don't work at the same logic level (I realised that monthes after), no pull up resistors)... It works, I don't know how but I feared that if I added one more arduino, it would ruin all.

    Software : No major problem here. Just played a little bit with UTFT. I2C is stable so ther is no feedback needed from Due's (i.e. if I switch to Re b on the master, I assume that Due's are always receiving the information). The only problem is that when I reboot the master, notes are not matching with the Due's ones (I only have to switch up or down every notes on the master once, and everything's fine). This is not meant to happen in normal use as master and slaves are switched on and off from the same power supply.

    Next step is to improve "pedals". The harp player needs a position feedback (i.e. he needs to know if the pedal is down/middle/up just touching it with feet), and he/she also needs to prepare the action by puting her/his foot on the pedal but without fire it up (i.e. it needs a minimum force to be applied).

  • Late log

    julien.hors08/29/2019 at 16:25 0 comments

    Winter 2018-2019 : Frame design using Fusion 360.

    Early 2019 : Test on one and 7 strings on a piece of wood to select the best hardware configuration.

    March 2019 : Decision is made to move on Zynthian + Pianoteq ( best ratio quality/size IMO).

    April 2019 : Piano strings that are used are too hard, I moved to guitar strings.

    May 2019 : Sensitive touch is abandoned, not efficicent enough.

    August 2019 : Software improvements on arduinos. The harp is playable ( far from a real one, but my daughter enjoys it).

    Now, working on pedals. I have to slow down on the project because, guess what ? I also have to earn some money ;-)

View all 2 project logs

Enjoy this project?



John Korchok wrote 02/01/2022 at 03:34 point

I’m in the planning stages of building a cimbalom-style ( MIDI controller, and your approach looks like the best one I’ve seen. Like the harp, the cimbalom doesn’t need pitch detection, just amplitude. Unlike the harp, cimbalom strings are played on both sides of the bridge, so I would need double the sensors. Since strings are struck with hammers, a heavier string might be OK. Any idea how much tension the strain gauges can withstand?

  Are you sure? yes | no

Annabella wrote 12/30/2020 at 15:50 point

Dear Mr Hors, congratulation for your work on the MIDI harp. I'm a harpist and music teacher from Padua, Italy. I'd like to know if it would be possible for you to make and sell a custom MIDI harp, without levers and with 34/38 strings. Actually, I'm working on a project for harp midi controllers, but I don't have one. So, I'd like also to know its price, if possible.  Thank you in advance for your kind reply,  Annabella Palleri

  Are you sure? yes | no

professorSchism wrote 12/19/2019 at 17:43 point

Do you have any recommendations for sensors now that you've tried out different ones? I'm looking to build a simple arduino-based MIDI harp, and I was going to experiment with simple vibration sensors attached directly to the ends of the strings, but I have no idea what to expect. 

  Are you sure? yes | no

julien.hors wrote 12/20/2019 at 07:29 point

Well, the best advice I could give is "Just try it" ! ;-). I made a lot of experiment with cheap chinese products and, despite most of them were far from the good solution, it was a good way to learn how things work and how they have to be done.

I never tried a vibration sensor but it could be a good solution. That said, from my experience, there is a couple of things that I learned and you should be aware of :

The delay between physical pluck and midi event generation should be as low as possible (typlically a couple of ms wich is impossible with a 50 Hz samplerate hardware as an example. LM393 used in your module shouldn't be a problem here as its response time is about a couple of micro seconds).

The noise is also important. Electronic one is common with this kind of cheap modules. You can deal with it using a piece of code, but you can't be sure that it can be done until you test the real device.

A physical noise can also be produced by the other strings that are plucked. The vibration will travel to the frame and trigger the other strings.

Debounce is also important : strings mustn't vibrate for too long or they will trigger again the same note.

You should experiment (as I did) on a long piece of wood with two or three strings mounted with wood screws. You'll be able to test your hardware ans software and then, when everythings ok, you will do the frame conception.

Let me know when you'll test it !


  Are you sure? yes | no

Glenn S West wrote 08/19/2019 at 16:24 point

will u opensource this?

  Are you sure? yes | no

julien.hors wrote 08/22/2019 at 16:43 point

I think I will ! But there is a lot of work until I get something really usable. CAD file is already obsolete, and I've made a lot of  improvements. The fact that  don't use sensitive touch anymore will affect the next hardware design. For one string I need 6-7 us to read an analog value (from the amplifier) and 150 us to get a capacitive touch reading. The hardware is a bit overkill so I will move to something cheaper and/or more simple.

  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