Difference between revisions of "HollyJ-250A"

From CCRMA Wiki
Jump to: navigation, search
(Images)
 
(33 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Music 250A Final Project: Vocal Effects Glove ==
+
== Music 250A Final Project: Flex Effects, a glove skeleton ==
  
 +
The Flex Effects glove skeleton, built out of elastic headbands and flex sensors, is designed to allow a singer to easily and immediately apply a few effects to their voice, when routed to a specific Max/MSP patch.
  
• Will be targeted toward a specific genre of music (right now, playing with the idea of island reggae/Hawaiian jams.
 
  
• Will try to focus on making one glove with good design and functionality, but may make a backup glove as well (not a right and a left, but two lefts).
+
The first working product was designed to fit over the back of the left hand (one band runs over the palm/knuckles, and the 4 finger bands run over the backs of your index to pinky fingers). Flex sensors are sewn into the four finger bands, leaving the thumb free to facilitate improved independent movement of all the fingers (i.e. holding down the pinky when wanting to only apply the ring finger's effect). The flex sensors are connected to long connectors which plug into an Arduino UNO, and data is then sent from the Arduino into the Max/MSP effects patch.  
  
  
== Sketches ==
+
With this combination of hardware and software, the flexing of each finger allows easy control of effects processing on vocal input: Index - reverb, middle - vocoder, ring - echo, pinky - pitch shifting. When fingers are curled close, minimal to no effect is applied, and when they are extended, more or different versions of the effect are applied. For example, the pinky flex data has three distinct ranges to control (1) no effect (2) pitch shift down and octave (3) pitch shift up an octave. On the other hand, reverb is always "on" because the index finger flex data, after scaled, directly controls the reverberation decay time in milliseconds.
[[File:gloveSketch1.png]]
+
  
 +
== Review/Comments/Notes ==
  
 +
The final product use and demonstration drew a few key things to my attention...
 +
 +
Firstly, the long sensors seemed to be more durable than the short flex sensor on the pinky finger (it broke close to its base early on in a 2-hour demonstration). However, perhaps this specific short sensor was just flimsy.
 +
 +
Secondly, a velcro closure over the flex sensors (or similar temporary closure) would have been much more ideal than sewing the elastic closed over the sensors. Although sewing the flex sensors really helped to keep them in place without too much sliding, it would likely be just as stable with velcro closure, and it would be much easier to replace and adjust broken sensors.
 +
 +
Third, the Max/MSP patch would really benefit from calibration of the sensor data in the Arduino or Max patch. The flex sensor ranges vary from use to use.
 +
 +
Fourth, I wonder if the finger caps are really necessary now? Although they helped to stabilize the end of the sensors - the bend readings were most affected by the bending of the knuckles, which is really already taken care of by the band which wraps around the finger (and not by the band that caps that ring). Removing the cap would make it easier for people with different sized hands to use this product.
 +
 +
Lastly for now, one of the tendencies of those testing this product, was to place the glove such that the bands ran along the UNDERside of the fingers. I wonder if this is more comfortable and natural for people? I tend to feel more comfort when the palm-side of the hand is mostly free of material. It would be easy to allow the user to choose either way of wearing the glove IF the sensors were more accessible. That way, one could reverse the direction the sensors are facing such that flex data stays in the generally same range, no matter the orientation of the skeleton on the hand.
 +
 +
== Images==
 +
 +
final setup of the glove:
 +
 +
[[File:finalSetup.png]]
 +
 +
showing off the final product:
 +
 +
[[File:finalClosed.png]]
 +
[[File:finalExtended.png]]
 +
 +
elastic w/ flex sensor, bent:
 +
 +
[[File:indexFlexTest.png]]
 +
[[File:tapedInSensor.png]]
 +
 +
elastic w/ flex sensor, straight:
 +
 +
[[File:indexFlexSensor.png]]
 +
 +
elastic setup testing round 1 - index finger:
 +
 +
[[File:elasticTest.png]]
 +
[[File:indexElasticTesting.png]]
 +
 +
soldered sensors w/ long connectors:
 +
 +
[[File:sensors-Connectors.png]]
 +
 +
new sketches:
 +
 +
[[File:skeletonSketches.png]]
 +
 +
two types of tubes, bend test:
 +
 +
[[File:tubeBendTest.png]]
 +
 +
felt tube - too bulky:
 +
 +
[[File:feltTube.png]]
 +
 +
knit glove tube w/ sensor:
 +
 +
[[File:tube1Sensor.png]]
 +
 +
flex connections diagram:
 +
 +
[[File:connectionsSetup.png]]
 +
 +
modified concept:
 +
 +
[[File:gloveSketch2.png]]
 +
 +
original:
 +
 +
[[File:gloveSketch1.png]]
  
== Examples - Gloves Projects ==
+
== Examples/Reference Points - Other Gloves Projects ==
  
 
1. The “DIY Arduino Data Gloves” – from How to Get What You Want http://www.kobakant.at/DIY/?p=4639
 
1. The “DIY Arduino Data Gloves” – from How to Get What You Want http://www.kobakant.at/DIY/?p=4639
Line 23: Line 91:
 
--d. TWO sensors can actually be used for each finger, to register each knuckle bending. I will probably just start with one for each finger and see how the results are.
 
--d. TWO sensors can actually be used for each finger, to register each knuckle bending. I will probably just start with one for each finger and see how the results are.
 
   
 
   
 +
  
 
2. The StretchSense stretch sensors can measure flexible body movement, such as that of the hand, and are equipped with wireless technology. www.stretchsense.com
 
2. The StretchSense stretch sensors can measure flexible body movement, such as that of the hand, and are equipped with wireless technology. www.stretchsense.com
Line 32: Line 101:
 
--c. The DESIGN, however, is more along the lines of the skeleton glove I thought about. End segments of each finger can be placed into holders, and glove can stretch over back of hand.
 
--c. The DESIGN, however, is more along the lines of the skeleton glove I thought about. End segments of each finger can be placed into holders, and glove can stretch over back of hand.
 
   
 
   
 +
  
 
3. Controlling a humanoid hand, which mimic a user’s hand movement in a glove (and which can grasp objects) http://www.contrib.andrew.cmu.edu/~msakmar/
 
3. Controlling a humanoid hand, which mimic a user’s hand movement in a glove (and which can grasp objects) http://www.contrib.andrew.cmu.edu/~msakmar/
Line 42: Line 112:
  
 
--d. Duct Tape doing good things: “Our fourth problem was attaching the flex sensors to the glove. We initially had a glove that allowed the flex sensors to move in between slits that we made in the glove. Our observation was that this resulted in readings that were too similar (the value range between straight and bent was too small). Thus, we went down the opposite path and fixed the flex sensors to all parts of the glove using duct tape. This made our glove more stiff, but resulted in better flex sensor readings”
 
--d. Duct Tape doing good things: “Our fourth problem was attaching the flex sensors to the glove. We initially had a glove that allowed the flex sensors to move in between slits that we made in the glove. Our observation was that this resulted in readings that were too similar (the value range between straight and bent was too small). Thus, we went down the opposite path and fixed the flex sensors to all parts of the glove using duct tape. This made our glove more stiff, but resulted in better flex sensor readings”
 +
 +
  
 
4. Piano gloves – Buttons on end of fingers, but can look to for other design possibilities. http://vimeo.com/7992026
 
4. Piano gloves – Buttons on end of fingers, but can look to for other design possibilities. http://vimeo.com/7992026
  
 +
--a. I really wanted to include these gloves because of the design of the gloves along the finger tips. It looks a little uncomfortable, to be honest, however…It is an interesting thought to provide not skeleton rings of a glove, but just a 'bed' for each finger to rest in, with a strap over it (or whole lower half of a glove with straps over each finger). Design would be a little tricker with this idea since it would put the all of the connections in the palm of the hand…But maybe this could wrap around to the wrist of the hand afterward.
  
5.
 
  
  
 +
5. Wireless Control of a Robotic Hand with a Glove (using the LilyPad) http://www.instructables.com/id/Wireless-Controlled-Robotic-Hand/step2/Making-the-glove/
 +
 +
--a. Nice instructable, noting good suggestions…fairly short (five pages: from materials and glove setup to programs setup)
 +
 +
--b. The use of a pre-existing glove and normal connectors rather than conductive thread actually looks pretty nice. I would still want to protect my connections more (i.e. cover the LilyPad connections with cloth maybe, and likewise for the flex sensor connections).
 +
 +
--c. Note that the flex sensors are held in place once at the top of the glove, and later by glue (I think - based on picture; it's not in the instructions). Might want to stabilize the flex sensor at least twice along the finger, because of the feedback given by the #3 listed project (which, by the way, may have drawn from this instruct able? Though the design turned out differently).
 +
 +
--d. See this project for notes on LilyPad use (and wireless help if wanted).
 +
 +
--e. There's also this one to see: http://www.instructables.com/id/Arduino-Wireless-Animatronic-Hand/)
  
 
==Minimal Viable Product - To Do List==
 
==Minimal Viable Product - To Do List==
  
 +
--Get one effect working seamlessly, attached to index finger.
 +
 +
1. Develop max patch for a reverb, echo, or pitch shift effect in real time (get max patch working well on laptop)
 +
 +
2. Route input from one flex sensor on the arduino board to the Max patch (like in lab)
 +
 +
3. Figure out how the values should map to the main effect parameter in the patch.
 +
 +
4. Extend flex sensor from arduino board using long connectors, and attach sensor to finger, such that hand can be moved more freely.
  
 
== Final Deadline - What-I-want-to-get-done List ==
 
== Final Deadline - What-I-want-to-get-done List ==
  
 +
--Get one functional glove working, with at least three effects (applied to real time mic input). (just expand from minimal viable product list)
 +
 +
--Top effects list at the moment: reverb, pitch shift (down), echoes.
 +
 +
--The glove's effects should lend themselves well to recreational solo singing and group jams.
 +
 +
--Would be fine having glove or glove skeleton structured with duct tape, since it can easily be changed. (I would prefer to have the functionality better than the design, rather than vice versa).
  
 
== What-Would-Be-Nice-to-Have List ==
 
== What-Would-Be-Nice-to-Have List ==
  
 +
--Four or Five well working effects (each corresponding to a different finger; may leave out thumb for comfort reasons).
 +
 +
--Comfortable design (for the user)
 +
 +
--Cool aesthetic look - sewn if possible, with only partial coverage (open palm). The following DIY gloves are the ones I most like the design of (still) http://www.kobakant.at/DIY/?p=4639
 +
 +
--Wireless functionality (although not totally desired).
  
 
== Materials Needed ==
 
== Materials Needed ==
  
 +
At a minimum:
 +
 +
--4 Flex sensors.
 +
 +
--4 resistors.
 +
 +
--Normal connectors (for arduino board prototyping).
 +
 +
--Long connectors for minimal viable product.
 +
 +
--Electrical tape.
 +
 +
--Solder.
 +
 +
--Duct tape.
 +
 +
--Glove(s).
 +
 +
 +
More:
 +
 +
--Arduino micro perhaps? Or Lilypad?
 +
 +
--extra fabric (pretty small amounts), thread, needle...//sewing machine at the PRL
 +
 +
--Wireless components: receiver, transmitter, shields? What is best--XBee, bluetooth…maybe the RF Link transmitters? It says they work for simple one way communication are are small.
  
 
== Steps to Achieve the Minimal Viable Product ==
 
== Steps to Achieve the Minimal Viable Product ==
  
 +
 +
Pretty much everything from my earlier list:
 +
 +
1. Develop max patch for a reverb, echo, or pitch shift effect in real time (get max patch working well on laptop)
 +
 +
2. Route input from one flex sensor on the arduino board to the Max patch (like in lab)
 +
 +
3. Figure out how the values should map to the main effect parameter in the patch.
 +
 +
4. Extend flex sensor from arduino board using long connectors, and attach sensor to finger, such that hand can be moved more freely.
 +
 +
--improve the design on 4 if I have extra time; that is, extra time I have if I finish one effect/finger correspondence and adding any other effects will be too long of a process.
  
 
== Comments ==
 
== Comments ==
-Target in on a genre that the effects would gel well with.
+
--Target in on a genre that the effects would gel well with.

Latest revision as of 14:39, 3 December 2014

Music 250A Final Project: Flex Effects, a glove skeleton

The Flex Effects glove skeleton, built out of elastic headbands and flex sensors, is designed to allow a singer to easily and immediately apply a few effects to their voice, when routed to a specific Max/MSP patch.


The first working product was designed to fit over the back of the left hand (one band runs over the palm/knuckles, and the 4 finger bands run over the backs of your index to pinky fingers). Flex sensors are sewn into the four finger bands, leaving the thumb free to facilitate improved independent movement of all the fingers (i.e. holding down the pinky when wanting to only apply the ring finger's effect). The flex sensors are connected to long connectors which plug into an Arduino UNO, and data is then sent from the Arduino into the Max/MSP effects patch.


With this combination of hardware and software, the flexing of each finger allows easy control of effects processing on vocal input: Index - reverb, middle - vocoder, ring - echo, pinky - pitch shifting. When fingers are curled close, minimal to no effect is applied, and when they are extended, more or different versions of the effect are applied. For example, the pinky flex data has three distinct ranges to control (1) no effect (2) pitch shift down and octave (3) pitch shift up an octave. On the other hand, reverb is always "on" because the index finger flex data, after scaled, directly controls the reverberation decay time in milliseconds.

Review/Comments/Notes

The final product use and demonstration drew a few key things to my attention...

Firstly, the long sensors seemed to be more durable than the short flex sensor on the pinky finger (it broke close to its base early on in a 2-hour demonstration). However, perhaps this specific short sensor was just flimsy.

Secondly, a velcro closure over the flex sensors (or similar temporary closure) would have been much more ideal than sewing the elastic closed over the sensors. Although sewing the flex sensors really helped to keep them in place without too much sliding, it would likely be just as stable with velcro closure, and it would be much easier to replace and adjust broken sensors.

Third, the Max/MSP patch would really benefit from calibration of the sensor data in the Arduino or Max patch. The flex sensor ranges vary from use to use.

Fourth, I wonder if the finger caps are really necessary now? Although they helped to stabilize the end of the sensors - the bend readings were most affected by the bending of the knuckles, which is really already taken care of by the band which wraps around the finger (and not by the band that caps that ring). Removing the cap would make it easier for people with different sized hands to use this product.

Lastly for now, one of the tendencies of those testing this product, was to place the glove such that the bands ran along the UNDERside of the fingers. I wonder if this is more comfortable and natural for people? I tend to feel more comfort when the palm-side of the hand is mostly free of material. It would be easy to allow the user to choose either way of wearing the glove IF the sensors were more accessible. That way, one could reverse the direction the sensors are facing such that flex data stays in the generally same range, no matter the orientation of the skeleton on the hand.

Images

final setup of the glove:

FinalSetup.png

showing off the final product:

FinalClosed.png FinalExtended.png

elastic w/ flex sensor, bent:

IndexFlexTest.png TapedInSensor.png

elastic w/ flex sensor, straight:

IndexFlexSensor.png

elastic setup testing round 1 - index finger:

ElasticTest.png IndexElasticTesting.png

soldered sensors w/ long connectors:

Sensors-Connectors.png

new sketches:

SkeletonSketches.png

two types of tubes, bend test:

TubeBendTest.png

felt tube - too bulky:

FeltTube.png

knit glove tube w/ sensor:

Tube1Sensor.png

flex connections diagram:

ConnectionsSetup.png

modified concept:

GloveSketch2.png

original:

GloveSketch1.png

Examples/Reference Points - Other Gloves Projects

1. The “DIY Arduino Data Gloves” – from How to Get What You Want http://www.kobakant.at/DIY/?p=4639

--a. Showcases a great design, and a video demonstrates nice functionality (data feedback of hand movement) to control a range of processes.

--b. The Gloves Project page (http://theglovesproject.com/category/diy/) has full the instructions on how this glove is made. Includes materials, tools, pattern, sewing instructions, soldering instructions, … , calibrating, programming, going wired or wireless, and integration with software.

--c. Love the look of these gloves. The bend sensor connection area looks well protected (ends are covered with neoprene squares). The palm is open (no material), so glove does not get hot, I presume. Good design element, since I was considering a skeleton of a glove for this reason. --d. TWO sensors can actually be used for each finger, to register each knuckle bending. I will probably just start with one for each finger and see how the results are.


2. The StretchSense stretch sensors can measure flexible body movement, such as that of the hand, and are equipped with wireless technology. www.stretchsense.com

--a. Demonstration of hand with visualization app at 2:20 in this video: http://youtu.be/7uh0UWPEur4

--b. While a great demonstration, very very expensive sensors for what I will be doing ($850 USD for a starter evaluation kit)

--c. The DESIGN, however, is more along the lines of the skeleton glove I thought about. End segments of each finger can be placed into holders, and glove can stretch over back of hand.


3. Controlling a humanoid hand, which mimic a user’s hand movement in a glove (and which can grasp objects) http://www.contrib.andrew.cmu.edu/~msakmar/

--a. One flex sensor attached to each finger, and one across the palm

--b. Interesting problem to be aware of: “readings from the flex sensors would change dramatically from each use.” Believed to be from…"heat built up during testing and from wearing the glove for extended periods of time…We worked around this problem by calibrating the flex sensors every time we restarted the arduino and robotic hand setup."

--c. "Our second problem, which is partially related to the first, was correctly mapping the analog readings from the flex sensors to the servos. The issue was that the range of the flex sensors was too small; the analog read-in of the arduino has 1024 degrees of resolution, but the flex sensors would only differ from 550 to 750. We accounted for this by using the map function in arduino and by calibrating repeatedly. Calibration consisted of wearing the glove and running the arduino with code that read in and printed out each flex sensor value. We recorded the minimums and maxes of each flex sensor and used those values as input for the map function."

--d. Duct Tape doing good things: “Our fourth problem was attaching the flex sensors to the glove. We initially had a glove that allowed the flex sensors to move in between slits that we made in the glove. Our observation was that this resulted in readings that were too similar (the value range between straight and bent was too small). Thus, we went down the opposite path and fixed the flex sensors to all parts of the glove using duct tape. This made our glove more stiff, but resulted in better flex sensor readings”


4. Piano gloves – Buttons on end of fingers, but can look to for other design possibilities. http://vimeo.com/7992026

--a. I really wanted to include these gloves because of the design of the gloves along the finger tips. It looks a little uncomfortable, to be honest, however…It is an interesting thought to provide not skeleton rings of a glove, but just a 'bed' for each finger to rest in, with a strap over it (or whole lower half of a glove with straps over each finger). Design would be a little tricker with this idea since it would put the all of the connections in the palm of the hand…But maybe this could wrap around to the wrist of the hand afterward.


5. Wireless Control of a Robotic Hand with a Glove (using the LilyPad) http://www.instructables.com/id/Wireless-Controlled-Robotic-Hand/step2/Making-the-glove/

--a. Nice instructable, noting good suggestions…fairly short (five pages: from materials and glove setup to programs setup)

--b. The use of a pre-existing glove and normal connectors rather than conductive thread actually looks pretty nice. I would still want to protect my connections more (i.e. cover the LilyPad connections with cloth maybe, and likewise for the flex sensor connections).

--c. Note that the flex sensors are held in place once at the top of the glove, and later by glue (I think - based on picture; it's not in the instructions). Might want to stabilize the flex sensor at least twice along the finger, because of the feedback given by the #3 listed project (which, by the way, may have drawn from this instruct able? Though the design turned out differently).

--d. See this project for notes on LilyPad use (and wireless help if wanted).

--e. There's also this one to see: http://www.instructables.com/id/Arduino-Wireless-Animatronic-Hand/)

Minimal Viable Product - To Do List

--Get one effect working seamlessly, attached to index finger.

1. Develop max patch for a reverb, echo, or pitch shift effect in real time (get max patch working well on laptop)

2. Route input from one flex sensor on the arduino board to the Max patch (like in lab)

3. Figure out how the values should map to the main effect parameter in the patch.

4. Extend flex sensor from arduino board using long connectors, and attach sensor to finger, such that hand can be moved more freely.

Final Deadline - What-I-want-to-get-done List

--Get one functional glove working, with at least three effects (applied to real time mic input). (just expand from minimal viable product list)

--Top effects list at the moment: reverb, pitch shift (down), echoes.

--The glove's effects should lend themselves well to recreational solo singing and group jams.

--Would be fine having glove or glove skeleton structured with duct tape, since it can easily be changed. (I would prefer to have the functionality better than the design, rather than vice versa).

What-Would-Be-Nice-to-Have List

--Four or Five well working effects (each corresponding to a different finger; may leave out thumb for comfort reasons).

--Comfortable design (for the user)

--Cool aesthetic look - sewn if possible, with only partial coverage (open palm). The following DIY gloves are the ones I most like the design of (still) http://www.kobakant.at/DIY/?p=4639

--Wireless functionality (although not totally desired).

Materials Needed

At a minimum:

--4 Flex sensors.

--4 resistors.

--Normal connectors (for arduino board prototyping).

--Long connectors for minimal viable product.

--Electrical tape.

--Solder.

--Duct tape.

--Glove(s).


More:

--Arduino micro perhaps? Or Lilypad?

--extra fabric (pretty small amounts), thread, needle...//sewing machine at the PRL

--Wireless components: receiver, transmitter, shields? What is best--XBee, bluetooth…maybe the RF Link transmitters? It says they work for simple one way communication are are small.

Steps to Achieve the Minimal Viable Product

Pretty much everything from my earlier list:

1. Develop max patch for a reverb, echo, or pitch shift effect in real time (get max patch working well on laptop)

2. Route input from one flex sensor on the arduino board to the Max patch (like in lab)

3. Figure out how the values should map to the main effect parameter in the patch.

4. Extend flex sensor from arduino board using long connectors, and attach sensor to finger, such that hand can be moved more freely.

--improve the design on 4 if I have extra time; that is, extra time I have if I finish one effect/finger correspondence and adding any other effects will be too long of a process.

Comments

--Target in on a genre that the effects would gel well with.