Introduction: Second Skin Synth
As a musician, sometimes you want to walk away from the computer and the use of buttons and knobs. Some dream of an instrument or interface that is more experimental and lively. There are many possibilities, the sky is the limit when it comes to designing gestural and alternative controllers. Gloves have become a popular option, and for good reason, they are expressive and the hand has many points of articulation. Plus, when you are really feeling a groove, it's hard not to move around, shimmy and shake. The body is very expressive and, using a microcontroller and some sensors, it can be turned into a musical instrument to learn and explore.
The challenges I presented myself was to not use flex sensors and to create pressure sensitive points on the back of the hand using resistive paint and conductive fabric. This lead to a knuckle mechanism designed by JON-A-TRON and Aleator777 using trimmer potentiometers, and a homemade sensor using polyurethane, Bare Conductive paint and conductive fabric. You can use flex sensors if you like (coupled with a voltage divider circuit), they both give out voltage resistance readings.
This wireless glove triggers and manipulates sound using the Intel Edison's WiFi capabilities and the JavaScript libraries, Cylon.js (for interfacing with hardware) and Timbre.js. (sound generation). I made mine out of leather, but this can be made out of other materials, such as neoprene or boiled wool. Choose something that can be cut, but doesn't fray. The Edison Arduino breakout board is used, which is large, but has ADC, which is needed for analog sensor input. Until Intel comes out with something smaller, you may want to try Sparkfun's breakouts or another microcontroller that is smaller and can support WiFi.
It would be remiss of me not to mention at least a few great glove controllers and wearable instruments:
mi.mu glove (will be open source!)
Onyx Ashanti (check out his website for more wearable experiments!)
Step 1: Materials
Materials
[1] Small hide of 3 ounce leather
- glove leather and hide from the neck of a cow are both suitable.
- if you to use 1 color, this will cover you. Get 2 small hides if you would like a contrast color.
[3] 9" x 12" sheets of felt or 1/4" of felt
Matching thread
Small piece of tulle
Seam ripper
[1] foot of ShieldIt Super
[1] Bare Conductive pen or pot of conductive paint
[1] 3 lb (trial unit) Clear Flex, water clear urethane rubber, shore 50A (optional)
- I used it because I wanted the sensor parts to show, leather can be used instead.
[1] Clean-up rag
[1] Pair of glove to protect hands while using polyurethan
[2] Paper cups and wooden mixers
Mold release
[10] Small 1/4" post rivets
[2] 10 K trimmer potentiometers
[1] Intel Edison or other WiFi enabled microcontroller
[2] Micro usb cords
[15] pairs of female and male headers
[1] plastic ziplock bag
Ribbon cable
Heat shrink tubing
Ball-point pen
5-Minute Epoxy
Artist or masking tape
Tools
Rotary blade
Cutting mat
X-acto cutter
Silhouette CNC cutter (or patience with the X-acto)
3D printer
- to print molds for polyurethane and knuckle actuators (for the knuckles you want the highest resolution printer you can find)
Laser cutter
- for knuckle actuators
Wooden mallet
Soldering iron
Step 2: Cut and Sew Mockup
Print the attached pattern. JPEGs for printing and cutting, Illustrator files for changing sizing or shapes.
- Place the glove pattern pieces face down on felt and cut out all pieces as marked.
- Sew each pair of finger cuts together with 1/8" seam allowance.
- Sew together the palmar and dorsal pattern pieces of the hand and thumb with 1/8" seam allowance.
- Turn right side out and try on the hand and each finger to see how each fit. The fingers will be long and need to be shaped and cut depending on your measurements.
- Make marks with felt tip pen, mark where the triggers will be on the finger tips and where you want the sensor strips on the back of the hand.
- Mark any alterations needed on the felt. The gloves want to be fitted, but not too tight. My glove ended up being a little tight in the end width-wise. I added 1/8" width wise to the final pattern because of this. The glove that is pictured uses the old pattern.
- Turn inside out to get to the seams. Seam rip and iron out flat on low heat, if it's too hot, it will melt the felt.
- Compare the marks on the felt with the paper patterns and alter the paper patterns accordingly.
Attachments
Step 3: Cut Final Pattern
- Take note of any flaws on the hide, then unfurl the leather face down onto a cutting mat.
- Place the pattern face down and trace around the outside edge with a ball-point pen.
- Take the rotary cutter and cut out all pieces. Everything is cut 1, except for the finger gusset and the finger tip cover.
Step 4: Cut Conductive Fabric
Download the attached patterns. Print them out and use an X-acto knife to make the cuts or use a CNC cutter, like a Silhouette.
Use these settings for the Silhouette on Super Shieldit iron-on conductive fabric.
Blade : 2
Speed : 8
Thickness : 14
Attachments
Step 5: Print and Construct Knuckle Actuators
3D print the attached STL files on high resolution.
3 x medial
2 x proximal
2 x potPin
2 x potCap
2 x medPin
- Grab the proximal piece and fit a trimmer pot by pushing the legs through the 3 slots provided.
- Mix a little epoxy up and put a dab on top of the trimmer pot.
- Fit the pot cap over the top, matching up the notch with the cut in the cap.
- Laser cut the lever and press fit onto the pot cap, it's helpful to use a little epoxy here to make sure it stays in place.
- Glue and press fit the pot pin over the pot cap. I left mine off because I enjoyed the look of the hexagon. :)
- Lastly, put the proximal pieces on and rotate the pot until the lever is angled towards the finger tip. Fit the medial on and put the medPin's post through the slot and glue and press fit. When the finger is bent the pin post will slide up and down in the slot of the lever.
If the medial piece is too large it can be heated up using a heat gun and formed. Do this very carefully, it does break at times and will scorch if held over the heat too long. Use the extra to test, it took me scorching and breaking one to get the rest right. I also ended up clipping the bottom off, this can be done easily with angled cutters.
Step 6: Print Sensor Molds + Pour Polyurethane (optional)
If you purchased polyurethane rubber and would like to try it out, print out the attached file for the sensor molds. Alternatively, this step can be skipped. Instead of placing the conductive fabric in the polyurethane, it can be ironed onto leather pieces.
- Print 2 at high resolution and sand off any burrs that are created by the filament.
Pour Polyurethane in Molds
- Mix about 21 grams of polyurethane per instructions, it will be a 2 : 1 ratio.
- Spray the mold release into the molds, use a few even passes as instructed on the can.
- Pour the mixture into the two molds and leave for 1 hour.
Pour Fingertip Triggers
Polyurethane does not stick to plastic bags once dry, so it acts as a convenient resist.
- Drop some polyurethane onto the plastic bag, creating quarter size puddles and leave for 1 hour.
Attachments
Step 7: Place Conductive Fabric
After 1 hour has passed the polyurethane will be gelled, yet a little sticky on top.
- Place the cut conductive fabric ladders on top of the polyurethane in the middle of the sensor molds.
- Place the oval finger tips in the middle of the polyurethane on the plastic bag.
- Allow to dry over night for 24 hours.
Or, iron conductive fabric onto pieces of leather.
Step 8: Iron on Fingertip Buttons
- Iron the conductive fabric on to the finger tips of all the dorsal finger pieces. Make sure that the two pieces do not touch, one will be hooked up to ground, the other to power, if they touch it will create a short circuit.
- Select the smallest hole on the rotary hole punch and make a hole in each circular pad coming from the inner and outer designs.
- Cut another piece of leather to put behind the fingertip so the rivet fits snugly when hammered. Push the post through each hole.
- Cut a 12" length of ribbon cable with 2 conductors and strip each end. Wrap the wire around the each post and put the rivet cap on top.
- Use the wooden mallet to hammer the rivets from the back. Hammer on a very hard and flat surface until they fit snugly.
Step 9: Construct Fingertip Triggers
- Peel the cured rubber off the plastic bag and cut out the fabric ovals leaving 1/16" - 1/8" around the edge.
- Cut a piece of tulle the same size as this new, larger oval. The goal is to make sure the tulle covers the whole conductive fabric contact.
- Place the tulle down on top of the leather.
- Mix a small piece of epoxy and coat the edge of of the polyurethane and around the contacts on the leather finger tip. Wait about a minute for the epoxy to become a little tacky and press on. Do not use too much, or the epoxy might spread and cover the conductive fabric stopping them from making contact.
If you don't want to use polyurethane, you can iron the oval contact on a piece of leather and attach it to the finger tip using leather glue or thread.
- If using polyurethane, take the 4 rings cut from leather and glue those on to the tip, covering the edge of the polyurethane material.
- Allow to dry completely. Once dry, use your multimeter to test the switches.
Step 10: Glue Finger Seams
- At the seams, the dorsal finger patterns get glued over the palmar. Place the palmar pieces right side up and dorsal right side down. Use artists or masking tape to mask off 1/8" strip along the edge.
- Apply leather glue to both sides and allow it to become tacky after about 10 minutes.
- Press the fingers together going from the opening towards the tip on each side.
- For the tip, fold the bottom edge in evenly around the curve and press the top edge down.
Step 11: Start Constructing Hand
- Mask off 1/8" seam allowance, brush on glue, and press the palmar thumb on to the hand piece, overlapping the hand over the thumb.
- Do the same with the dorsal pieces.
- Take a sharp needle in medium thickness and double up some thread, knot at end.
- Place the hand pieces right sides together and start stitching the corner that goes in the crook of your pointer finger and thumb. Tie off.
- Clip into the V of the corner very carefully to free up the material and turn right side out.
Step 12: Finish Constructing Hand
- The gussets that go in between the fingers need to be sewn since there is a bit of pressure and force being put on those points.
- Grab the needle and thread again, with doubled up thread, and start sewing one gusset on the dorsal side.
- Sew down, under the end of the cut and up again. Begin and end 1/16" from end of leather doing a double stitch. This way, if you need to snip to even out the top edges, you won't cut the thread too.
- Clip in the bend very carefully and move on to the next.
- There is one gusset that has a side labeled pinky, put this towards the pinky finger, it's smaller since the pinky is significantly thinner than the rest of the fingers.
- Once done with the dorsal side, sew the gussets to the palmar side. Turn and try on.
Step 13: Sew the Glove and Fingers
Sewing the seams after gluing will ensure that the glove will hold up and it makes for a nice finish. Use a whip stitch.
Before the sewing starts, one more part needs to be added, the channel that all the wires will go through. Use glue to attach it to the pinky side of the dorsal hand, giving it enough space for the cables to go through. Now you are ready to sew!
- Double up thread, matching the top leather color, and thread a sharp needle.
- Sew all fingers and hand seams.
- Sew the pinky side seam of the hand from top to about half way down. Leave the wrist opening large enough for the widest part of the hand to pass through.
- Don't forget to sew the other side of the cable channel down, other two seams of the glove and the finger seams.
At this point the fingers are disconnected from the glove still, but the fingers will probably be too long. Put the glove and fingers on for one last fit. Cut and bottoms of the fingers so the bottoms overlap 1/8” on the palm side and sculpt the top into a curve that looks good to you. The fingers should overlap 1/8" on the palm side the top curved part can be sculpted any way you like, as long at it overlaps.
- Mark where the fingers overlap with a pencil. Keep the line just inside the overlapping edge, so when it's stitched on, the mark will be covered.
- Take off the fingers and the glove and stitch the fingers on.
Step 14: Attach Wrist Strap
If you have access to a walking-foot sewing machine, you are in luck! This means you can sew the wrist strap on in 30 seconds. If, like most people, you do not, this will be the last thing you sew. Glue it on, so it stays in place as you work and grab the needle for one last time.
Add two snaps as fasteners and you are done!
Step 15: Cable and Wires
- Cut two lengths of ribbon wire long enough to go from the glove to the microcontroller, one with 7 conductors, one with 8.
- Solder female headers to one end and male headers to the other end.
- There are two wires coming from each finger tip, this number can be reduced by making a common ground. Cut and solder together four wires, each from the four finger tips, adding a fifth to extend down to the wrist. Make this connection in a place that will be hidden once the wires are through the channel.
- Feed all the wires through the cable channel before soldering any headers on.
- Cut 2 segments of male headers, one with 8 and one with 7. Group the 5 wires (one common ground and 4 to digital pins) from the buttons with 2 from one of the handmade sensors and solder them to the headers. Use heat shrink tubing to cover up soldering points. The wires left will be 6 from the two pots and 2 from the remaining sensor. Solder these to the remaining block of 8 headers.
Step 16: Build Circuit
The cables coming from the glove are now ready to be plugged in and connected to the main circuit.
This circuit was breadboarded for me, but should be soldered to a perforated board if you want it to be mobile and put on the body, along with the microcontroller.
The two sensors get two voltage dividing resistors. Choose resistors that match the highest resistant value your sensors go to. My sensors topped out at 5K, so I use 5.1K resistors.
Four 10K resistors are used as pull down resistors for each fingertip switch.
Make these connections on the Arduino breakout board:
4 Fingertip switches to digital pin 2 - 5 - your choice
2 Knuckle actuator to A0 and A1 - your choice
2 handmade sensors to A2 and A3 - your choice
Step 17: Install Packages
If you are working with an Edison and have not set up it up yet. Go through the Getting Started page that Intel provides. You can use Intel's XDK IoT Edition IDE to upload the node.js scripts to the Edison or you can use file transferring software, such as Filezilla for mac, or WinSCP for windows (what I use). It's very easy to transfer the files yourself, I prefer this method. Intel's XDK is just another thing to worry about and troubleshoot for relatively simple setups, such as this one.
After you learn how to connect to your board through serial and how to get it on WiFi, take note of the IP address.
Use the board's IP address to SSH in from terminal and with you FTP software. You can go wireless once you do this! When you do, you just need to supply your board with power, a wall adapter is the best and more reliable way, while developing.
At this point you should be connected to the Edison through either serial or SSHing and have a terminal window open and logged in to the board.
You should also be sshed in through file transfer software, so you can see what is in your home/root/ directory.
For the final script to work, four items need to be installed.
- Cylon.js for communicating to hardware
- Timbre.js for sound synthesis
- Socket.io so hardware can communicate to browser for sound synthesis
- Express framework works hand in hand with socket.io
npm install timbre socket.io cylon express
npm install cylon-intel-iot
Step 18: Upload and Run App
Download and unzip attached files.
There are three main files to the Second Synth program.
- app.js - main app file that is run from root
- playsounds.js - file where sound files are loaded and handled
- index.html - where the information gets passed to in the browser
In all three files, look for where to put your boards IP address and fill it in. After you run the code, open up the javascript console in your browser. In Chrome, this is in the upper right corner, under More tools. This is where you will see the analog sensor values print out. You will need to calibrate the code in playsounds.js so it matches your range of sensor values.
FTP clients are really useful. You can create and move files from command line, which is great, but if you aren't familiar with the commands, there's an easy way. Files can be created and moved from computer to Edison and within Edison's directory using an FTP client, like WinSCP and Filezilla.
Either using command line or a FTP client, move all the files and folders from the SecondSkinSynthCode folder and put them in your root directory.
You should now have the app.js and a folder called public in your root.
To run app.js from root, log in to Edison through a terminal window:
node app.js
One knuckle will step through frequencies of a triangle wave, the other will change the timing of the delay effect.
Three finger tips will be trigger a sample each and one will kill all sound.
One of the handmade sensors will change the size of the room of the reverb effect and one will play and sine wave that you can change the frequency of by sliding your finger up and down.