MIDI Drum Glove

Play your favorite synths by finger drumming! Stitch up four piezos into a glove and use FLORA to transmit signals to your favorite music-making software. Continue reading for the complete tutorial.

Prerequisite guides:

Supplies and tools:

Sew Piezos

Start by ironing out some fabric to match your glove. Cut four small pieces slightly larger than your fingertips, and iron a small hem on one side.

Put your glove on and establish what spots make contact with the table, then mark those spots with a pencil.

Thread your needle and double the thread over, then tie a knot at the end of the tails. Stitch through one of your pieces of fabric and affix it to the glove fingertip over the pencil mark with a whip stitch.

Be careful not to stitch the glove finger closed! Check periodically to be sure your stitches only pierce the intended layer.

Stitch halfway around the pocket, tucking the seam allowance in a you go.

Stick the piezo in the pocket, then finish stitching it shut, leaving the wire sticking out towards the back of the hand. Tie off and cut your thread.

Repeat for the other three piezo pockets, and put your glove on to double check they are tapped when you finger drum. We found the best placement was not necessarily on the pad of the finger, for instance the thumb is around to the side and the pinky is across the first knuckle.

Circuit Diagram

Four piezos each have a 1M ohm resistor across them, with the red wires each going to a different analog input (labeled D6, D9, D10, and D12).

Solder Circuit

We’re going to extend the piezo wires and also attach a pull-down resistor.

Start with one piezo and trim the black wire a little shorter than the red wire. Slide on a piece of heat shrink tubing and strip the end of the wire.

Wrap the wire end around one of the resistor’s leads (doesn’t matter which one), and situate the two in the grasp of your third hand tool.

Strip one end on a piece of wire, and wrap this end around the same resistor lead.

Solder the two wires to the resistor lead.

Once soldered, clip the resistor lead short and shield the junction with the heat shrink tubing you added earlier.

Now it’s time for the other wire– wrap the piezo’s red wire and the other wire around the other side of the resistor, remembering to add a piece of heat shrink tubing before soldering.

Use a heat gun to shrink both pieces of heat shrink and repeat this process for the three other piezos.

Put the glove on and finesse the wires into a position that reduces strain and lets your hand move.

Use painter’s tape or masking tape to hold the wires in place as you route the ends towards the analog inputs on FLORA.

Solder each piezo’s red wire (or whatever color your red wire became when you extended it) to a different analog input according to the circuit diagram.

Solder all the piezo’s black wires to ground.

Before sewing FLORA to the glove, plug in via USB and test your rig using the code on the next page. You’d hate to have to unstitch anything if anything needs re-soldering!

Code

There are many ways to trigger events on your computer with FLORA. The following simple sketch generates configurable keyboard presses suitable for use with things like NanoStudio or Garage Band:

/*
  Piezo Keyboard glove
  
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried & Becky Stern for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
  
*/
const int indexFinger = A9; // the piezo is connected to analog pin 9 (aka D9)
const int middleFinger = A7; // the piezo is connected to analog pin 7 (aka D6)
const int thumb = A10; // the piezo is connected to analog pin 10 (aka D10)
const int pinkyFinger = A11; // the piezo is connected to analog pin 11 (aka D12)

const int pins[] = {thumb, indexFinger, middleFinger, pinkyFinger};

char Keys[] =   {'z','x','c','v'};

boolean currentPressed[] = {false, false, false, false};

const int threshold = 40;  // threshold value to decide when the detected sound is a knock or not

void setup()
{
  //while (!Serial)
  Serial.begin(115200);
  Serial.println("start");
  Keyboard.begin();
}


void loop()                    
{ 
  for (int i=0;i<4;i++) {
    delay(1);
    long total1 = 0;
    long start = millis();
    long total =  analogRead(pins[i]);

    // check if we are sensing that a finger is touching
    // and that it wasnt already pressed
    if ((total > threshold) && (! currentPressed[i])) {
      Serial.print("Key pressed #"); Serial.print(i);
      Serial.print(" ("); Serial.print(Keys[i]); Serial.println(")");
      currentPressed[i] = true;

      Keyboard.press(Keys[i]);
    } 
    else if ((total <= threshold) && (currentPressed[i])) {
      // key was released (no touch, and it was pressed before)
      Serial.print("Key released #"); Serial.print(i);
      Serial.print(" ("); Serial.print(Keys[i]); Serial.println(")");
      currentPressed[i] = false;
      
      Keyboard.release(Keys[i]);
    }
    
    delay(5);
  }
}

Additional steps required for adding MIDI support to FLORA.

Finishing Touches

Once your glove is functioning properly, it’s time to tack everything down. Put the glove on and position FLORA so that the wires don’t tug when you make a fist. Tape it down so it stays put before stitching.

Use plain thread to stitch FLORA’s unused pads to the glove. On the side where all the wires come in, stitch around the wires instead of through the pads.

Tack the wires in place with strategic stitches along their lengths.

Remove the tape and try on your completed drum glove!

Use It!

Your USB cable will be plugged in while you use the drum glove. You may want to grab a USB extension cable for more freedom of movement! For a similar, yet wireless, project, try the 3D Printed Wireless MIDI Controller Guitar.

Originally posted to Adafruit.

%d bloggers like this: