Ashish Alex's profile

Air-Wack - Gesture based drumming (Speculative Design)

Drums are a growing obsession among the music enthusiasts. The usual drawback is that a decent drum-set is very expensive and can't be afforded by the economically less privileged people. Air drums are the closest more economical answer to this problem, but can we find a better solution?
This a project which was solely aimed at making an existing technology of Air drumming and making it even more fun. This project also was done to break the barriers of how design is said to always exist just to solve problems. The approach to this project was done through speculative design and critical analysis of our own ideas. 
The initial idea was not even drums. We wanted to make something off the Arduino and make something that would trigger just a signal for any moving vehicle while they are at signal, by diverting calls with an automated message .
The idea was not what was intended and it was still trying to solve a problem. This further lead to another direction for this project.
Air Drums are an existing concept. To improve upon it, the knowledge on the functioning and the processing behind the Air Drum Technology was necessary. We started off with a very basic circuit diagram of blinking an LED when we tap and the measure of intensity using the accelero-meter in the Genuino.
Initial Circuit Diagram
We used a Genuino and a Nano curie for prototyping the various iterations
This entire process of finding the ideal easy prototype was also pretty strenuous and lead to various kinds unprecedented problems. 
At this juncture it was realized that their should be a strict analysis of the path and how our speculative product may be closer to the near future. It was decided to critically analyze or approach by writing a news article by impersonating the very well known speculative design thinkers and critical design analysts - Pelle Ehn and Lucy Suchman
Air wack was a designed to play drums without the drum sticks. Just by using your gestures. It uses Ultra-sound sensors to measure your movements at a particular distance and make sounds as per the motion yo do in front of it. 
Code for the 7th Iteration - AIR WACK - Gesture Drums

Processing code:


import processing.serial.*;
import ddf.minim.*;

Minim minim;
AudioPlayer player;

int lf = 10;    // Linefeed in ASCII
String myString = null;
Serial myPort;  // The serial port
int sensorValue = 0;

void setup() {
  // List all the available serial ports
  printArray(Serial.list());
  // Open the port you are using at the rate you want:
  myPort = new Serial(this, Serial.list()[1], 9600);
  myPort.clear();
  // Throw out the first reading, in case we started reading 
  // in the middle of a string from the sender.
  myString = myPort.readStringUntil(lf);
  myString = null;
  // we pass this to Minim so that it can load files from the data directory
  minim = new Minim(this);
  // loadFile will look in all the same places as loadImage does.
  // this means you can find files that are in the data folder and the 
  // sketch folder. you can also pass an absolute path, or a URL.
  // Change the name of the audio file here and add it by clicking on "Sketch —> Import File"
  player = minim.loadFile("CY0000.mp3");
  
  
  

}

void draw() {
  // check if there is something new on the serial port
  while (myPort.available() > 0) {
    // store the data in myString 
    myString = myPort.readStringUntil(lf);
    // check if we really have something
    if (myString != null) {
      myString = myString.trim(); // let's remove whitespace characters
      // if we have at least one character...
      if(myString.length() > 0) {
        println(myString); // print out the data we just received
        // if we received a number (e.g. 123) store it in sensorValue, we sill use this to change the background color. 
        try {
          sensorValue = Integer.parseInt(myString);
          // As the range of an analog sensor is between 0 and 1023, we need to 
          // convert it in order to use it for the background color brightness
          int brightness = (int)map(sensorValue, 0, 1023, 0, 255);
          background(brightness);
        } catch(Exception e){}
        if(myString.equals("T1")){
          if(player.isPlaying() == false){
            player.rewind();
            player.play();
            loop();
          }
          
          
        }
      }
    }
  }
}


Arduino Code:

#include "CurieIMU.h"

void setup() {
  Serial.begin(9600); // initialize Serial communication
  while (!Serial);    // wait for the serial port to open

  // initialize device
  Serial.println("Initializing IMU device...");
  CurieIMU.begin();

  // Set the accelerometer range to 2G
  CurieIMU.setAccelerometerRange(2);
}

void loop() {
  float ax, ay, az;   //scaled accelerometer values

  // read accelerometer measurements from device, scaled to the configured range
  CurieIMU.readAccelerometerScaled(ax, ay, az);

  // display tab-separated accelerometer x/y/z values
  Serial.print("a:\t");
  Serial.print(ax);
  Serial.print("\t");
  Serial.print(ay);
  Serial.print("\t");
  Serial.print(az);
  Serial.println();
  if(ay > 0.3) {
    Serial.println("T1"); // send the letter T (for Trigger) once the sensor value is bigger than 0.3  
  }
delay(1);        // delay in between reads for stability
}
Air-Wack - Gesture based drumming (Speculative Design)
Published:

Air-Wack - Gesture based drumming (Speculative Design)

Speculative Design - Interaction - Gesture based sound - Prototyping

Published: