Thursday, March 20, 2014

PicoBoard Scratch Violin

Recently I facilitated a MaKey MaKey workshop at the Westport Library Maker Space. The middle school age participants built game controllers, pianos, and other devices to interact with Scratch and web-based games they enjoyed. Two middle schoolers with no previous experience with the MaKey MaKey decided they wanted to build a violin. I helped them make this dream a reality!

While they drew the body for the violin on cardboard I stripped the insulation from some telephone wire for the violin's strings. The students also cut out a neck for the violin and we hot glued the parts together. I was not sure how well a bridge would hold up so we skipped building that part of the violin. We did build up some cardboard for the wires so they formed an arc that the bow could touch.

The students both play violin so they were able to tune each string in Scratch. The bow is connected to Earth on the MaKey MaKey, while each string is clipped to one of the four arrow keys.


The build turned out great and it was amazing to see the violin come to life and be able to play notes.

I was not content to rest, however. What if the violin could be made to play different notes depending upon where the player's finger was on the fingerboard? 

I knew that the MaKey MaKey probably was not the tool to use in this case. Instead, my attention turned to the PicoBoard.

The PicoBoard is capable of reading resistance values through ports A-D, shown above. Scratch can read the resistance values as well. I was headed in a good direction. 

However, when I hooked up a section of wire and touched it with the bow, I only got readings of 0 or 100. I needed some help. First I talked to one of the school custodians, Farid. He explained that I probably needed resistors because the changes in resistance might be too subtle for Scratch or the PicoBoard to detect. Then I took to Twitter to ask help from my friend Andrew.

By the end of the day Andrew had put together this prototype. 

Andrew wrote a wonderful blog post about the project and his findings.

Convinced we had a working design, I built a quick prototype to figure out what kind of resistor to use. I ended up using a 2.2K Ohm resistor in my build because it gave me distinct enough readings in Scratch to be able to have the software play three different octaves of the same note on each string. The prototype also allowed me to make some design changes, like moving the resistors to the underside of the finger board and recessing them in narrow grooves I cut with a Dremel. I 3D printed a couple of small rectangles, 5mm tall by 5mm deep and as wide as the fingerboard to support the copper wire above the copper tape and resistors. 

I found the Emergency Violin Bridge on Thingiverse, imported it into Tinkercad and modified it slightly, then 3D printed it, too.

I used the awesome WindFire Designs Circle Tool to draw the body of the violin.

I used the rest of the trim from the prototype as the fingerboard for the violin. I cut the violin's body from 3/8" plywood. I also cut a small piece of plywood and glued it to the bottom of the violin body to give the violin a little thickness.

I used a wood shim to tilt the fingerboard slightly, like on a real violin, then glued the fingerboard and shim to the violin's body.

I re-printed the bridge in black ABS and used a drill and a Dremel to carve out the spot to insert the bridge.

After marking up the fingerboard with measurements for the wire, resistors, and copper tape, I drilled holes for the wire and tape and used the Dremel to route slots for the resistors.

To prepare the fingerboard electronics, strips of copper tape about 5mm wide and 6 centimeters long were cut and affixed to the fingerboard.

The resistors were installed on the underside of the fingerboard.

The resistors and four short pieces of wire, to clip the PicoBoard into the copper tape runs, were soldered to the copper tape.

The solder and copper tape were covered with another layer of copper tape.

I stripped the insulation from four strands of solid, 22 gauge wire to use as strings. 

With the PicoBoard clipped to the wires at the top of the copper tape runs as well as to the wire "strings," Scratch makes a sound when the wire is pressed to the fingerboard.

The Scratch blocks for this project read the resistance values that each copper tape strip reports through the PicoBoard when the player touches the violin string to a copper pad. Depending on what resistor you use, your values will be different.

I particularly enjoyed this project because it combined woodworking, electronics, programming and 3D design and printing. I could not have completed this project without the assistance of Farid and Andrew. Again, Andrew wrote a really excellent blog post about learning cycles that I urge you to read because he captures the community of help that educators interested in the maker movement need to draw on to strengthen and build the community and better educate their students about how to learn a new skill in the twenty first century.

No comments: