book collections email follower instructable user
Picture of DIY Guitar Midi Controller (a.k.a.

Here's a weird one for all you MIDI enthusiasts out there. Somehow I got around to thinking about electronics and guitars at the same time, and it occurred to me that whenever you press a string against a fret you are making an electrical path between the two. The logical conclusion of this insight is that if you wire up all of the frets and strings of a guitar (yes I used a bass) to a micro-controller, you should be able to detect what notes are being fretted by testing the electrical conductivity between the frets and the strings! Combined with code to send MIDI messages and routed to a synthesizer, this creates a cool new way interface your guitar to your electronic setups. It's an alternative to hexaphonic pickup guitar synths that detects actual physical contact instead of processing signals.

I was pretty certain at that moment that I was on to something new, however this idea has been around for awhile, likely originating with the Guitorgan, which used this fret-detection method to drive an old school electric organ. It has also been perfected in a guitar called the Solange 6 from Industrial Radio. These professionally crafted instruments retail for $1500 to $4000 respectively.

Unfettered, I set out to make my own version of this synth for more to the tune of under $50. It turns out that, thanks the DIY friendly Arduino Mega, just about any guitar with metal strings can be converted to this setup if you're willing to modify the bridge, with a catch.

The catch is that we can only achieve partial polyphony (when you play more than one note at once). Achieving true polyphony requires completely different frets and make this project a lot more difficult.

Additionally, also understand that my current setup generates a lot of electrical noise when the instrument is plugged into an amp. I'm working on a different version that shouldn't have this issue. This setup is just the simplest hardware and code-wise to implement.

Step 1: Ingredients

To construct this monstrosity, you're going to need:

  • A Sacrificial instrument
    • Any guitar (or bass) with metal strings will work. I recommend a cheapo electric model, as they are very sturdy and the low action is great for this setup. You will need to modify your bridge though, on an acoustic you do not have to as the strings are already electrically isolated.
  • Arduino Mega...for this setup we need a lot of inputs!
  • Diodes (just your standard low-amp parts bin type)
  • Plenty of 10K Ohm resistors
  • A good length of Ethernet cable, 12ft+
  • Quick setting, 5-min epoxy
  • Superglue
  • Soldering Equipment
    • A fine point and fine solder (ideally leaded) are a must
  • Drill and Bits
  • A nice big breadboard
Jmkoop2 years ago
Are you still currently working on this project, or have you shemved it? I found this page while doing research for my project... Which is essentially identical to yours.

I am hoping to solve polyphonic problem though. If i cant find a decent way through the programming, i fear i will have to go with segnented frets. (Major pain! A wooden neck wont have enough strength after having wire channels carved out... segmented frets will mean i need to make a carbon fibre neck)

I am also planning to use piezos for each string to generate the attack, sustain, and decay data...

I would love to hear your thoughts!
mvniemi (author)  Jmkoop2 years ago

Glad your here you're working on a similar setup! Will it be a fully custom built? Unfortunately my rig is in storage across the country so I haven't been able to work on it. I'd really like to switch it over to a resistor array though to see if that eliminates noise into the pickups and also would only require a few analog inputs. I'd also love to miniaturize it and set it up for bluetooth so it's all contained on the guitar. Piezos are definitely an approach a lot of people take. Of course if you just do signal processing on you end up with the commercial synth projects that are already out there (and good)...though I do think having the actual fret data can have novel uses.

How are you planning on doing the Midi messaging? I'm not particularly happy with the setup I'm using (a Midi-> serial bridge), and I recently discovered a language/framework called Max that's well suited to this sort of project.

In terms of polyphony, as far as I can tell there is no obvious solution. If you play around fingering chords, for example doing an "F" shape both forwards and backwards, you will find that they create identical electrical circuits. The pro model, the Solange, does indeed use segmented frets, and it should say something if their engineering team couldn't figure out a solution. Of course segmented frets require some serious precision in your build!

Capacitive sensing, where the sensors are on the actual fretboard themselves, are likely a viable option, and would enable polyphony. If you are doing a custom build, that could make in integrated. I did a google search and it looks like some research has been done : http://www.iiia.csic.es/guitarLab/research/sensors... and there is a patent out there. However there could be issues with it depending on the sensitivity of the sensors, will it be able to determine a finger being position closely (perhaps even resting on a string), from actually fretting?

That being said, I've been thinking about the polyphony a bit, and it might be theoretically be possible. I said earlier that different chord shapes will create the same electrical circuit, but in theory these circuits aren't exactly identically. The path from fret to string, conductiong through adjacent string and frets is not the same, and potentially introduces resistance, meaning that by measuring resistance between frets and the strings we could determine what the exact chord is. If frets/strings had resistance on 1k Ohm/cm, this would be easy, but they are much better. However, if we had very precise resistance measuring, perhaps it would be possible.

Jmkoop mvniemi2 years ago
Good to hear from you!

Yes, mine will be entirely built from the ground up specifically for the purpose of being a fully polyphonic midi bass, while at the same time being aesthetically pleasing, having great playability, and a killer tone.

I come at this from the wood angle, not the electronics side... i built my first instrument (a classical guitar) 20 years ago, and in addition to my hobby projects, i have spent around 8 years employed by a well known maker of electric basses and guitars... so.... ive got the mechanical side of things covered.

Building a carbon fibre neck will be a first for me, but i remain convinced it is the only way to go if i want to have nicely hidden wire-runs and not sacrifice neck stiffness.

I am currently mulling over a few different options for getting all the fret segments done, and done well...

The current "promising" idea involves soldering the hookup wires (5 per fret) to the bottom of the tang using a licator jig id make on my maketspace's cnc. The fret slots will be cut on the cnc as well, with thru-holes located appropriately. Then the fret board is fretted like normal. The final step: mount the fretboard back on the cnc, and with the smallest endmill that will do the job, slowly cut through the frets, one by one to electrically seperate them.

I have only scratched the surface of the whole arduino thing... just enough to know that it is possible and that there are options... an awful lot of learning syill to come.
Jmkoop2 years ago
Lol... i put up a reply, looked like it got deleted, so i rewrote it. Lol... they both say more or less the same thing. Id delete one of them if i could, but that doesnt seem to be an option. .
Jmkoop2 years ago
This is pretty awesome. I came across this because i am pursuing the same thing (arduino based 5 stting Midi-Bass).

Are you still making improvements to this project, or have you shelved it?

I am hoping to differ from yoyrs in a few ways...

1) i really really want it to be fully polyphonic... i'd love to find a way to solve it using standard frets, but i fear i may have to go with segmented frets, and a whole lot of wiring... (meaning it will have to be a carbon fibre neck if i have to run all those wires inside)

2) i plan to use the string/fret switches to determine note values, but not play the notes: i plan to incorpirate puezo transducers for each string to generate the volume, sustain and decay data.

Beyond that, who knows?!!! Id love to hear where you are at with yours, or even see some video!
avashi2 years ago

amazing work simple and easy to make but i am not able to connect arduino to DAW software how you did that any documentation link i have used hairless midi and loopMid software but i dont know why my DAW software is not playing anything even after configuring input output in MIDI setting of DAW , can you please help

mvniemi (author) made it! avashi2 years ago

Hi Avashi. I'm excited to hear you're working on this project! Sorry for the lack of clarity with the Arduino to DAW connection.

I would recommend checking the connection at each step. First verify Arduino<----->HairlessMidi, then HairlessMidi<---->LoopMidi, and finally LoopMidi<----->DAW. I've attached a screenshot of what HairlessMidi and LoopMidi should look like if Midi data is flowing from the Arduino.

HairlessMidi, after you select the correct serial port the Arduino is on, should show Midi packets being received (make sure to check "debug MIDI messages") when you trigger strings on your guitar. If you are not seeing anything here, the problem is with the Arduino sending packets, possibly a wiring or code issue. Here's a simple test sketch that will send Midi serial messages from your Arduino if this is the issue: https://github.com/mvniemi/midi_serial_test/blob/m...

If you are seeing packets in Hairless, open up LoopMidi. Make sure you create a virtual loopMidi port with the "+" button, and then make sure Hairless has LoopMidi selected for both the the input and output. If this is setup right, and packets are flowing into Hairless, you should see activity in the "throughput" and "total data" columns for the LoopMidi port (this is visible in the screenshot).

If all this is working, then the problem is between LoopMidi and your DAW. Personally I used Ableton, and just had to add a MIDI track connected to loopMIDI port. It helps if you have another working MIDI device so you can rule out issues with the DAW itself.

Hope this helps!

midi_demo.png
wegi12 years ago

Yay ! Guitorgan :)

Lots of love for this proto-board connection :]