The Full Metal Synth
In 2015 I took a course in public art and developed a conceptual synth called Farstasynten. Farstasynten is an instrument for the public space made in bronze, steel and plastic. Making it would cost me way to much so i decided to build a smaller one just to try it. The result of that is the full metal synth.
This instructable was made after I finished the synth so I'll try to get as many pictures I can. Some steps I can't show in picture since the parts are sealed tight.
The Things You Need/The Things I Used
A diecast Aluminium enclosure: I use one from Hammond Mfg http://www.hammondmfg.com/dwgz.htm
Plastic sheet: Here I went for plexiglas.
Metal plates:This is the keypads. I'm using those things you have when you want to put two things of wood together. They're quite common.
Arduino Uno
Raspberry Pi: I went for the old model B for two reasons. It was of no use on my desktop and I can power it with only 1 amp.
SD card: For the pi! ~4GB is all we need.
USB cables: One to power the Pi and one to connect the Arduino to the pi.
Surface transducer: Vibrational speaker. https://www.sparkfun.com/products/10975
Amplifier: You could build your own, buy a finished one or get a diy kit. I did neither. Instead I went to the local "cheap electronics store" and bought a small laptop speaker. Bent it open and got the amp.
5 1mΩ Resistors: For the capacitive sensing.
Tiny breadboard.: Just to solder the Resistors to something.
Cables ofc
Metal drill: The drill needs to be at least two times as large as the screws.
Cable gland
Glue Sealer
Screw
Wood
Drilling and Sawing
The first thing you should do is drill. First you take the plastic and drill holes the same size as your screws. Make sure your plates don't touch each other.
Now drill holes in the metal box that are about 4 times as large as the screws. When the screws go through the metal box they can't touch it! Thats why we need larger holes.
Put the screws through the plastic and the metal. Turn it around so you have the metal on top and position it so that you can see that the screws don't touch the corners of the metal box holes. When you're pleased with the positioning you put Glue Seal in the holes. Be generous.
Cut out small pieces of wood and drill holes that are the same size as the screws. Put them on and press them down against the hole. Fasten a nut and seal it tight.
The wood will seal the screw and nut from the case pressure the sealant into the hole and fix the screw. Congratulations! Everything is perfectly sealed!
Water Needs to Go Somewhere!
After my first test I did notice that it was very hard to get rid of the water between the metal plates. The solution was to use a saw and make a small "trail"(?) between each metal plate. That way the water would not stick between the plates.
Fasten the Wires
We use the Nuts to fasten our wires to the metal plates. Strip the cables, twist them around the screws and fasten the nut as hard as you can.
Solder the Resistors
Just solder the resistors in place. Then we solder one cable to one side of the resistor and two to the other side of the resistor. Se my beautiful picture.
Green wire is to solo side and goes to the send pin on the arduino(we will ge to that). Red or yellow goes to the receive pin on the arduino. The other one is the one that's screwed to the screw with the nut.
Fix the Wires That Goes Into the Arduino
Fix them so they'll stick.
Fix Your Amp
As I said my amp comes from an old pair of laptop speakers. They got power from a usb cable. I stripped it and connected it to the 5v out on the Arduino.
Put Everything in the Box
The arduino sits on a mountain of glue sealant, the speaker is screwed to the bottom and the pi sits in a case that's glued to the bottom. Right under the speaker you can see the amp. Its glued to the bottom.
The speaker is tricky tho. You need to isolate the screws from the box, just as you isolated the screws from the metal plates. Here I found another solution. Instad of sealant I used heat-shrink tubes around the screws. Worked like a charm!
Drill a Big Hole
You need connections and this Cable gland is your way in. Depending on your size you might have to get one of them christmas tree drills. Mine was M20 and a bit too big so M10 might be better for you. Experiment here. Find what you need!
Sensing!
I use the capacitive sensor library http://playground.arduino.cc/Main/CapacitiveSenso...
Install it and modify the sample code. Or just use mine.
Remember the send and receive pins? Now we use them. Send pins are 2,4,6,8,10 and receive pins are 3,5,7,9,11. So plate one is connected to send 2 and receive 3..
You can use one send pin for all plates but I did notice that it worked better with the Pi if I used one for each.
To get the latency as low as possible I've changed the timeout to 5ms instead of the default of 2000ms.
The sketch converts the key presses into it's binary number(i think its called that). We have 5 plates and therefore 5 digits and 32 combinations. 00001 = 1, 00010 = 2, 00011 = 3, and so on. The number is sent out the serial port and is the thing se have fun with on the pi.
Downloads
Receive on the Pi Side
We use Python to receive the data from our Arduino and send it to PD.
import serial
import os
ser = serial.Serial('/dev/cu.usbmodem1421', 9600, timeout=.1)
def send2Pd(message=''):
os.system("echo '" + message + "' | pdsend 3000 ")
while True:
data = ser.readline()
send2Pd(data)
Thats our lame code. Its so easy I can bet that I got it wrong.
Build a Patch
install pd by running: "sudo apt-get install puredata" in your terminal.
Copy the patch here and build your own stuff around it. The [netreceive] object will receive the number that was calculated from the sketch. That is 0-31.
To read up on PD and all the great things you can do visit:
https://en.flossmanuals.net/pure-data/
And example patches:
http://patchstorage.com
Downloads
Done
Im not gonna teach you how to use PD and install the pi so we're pretty much done here I think.
Hope you learned something!
Things to read up on:
Good guide to create a startup script and get rid of annoying login stuff.
http://www.opentechguides.com/how-to/article/raspb...
You might need to fiddle with alsamixer.