The idea came to me while I was listening to a great Seattle fingerpicking guitarist, the late Klaus Lendzian, at a favorite local restaurant. I’d been hearing him play at various venues around town since the 1980s.
As I watched him play, I thought, “He’s really good. Lyrical, a great sense of timing. Wow, I wish I could play like that. What makes it all work is his right hand, his picking hand. It’s like a machine.”
A machine, I thought, at that moment. I can build a machine.
Above: the current version of the guitar robot, in action
Why Build a Guitar Picking Robot?
Here are a few of my reasons, in no particular order:
- I’ve been playing guitar, off and on, for over 40 years. At this point, I’m a semi-competent flatpicking guitarist. But I’ve always been interested in the sound of fingerpicking. I’m 65 years old. Do I have 40 more years to learn fingerpicking?
- I wanted to be able to play patterns on the guitar that would be difficult or impossible for me to play. Or for almost anyone to play. (John McLaughlin or Yvette Young notwithstanding.)
- I’m a writer and software developer. I type a lot, and my hands and wrists are getting worn out.
- My sense of rhythm is poor.
What does all of that mean? I need help playing guitar. So I’m building a prosthesis to help me do that, just as I wear glasses to improve my nearsightedness.
Why didn’t I simply switch to using MIDI instruments? There are perfectly good guitar simulations available, after all. That wasn’t what I wanted.
What I want is the sound of the guitar string, vibrating in air, under the influence of other vibrations, and my fingers, in a room, from an amplifier, through the body and neck of the guitar.
At the same time, I wanted something I could interact with, an extended instrument. Not just something that would play a given song at the press of a button. I think that would be boring. I think that interaction and improvisation are where music happens, and I’m not particularly interested in “songs.”
When my friend Jon Singer speaks of a current obsession of his (building organic dye lasers, or glow-in-the-dark ceramics, for example), he says, “It’s got me by the throat.” This project has had me “by the throat” for a long time.
I haven’t kept rigorous track of how many versions of the guitar robot I’ve built. At least 20, over 16 years.
Software and Circuit Design
Over the years, I’ve used Microchip PIC microcontrollers and various Arduino platform devices to control the robot, but I’ve recently switched to a Pimoroni Servo 2040 — this board combines a RP2040 microcontroller and servo controllers. I’m using CircuitPython to program the board.
The program is very simple — when a MIDI note comes in, pick the string. I’m using the range from E-1 (MIDI note 16) for the low E string to A-1 (21) for the high E string. The actual note that gets played depends on whatever fretting I do with one or more hands.
Mechanical Design
The software design is simple — it’s the hardware side (both design and fabrication) that’s taken up most of my time on this project.
The challenge, all along, has been to find actuators (solenoids, motors, or servomotors) that are:
• Small enough that six of them will fit on the guitar. The space between strings on a Telecaster bridge is around 11mm, so if the actuators are no wider than that, they can be positioned six-abreast behind the bridge of the guitar.
• Powerful enough: It takes a fair amount of force to push a pick past a guitar string. I’ve found that 3kg/cm of force is about the minimum for this design.
• Fast enough: I wanted, at a minimum, the ability to pick 32nd notes at 120 beats per minute (bpm). This means the time it takes the actuator to pick the string (swing the pick from one side of the string to the other) needs to be ~63 milliseconds (ms) or less (see the box below).
• Relatively inexpensive: My initial budget was $2.00 or less per actuator (keep in mind that I need to buy six for each design). I bought solenoids, stepper motors, and gearmotors from electronics surplus shops. This was an unrealistic requirement — I think “laughable” is the correct term. My current actuators cost around $20, and I’m now looking longingly at ~$70 servos.
History
The first few versions of the guitar robot used solenoids to strike the strings. This worked fairly well, but the resulting sound was similar to a piano. I want the sound of a plucked string, not a hammered string. I tried creating a picking mechanism that was driven by solenoids but I couldn’t find any that fit. They were either too big, or not powerful enough.
In addition, it’s hard to prevent the electromechanical noise from solenoids from getting into the guitar output, causing loud clicks and pops. I tried a variety of approaches to isolating and shielding the solenoids, but never found a method that satisfied me.
I tried using small electric gearmotors, controlling their direction and “on” duration using a microcontroller. The problem with this approach is that small motors with sufficient torque are too slow to be musically useful.
I settled on digital servos because they have higher torque than gearmotors or analog servos of the same size. Servo control is handled by the Servo 2040 board.
The linkage to the pick is a 3D printed shaft collar that fits the servo gear on one end and provides a hole for a Lego cross axle on the other. A 3D printed part holds the pick and has Lego axle adapters at either end. Each pick is held in place by a separate part.
When the servo turns, the pick moves in an arc, picking the string at the midpoint of the arc. The shape and angle of the pick reduce the effort required to pick the string.
An M2 screw passes through the pick-holding part, through a spring, and into the nut. This gives me a way to adjust the pick up and down, relative to the string. The vertical placement of the pick is critical — too high, and you miss the string; too low, and the servo can’t push the pick past the string.
The servos I’m using can turn 60 degrees in around 160ms, and we need ~24 degrees to pick the string, so we’re close to the ~63ms we need for our speed requirement. The actual distance in degrees is determined by the width and angle of the pick being used.
I use the Power HD 1801MG digital servo. This metal gear servo is 12mm wide, requiring an offset arrangement of the servos — but it has enough torque to do a good job of picking.
Servo Timing
The Power HD 1810MG servo can move 60 degrees in 0.16 seconds
. To pick the string, the servo needs to move 24 degrees in my current setup.
So:
60 degrees / 0.16 seconds = 0.002666667 seconds per degree
0.002666667 * 24 degrees = 0.064 seconds or 64 milliseconds
Note that this timing is based on the 1810MG’s performance at 4 volts.
We’re using a 5-volt source, so it should be slightly faster.
Power Considerations
Each servo has a current consumption of ~240 milliamperes (mA —“A” being short for amperes, or “amps”) when idle, and more than ~1400 mA when in a stalled state. Because the servos can get close to stalling when they pick the string, there’s a chance that the six servos on the guitar could be drawing more than 8 amps!
One more thing — the distance from the pick to the guitar string varies as the string vibrates and is fretted. Sometimes, this means that the servo can’t push the pick past the string. (Remember that we’re pretty close to the edge of what these small servos can manage.) When this happens, the servo reaches its stall point and continues drawing current from the power supply.
The result? Smoke. And a dead servo.
I learned this the hard way: Protect your servos with resettable fuses on the positive voltage line. Pick a fuse that has a trigger point just below the rated stall current for the servo. You won’t regret it.
As it turns out, the combination of the Servo 2400 (drawing up to 3A via its USB connection) and the addition of a polyfuse on each servo power line has made burned-up servos a thing of the past. Mostly.
Tools
To build the guitar robot, I use:
- Adobe InDesign and custom scripts I’ve written to do the mechanical drafting of the parts. Yes, it’s an odd choice for a CAD program, but it’s a product that I’ve worked with for more than 20 years.
- OpenSCAD to do the 3D part design (some of the custom InDesign scripts write OpenSCAD files).
- 3D printing to make the servo-to-axle shaft controller and the pick holder. I use a Prusa i3M2 to print draft/test parts, then use a Prusa SL1 to print the final parts. I use the i3M2 to print the base that attaches to the guitar.
- Laser cutting to cut the acrylic parts.
- Soldering iron and miscellaneous hand tools to put all the parts together.
The Guitar
The guitar is a Squier (Fender) Telecaster made in Indonesia. I’ve always loved Indonesian gamelan music, shadow puppetry, and costume, so I named the guitar “The Barong” for an Indonesian temple spirit. I tried to decorate the guitar accordingly.
The guitar uses a Cycfi hex pickup — that’s one pickup coil per string. This requires a 19-pin connector and cable, which leads to a Nexus GK interface box, also from Cycfi. This interface also provides Roland GK-compatible connector and individual outputs for each string.
Having one output per string means that I can process each string individually while I’m recording in Ableton Live. Having the GK output makes it possible to plug the guitar into a variety of guitar-related synth gear.
Cycfi also makes Ascend, a VST3 plug-in which can be used to process the output from the individual strings. Ascend provides models of various guitar pickups — Stratocaster, Les Paul, etc. — or the ability to “roll your own” tone profile.
Playing with the Guitar Robot
The guitar robot automates the right-hand part of playing the guitar. This means you can fret with both hands and find new chord possibilities — fingerings that would have been very difficult otherwise (“tapping” notwithstanding).
It also means the right hand can take on a more “directorial” function: changing patterns, adjusting effect parameters, picking strings in addition to what the robot is doing, and so on. Guitarists frequently use foot pedals/switches to change parameters, but a hand is more capable than a foot.
It’s hard to get used to fretting while the robot does the picking. Usually, your picking hand and fretting hand work in a symbiotic relationship — you know not to pick before the note is fretted. I’m getting better at moving my fretting hand in sync with the robot’s picking, but I still end up with notes that are fretted either too late or too early. Learning to play this way is an ongoing process.
Playing patterns with the guitar robot is especially fun with alternate tunings, such as DADGAD.
Soundcloud examples: Example 1 | Example 2
A Philosophical Note
There are plenty of people who view playing a musical instrument as something like Olympic figure skating: There are artistic elements, but the main thing is the athletic prowess on display. I’ll state right now: some human guitarists can play faster and better than my guitar robot.
But is technical virtuosity a requirement for making music? I can think of plenty of technical virtuosos whose music is, to say the least, not interesting to me. On the other hand, Brian Eno — no one’s definition of an instrumental or vocal virtuoso — has made music that’s remained interesting to me for decades.
When we focus on the technical and mechanical aspects of making music, we make it inaccessible to most people. If something like a home recording studio, or MIDI, or even a guitar picking robot can make it possible for more people to express themselves via music, then I think these developments are a good thing.
Taking It Further
Anything that can generate MIDI could be used as a source for the picking patterns. I usually use Ableton Live, but I’ve also used modules in VCV Rack (virtual Eurorack system) to control the robot. But we could also map brainwaves to MIDI via biofeedback sensors. Or stock market ticker information delivered via RSS feed. Or weather data. It’s all about the mapping.
I’ve thought about building guitar robots for guitarists who have lost a limb, or otherwise lost the use of their picking hand. We could attach sensors to their arm that could then generate signals which could be mapped to MIDI notes to send to the robot. The nervous system still knows how to play guitar.
There are also possibilities for playing remote instruments — the MIDI output from one guitar could drive the guitar robot on another guitar. (I’ve done that.) Or collaboration — two players with guitars equipped with MIDI output and guitar robots could “swap” picking patterns.
The guitar robot extends what a guitar can do, and extends what a human can do with a guitar. I’m looking forward to really learning how to play it, and how to compose for it.
Fixing the Weakest Link
A guitar robot update, July 2023:
To paraphrase Oscar Wilde, losing one Servo2040 board may be regarded as a misfortune; to lose two looks like carelessness. Losing three is abject stupidity.
The USB-C connector on the Servo2040 is attached to the board by solder pads only—there’s no mechanical connection whatever. To call this arrangement “flimsy” is to insult the strength of “flimsy.” You can practically break the connector off of the board by looking at it the wrong way. Of course, mine is mounted on the end of a guitar robot with no kind of stress relief.
Worse, when the connector pulls off of the board, it usually takes one or more solder pads with it, making board repair practically impossible.
At around $30, the Servo2040 boards are not expensive–but it adds up. And I hate throwing yet another board into my electronics recycling bin.
I decided to immobilize the USB-C connection coming into the Servo2040 board. I knew that I had a right-angle USB-C adapter, and I also had a USB-C panel socket.
I extended the guitar robot plaform to accommodate the added hardware. This is fine, for now— eventually, I want to make the robot much smaller.
The “turret” that I 3D printed completely immobilizes the USB-C connectoin at the board. After this, the only chance I’ll have to break the board is when I’m disassembling the robot.
I added a second hole in the end piece for an future extrernal power supply for the servos. Relying on power from the USB-C cable alone, I sometimes run into a lack of current when multiple servos are moving. This resets the Servo2040 in the middle of a picking pattern—not a good thing. This started happening when I switched to an M1 MacBook Pro from a Windows 10 desktop, so it’s possible that the Apple USB ports deliver less current.
ADVERTISEMENT