The Digi-Gurdy

MIDI based electronic portable practice hurdy-gurdy.

Similar projects worth following
The hurdy-gurdy is an ancient musical instrument (10th century) with drones and melody strings bowed by a rotating wheel, played by pressing keys which contact them at different points. It has in more recent times featured in the TV series “Black Sails”, “Walking Dead” and also in the “God of War” games. The major barrier for beginners is that they are very expensive and built to order with lead times of several months to a year. Rather like bagpipes, they are noisy when practicing. For pipers, practice chanters and e-chanters are available to solve this problem while nothing similar is available for the hurdy-gurdy. The Digi-Gurdy therefore is an electronic hurdy-gurdy keybox, with correctly placed keys, that outputs MIDI via a USB cable to an attached laptop or phone running suitable MIDI player software, for practice anywhere using headphones, thus preventing eviction or divorce!

Email:     Video clip of it being played: 

What is it?  

In addition to the above, a hurdy-gurdy also has drone strings and a buzzing rhythm section operated by varying the rotation speed of the crank handle. It has been described as the stringed equivalent of the bagpipes and, as with bagpipes, there are design variations in the folk traditions of different countries. Links to videos of real hurdy gurdy players are provided.

The Digi-Gurdy is an electronic hurdy-gurdy keybox, with correctly placed keys, that outputs MIDI (an industry standard digital communication system for electronic musical instruments) via a USB cable to an attached laptop or phone running suitable MIDI player software. When used with headphones this would give you a low cost, portable, compact and silent means of playing the equivalent of the melody strings, i.e. something to learn to play on wherever you may be. It would not even require a battery as it would be powered via the USB cable.


1) Major barriers to entry for beginners are that while a playable electric guitar for example can be bought for around $200, a hurdy-gurdy is made to order by one of a few specialists and costs around $1500 even for a basic instrument with a waiting time of several months to a year.

2) In addition, it is noisy, making a good place to practice without upsetting your companions hard to find! This problem has been solved for bagpipe players with the availability of both practice chanters resembling a simple flute and electronic e-chanters allowing practice while wearing headphones.

3) Even if you do order one, you need something to learn to play in the meantime, while you are waiting for it to be built.

How it works: The entire structure of my first attempt was 3D printed in ABS plastic. The keys press on micro-switches and the brain of the device is an Arduino Teensy 3.5 microcontroller. An OLED display shows you which note you are playing at any time. The new one documented here uses alloy extrusions to create a better quality device, with 3D printed components slotted into them.

It now has a Demonstration Mode which plays a selection of songs at the speed of your choosing while displaying the notes on the OLED screen as it goes. NOTE: Some of these need more work, feel free to edit them! Version 1 had a fold up handle held in the right hand to help stabilize it while the melody was being played with the left hand. In the real instrument the right hand would turn a crank handle, which is a separate skill to be learned in its own right. I have now simulated this using a hobby robot gearmotor as a dynamo.

Primary objective: To produce this version 2 of the Digi-Gurdy either fully built or as a kit which could be assembled by someone around 14 years or older with basic soldering skills and ability to assemble a plastic model kit. October 2019: It is now buiit from 3D printed parts, alloy extrusions and laser cut ply parts.

NOTE: Click on my name and send me a private message to obtain the soundfont file for use on the attached mobile phone as it seems to be too large for me to upload anywhere.

Video examples of various styles of hurdy-gurdy players, in no particular order:

Nigel Eaton

Nigel Eaton with Led Zeppelin

Gregory Jolivet

Harry Wass

Efren Lopez

Tobie Miller

Andrey Vinogradov

Jiří Wehle, Prague street performer

Example of a younger player, Patty Gurdy.

Video about the Black Sails TV series soundtrack

Jimmy Page playing HG in the film: The Song Remains The Same

Guilhem Desq

Some Metal: Lamb Of God cover by Helvetion


Main parts listing for both crankless and with-crank versions, including parts for the heavier duty crank mechanism (Jan 2020)

Adobe Portable Document Format - 1.53 MB - 01/29/2020 at 15:34



Wiring diagrams for non-crank version and stronger-crank version

Adobe Portable Document Format - 410.57 kB - 01/26/2020 at 12:16



Assembly manual for both crankless and crank versions, including the new stronger updated crank mechanism.

Adobe Portable Document Format - 11.72 MB - 01/26/2020 at 12:15



Arduino sketch for the Teensy board. Code is same for both versions now. It auto-detects whether a crank module is present or not on startup. Set up for the new heavier duty crank mechanism. It just uses one push button now wired to Pin39. One push to turn melody and drones ON, press it again to stop them. Many small improvements based on user feedback. 21 songs in "Demo Mode" menu.

ino - 369.41 kB - 01/24/2020 at 20:45



Additional .stl files required for the new stronger crank module parts. 24/01/2020

RAR Archive - 1.46 MB - 01/24/2020 at 14:36


View all 9 files

  • Project log #12: Stronger Crank and many code changes

    XenonJohn01/24/2020 at 14:26 0 comments

    List of changes to original version based on feedback from a couple of early users:

    1) Much stronger crank mechanism based around a larger gearmotor in new 3D printed enclosure with a 6mm shaft. The bulb has been removed as if it blew, the system would not work as intended. Replaced with wire-wound resistor bridge. 

    2) No run-on when you stop cranking. Originally this was intended to help beginners as it would sound even if you momentarily stopped cranking.

    3) Keys do not play at all unless you are either cranking or have pressed the gaming FIRE button.

    4) Drones did not sound right in previous code when using tuning other than G/C. As the DG code has to be aware of your selected drones on the FluidSynth app on the connected smartphone, this has been addressed by the OLED screen offering you 4 tuning options on startup. Once you select one, it then tells you what drones to select within FluidSynth. This keeps it all working correctly. Tunings are: melody G / Playing in key of G;  melody G / playing in C;  melody D / playing in D;  melody D / playing in G. Trying to keep beginners from information overload but also keep more experienced users moderately happy.

    5) If you intermittently crank with a note key held down, it will sound the note each time, in previous code you had to release and re-depress the key.

    6) In new FluidSynth soundfont (V10 onwards) I have added larger choice of different loudness buzz sounds and keyclick sounds. PM me for the soundfont. I will send by wetransfer as large file.

    7) Repeat MIDI - off commands being sent out on some channels have been much reduced. With FluidSynth these were not noticeable but if attached to a more sophisticated synthesiser program running on a laptop, this could produce problems.

  • Project Log #11: More design tweaks and assembling the first six.

    XenonJohn11/24/2019 at 15:19 0 comments

    I am assembling six DG's for some brave early adopters out there. 

    A few design changes: 

    i) On startup the software measures the voltage on the analog pin from the buzz-sensitivity potentiometer 200 times and calculates the standard deviation. If low, a crank module is present and if large it is not. This means I can use same software for both variants of the design. I have added a gaming button to the crank module now instead of a small switch, so you can play it by tuning the crank, or by pressing this button with right hand. If you want to remove the crank module at some point in the future, you can unbolt it, remove the glowing glass dome and remount the switch from the crank module into the hole where the glass dome was (it will fit exactly). Screw on an end blanking plate, which will be supplied and the machine will then work again just fine in crankless mode with no software changes required.

    ii) In demonstration mode there are now 22 songs.

    iii) Some changes to the code have been made allowing the crank buzz to operate a little more like the real thing.

    iv) Acetone polishing of the 3D printed keys: I want the stems to remain unchanged as they fit the slots in the wooden laser cut panels perfectly, but I do want the key ends to be smooth and shiny, i.e. I want to acetone vapour polish the ends of the keys only. The solution is to wrap the stems in aluminium foil before placing them into my vapour chanber.

    Despite using laser cut panels to reduce the amount of 3D printing, as you can see I have been on a 3D printing-fest for the past 3 weeks to produce all the parts required.

    Have experimented with various pushbuttons, the gaming ones work best.

    Just some of the acetone polished keys.

    Some of the laser cut panels.

    End structures and crank housings, printed and acetone polished.

    Six sets of microswitches mounted and wired up to Teensy boards along with the OLED screens.

    Key-Henge. My acetone polishing rig. The felt is soaked with acetone and held to inside of glass bell with magnets.

    Some nice potentiometers with gold anodized knobs.

    Alloy extrusions all cut to length.

    Fishing reel handles from China.

    Better photo of the acetone polishing rig.

    Self contained crank module wiring now has multi-pin plug to connect it to main body of the DG.

    Bags and bags of 3D printed upper and lower keys, all of which are in the acetone polishing queue!

  • Project Log #10: New Build Videos 21/10/19

    XenonJohn10/21/2019 at 22:51 2 comments

    Here are some new build videos (in 2 parts as YouTube only allow a max video length of 15min. This is the new hybrid version made from laser cut 3mm ply, aluminium extrusions and 3D printed parts. The version shown here is the basic one without the crank module.

  • Log #9: Redesign using laser cut ply to reduce 3D printing

    XenonJohn10/20/2019 at 21:50 0 comments

    October 2019: REDESIGN IS COMPLETE using laser cut ply for the front and rear panels to reduce the amount of 3D printing required somewhat, to reduce overall build time and also to reduce the time spent filing and fettling the keys, keyslots and so on to make everything fit and work smoothly.

    The set of files I have just uploaded all refer to this easier to build crankless version. All the information is there for you to build one. This has an arcade FIRE button on the front right hand surface. Just hold the right hand end in your right hand, press this button with your middle 2 fingers; the drones and open melody string will sound as if you had started to turn the crank, then you start playing.

    - A small amount of filing of the keys may be required but the laser cut ply parts require none at all.

    - The keys can easily be renewed if you break one.

    - Rear ends of the keys project from rear of keybox in a way more similar to a real HG.

    - Keys shaped to hit front deck just before the maximum microswitch travel is reached. This should better protect the microswitches if played too hard.

    I am working on a version of this with the previously described crank module. The build for that version will be 95% the same as this i.e. the extra wiring for the bolt-on crank module and slightly different code.

    The play button does not have to be lime green, they come in many other colours!

    Next project log will feature the crank version of this new design.

  • Log #8: Different tunings enabled & feature in "Prog" magazine

    XenonJohn09/13/2019 at 14:13 0 comments

    Short update:

    I have improved the software so now you can select either of the two commonest tunings for the keyboard i.e. G/C or D/G. You can select the one you want on startup and also change the tuning while the device is in operation by pressing the upper rightmost three keys simultaneously. It is a bit like a Tesla car, load in a software upgrade and your (unchanged) hardware suddenly performs better.

    I have uploaded this version of the code (Version 37).

    Also the original red plastic DigiGurdy has to my surprise been featured in the current edition of Prog magazine - as in Prog Rock. Aug/September 2019.

    I intend to go through all the 3D print files one more time then will also post them up here.

  • Log #7 How to connect to phone and use Fluidsynth to create music

    XenonJohn08/23/2019 at 23:30 3 comments

    This video update shows how you use a phone to play the MIDI data coming out of the DigiGurdy.

    The soundfont file (.sf2 format) has to have been uploaded onto the phone in advance. I will make this file available soon. All the sounds to be played are stored in this file.

    The MIDI player I am using is called FluidSynth and is available free from the Google Play store for Android phones. An Apple version also exists but I have not tried it with the DigiGurdy.

    The DigiGurdy outputs data on 5 MIDI channels. In FluidSynth we must assign an instrument or sound to each of these 5 channels for it to work correctly. This is best explained with a video and so the video below shows me setting up Fluidsynth on a phone in this way. FluidSynth has a very basic user interface but it also has very low latency (time between pressing a key and hearing the sound) and so works well with the DigiGurdy.

  • Log #6: Fully Assembled With Crank Module

    XenonJohn08/19/2019 at 20:56 0 comments

    Here is the DigiGurdy coming together at last, with the crank simulator module attached. This video clip gives an overview of the functions of the device from the point of view of a user and also shows how you select and play songs in demonstration mode. I will add a more detailed video at some point showing you how to get the soundfont onto your phone and set it up to play the sounds correctly with the current version of the DigiGurdy. In this update video you can see:

    - Crank operated drones and open melody string.

    - Crank operated buzzing sound (sound audio file supplied by Nigel Eaton, many thanks).

    - More realistic key-click sounds

    when the keys are pressed.

    - Use of a control knob to adjust the sensitivity of this buzzing rhythm sound when cranking to suit your own style of playing.

    - Blue orb on front panel which glows when turning the crank.

    - Demonstration of the crank-override switch which allows you to practice the melody without need to turn the crank.

    - Demonstration mode is shown being used with user-selection of songs and playback speed.

    The whole assembly is held together with just 4 long screws at each end. Almost no adhesives are required apart from where the screen is held in position.

  • Log #5. Workable crank solution found at last

    XenonJohn08/06/2019 at 12:00 0 comments

    Project Log #5. DigiGurdy project. 

    I finally have a reasonable crank simulator now i.e. a robot gearmotor in reverse (where the crank spins up a motor acting as a dynamo). To create resistance to turning I originally shorted out the motor connections which long term is probably a bad idea as it can cause arcing at the motor brushes and so on. 

    Here, to create a more controlled load on my dynamo, I experimented with secondary motor + wind resistance vane, inspired by old clock chime mechanisms, before settling on a simple filament torch bulb (remember those?) as the best low cost compact solution.

    To be clear, I could have a large pulley with an adjustable friction band around it, or a wheel with a friction material against its edge. That would cost more, be less compact and also push the assembly and adjustment/fettling time up to get it all working properly. The gearmotor-bulb is low cost, compact and just bolts/glues in place. Also as the bulb flashes nicely with each burst of crank rotation speed which in a hurdygurdy also creates the buzzing rhythm sound, I may be able to make a feature of it.

    I am retaining the chopper wheel which senses the speed of rotation of the crank. Originally I had thought I might measure the voltage output of the motor using one of the Arduino analog input pins. However the chopper wheel does have low latency, is working well and the sensor adds almost no extra cost.

    Most of the cost of a real hurdy gurdy is the labour of the skilled luthier who builds it. Part of this project is to keep the human assembly time down to an acceptable level to make this an affordable compact second instrument for silent practice. This is why, if I can use or adapt a more or less pre-assembled mechanical mechanism, I will do so where possible.

  • Crank handle chopper-wheel experiments and progress

    XenonJohn07/28/2019 at 19:48 0 comments

    I have been experimenting for quite a while now with robot gearmotors as a means of creating something that can be hand cranked, with just the right amount of resistance to turning. I have been encouraged by Nigel Eaton (Hurdy Gurdy maestro) to continue my effort to simulate a crank handle if at all possible and not give up on this aspect of the project. Again, where possible I am trying to keep the component costs down.

    The Teensy microcontroller inside the DigiGurdy needs information on the rate of rotation of the crank. When the crank is turning, the Teensy can then activate the simulated drone strings and open melody string(s) to simulate what would happen when the rosined wheel rubs against or bows these strings in a real hurdygurdy. Furthermore, whenever the rotation suddenly speeds up, it can then also simulate the buzzing sound that this would normally produce, i.e. the rhythm part of a hurdygurdy. 

    I have created a 3D printed chopper wheel which intermittently breaks the infra-red beam of a low cost sensor designed for this purpose. This structure has an unusual shape as it has to be somewhat removed from the area where your hand is cranking the handle to avoid damage, it also has to be shaped to fit onto the shaft of the fishing reel crank I am using, while also allowing access to the grub screws that hold the handle onto the motor and also fit over the end of the motor.

    I used software with interrupts for reading position encoders etc. but had major problems as the program would freeze and crash when connected to the phone but not when using the Serial window of my laptop. I eventually found a frequency counter library designed for the Teensy microcontroller and this works really well.

    I now have all the functions above more or less working OK, i.e. the drones come on when you turn the handle, the trompette buzz sounds when you accelerate your rate of turning and you are able to play the melody on the keys once the handle is turning. I am very pleased with the outcome so far.

    The next step is to redesign the enclosure for this so it is more in keeping with the rest of the DigiGurdy so can be added to the end in a modular manner.

  • Experiments to simulate a crank handle

    XenonJohn07/08/2019 at 11:09 0 comments

    Having finally worked out how to play the buzzing rhythm sound from the soundfont file on the attached mobile phone MIDI player, at present by pressing a button on the handle, this means I can now replace this button in theory at least with some form of crank handle.

    The crank handle is low cost and intended for a fishing reel. I have attached it to a motor which has a reduction gearbox. I had to buy 3 motors with different reduction ratios before I found one with the right amount of mechanical resistance to turning. In this video update I show each motor and also show how I can make an attached pager motor buzz by turning the crank. As the handle on the current Digi-gurdy can slide fully out and is attached electronically to the main body via a headphone plug, this means it could possibly be replaced by a crank module with no modification of the main body of the device, for those who wish to try it. More work required here but clearly this has potential. I will see how I get on and show the results in the next update.

View all 12 project logs

  • 1
    Step 1

    The detailed build instructions have been uploaded as a .pdf in the uploaded files section.

    They have been broken down into 2 parts: 

    a) Construction of the electronics and wiring loom and 

    b) Assembly of the aluminium extrusions and 3D printed parts.

    In the updates I have already included a video showing how to use the DigiGurdy from the visual viewpoint of a user (Project Log #6) and also a video showing how to use it with the attached FluidSynth mobile phone application (Project Log #7).

    I have provided a parts listing. However please look at the parts listing .pdf file in the uploaded files section which gives you a lot more details on each of the parts you need plus suggestions as to where to buy them from, i.e. the online search terms to use.

    Below I give you an updated video outlining all the main steps of the construction process.

View all instructions

Enjoy this project?



Christopher Baker wrote 01/24/2020 at 03:55 point

Is there any plans to sell these fully constructed?

  Are you sure? yes | no

XenonJohn wrote 01/31/2020 at 00:43 point

I have made 6 so far. Small improvements based on feedback as you can see. I have been asked for many more, which would take a very long time to construct as this is not my regular job after all. Working on ways to shorten the construction time at present to make this more feasible. Blown away to be honest by the amount of interest.

  Are you sure? yes | no

llwy wrote 09/21/2019 at 16:29 point

Great work!

I checked your program. So you dropped the optical encoder and reverted to reading directly the voltage out of the motor?

One stupid question: at which point is the usbMIDI object created? I did not find any #include statement related to it and I could not find its initialization in the code.

Keep up the great work!

  Are you sure? yes | no

XenonJohn wrote 09/21/2019 at 22:36 point

I think the answer to the coding question is that the Arduino Teensy series have MIDI driver software built in which makes life much simpler when trying to get it all to work. The page to look at, with code examples, is this one:

They cost a little more than than the regular Arduino Uno/Mega boards, but having the built in MIDI functionality is worth it. They are around £30 i.e. about $30 if you shop around online - see how I devalued the UK pound there!

I am always looking at ways to keep the build as (relatively) straightforward as possible, in case I ever sell a few ready built or as kits. For example repurposing the keys to select options in menus saves me having to add lots of buttons and switches (inspired by my Sinclair ZX81 computer in the 80's which had up to 5 function options on a single key). The analog crank approach actually worked pretty well when I tested out the idea, having originally started off with an optical encoder setup. More testing required but at the moment it seems to be OK. A removable plug in crank module might be a good thing as people could mail them back to me when they break, while the keybox would still remains playable! The gearmotors are as low as £4 if you buy from China so semi-disposable.

To reduce the large mass of 3D printing involved I am experimenting right now with laser cut ply panels front and rear, which would then just leave 3D printed end structures plus the keys. I am keeping the alloy channels as they just make it look so nice. Update on this in 1 to 2 weeks.

  Are you sure? yes | no

llwy wrote 09/22/2019 at 10:33 point

Dear John, 

Thank you for the explanation. I was trying to test your code with a reduced number of button on an Arduino Pro Micro: I did not realize that the teensy came with its own specific libraries.

I'll order a teensy to test the functionalities.



  Are you sure? yes | no

XenonJohn wrote 07/21/2019 at 17:10 point

Bear in mind that there is a learning curve with 3D printers and it is worth printing a few things that do not matter to you very much just so you become familiar with your particular machine. One or two of the very low cost ones out there are now pretty good.

  Are you sure? yes | no

Jack Walsh wrote 07/21/2019 at 16:01 point

I was just putting together the main body of my digi-gurdy and noticed that there are apparently new print files for redesigned parts.  When will these be released?  I'm willing to start over!!  I particularly like the new key design -- the screws through the keys always seemed unworthy.  Thanks for all your work!!!!!

  Are you sure? yes | no

XenonJohn wrote 07/21/2019 at 17:08 point

If you can wait a few weeks I will soon have a lot more free time to really finish this off. On expert advice (Nigel Eaton) I have been encouraged to really try to get a working crank handle simulator completed as part of this project. This will mean the 3D files might change yet again. Crank work will be feature of next update, more parts on order right now.

  Are you sure? yes | no

Jack Walsh wrote 07/22/2019 at 14:38 point

Yay!!  Gives me some time to practice with just the keys!!!

  Are you sure? yes | no

Shannon wrote 07/05/2019 at 17:53 point

This project might well be the one that makes me buy a 3D printer. I'd still save money over buying an acoustic hurdy gurdy.

  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