Greg’s Harp is a new string robot I made for my friend Gregor. After the Pythagotron which is a single stringed bass roboter, this is my first attempt to combine three string units to make a polyphonic instrument.
While the Pythagotron features a motor driven carriage which shortens the string to the desired pitch by sliding up and down, for Greg’s Harp I came up with the concept of motorized frets. They make quick changes between chords possible.
Since every moFret needs a dedicated servo and driver, we tried to keep the number of needed moFrets low but still enough to allow for playing every possible triad (e.g. c-minor in at least one inversion). We came up with four moFrets (equals five semitones) per string. The strings are tuned in major thirds, making them overlap one tone (so that string 1&2 and string 2&3 have one tone in common). A software algorithm takes incoming notes, analyses them and sends a playable inversion to the moFret controller.
Greg’s Harp features three different actuators to excite the strings.
- The good old KickUp – my first self built string exciter. But this is a redesign which works a little bit different (see pictures).
- An ebow-like actuator for infinite sustain.
- A new addition to my string excitement arsenal: small motors with little tape-propellers.
Pickup and Preamp
The strings are picked up by commonly available piezo elements connected to a little preamp circuit, both embedded in the bridge. When dealing with devices like motors and coils, piezos have the advantage of not picking up the electromagnetic noise.
I love Arduino Nanos for their simplicity and low price (about 3€ on eBay). So instead of looking for a bigger microcontroller-board to drive 12 servos, the kickups and the motors, I just used two nanos. The barrel connector on the right takes 20V from a small notebook supply. There are two buck converters to generate 5V for the Arduinos and the servos and one with a lower voltage adjusted to the motors. The kickups get the full voltage (just for a few milliseconds each time they “kick”). Besides six mosfets for the motors and the kickups, there’s also one mosfet to switch the power for all servos on and off. The moFrets get power only when they move to avoid nasty mechanical motor noise.
For more demanding tasks like audio processing, I use Teensy boards. They are quite powerful and you can use the Arduino IDE to program them (with a teensy add-on). They have many usb modes allowing them to act as midi, audio, hid and many other devices. This makes them ideal for making electronic instruments. Here I used a teensy3.2 with two stacked audio-shields giving me 4 in and out channels. Three input channels are connected to the piezo preamps and three output channels are routed to class-d amps driving the coils for the eBow-effect. The last output is the main output.
The teensy acts as the main brain, midi interface and dsp unit, while the Nanos just take serial commands to drive the actuators accordingly. For the Teensy: The brain part involves the interpretation of the incoming midi data and sending control signals via serial connection to the arduino nanos. It also has an algorithm to map any three incoming notes to the correct strings, trying to find an inversion which fits the string configuration. The midi implementation features the following commands:
- Midi note input that takes any three notes and maps them to the correct strings
- Midi note triggered Kickups and Volume envelopes (per string)
- Midi CCs input for
- Gain per string
- Vca bias (to mix between enveloped and open string sound)
- Attack and release (envelopes)
- Amount of eBow-power
- Amount of motor power (one CC as master and three CCs for each motor)
You can find the design files on my github
Do you have feedback or questions on this one? Then please write a comment!