Project 2: Sound Artifact

Project 2: Sound Object

 

for my final project I wanted to create an object that made different noises depending on position and handling; but I wanted to take it away from the realm of functional instruments.

To do this, I used captivate touch sensing by wiring up an arduino, and sent data through serial to a maxpatch that manipulated the input into sound.

video of use

 

 

 

other sound

 

 

 

Construction:

 

I constructed the form out of polymer clay; which i sculpted to fit my hand; and a magnet to allow it to fit together while being able to be opened. I wanted to stay away from rapid prototyping techniques such as 3d printing and lasercutting because i felt that they take away from the organic result i was trying to achieve, and would place it into a context i wasn’t interested in.

 

I created the circuit by soldering resistors and wires onto pins that fit easily into the breadboard on the arduino. The arduino is removable but the wires and copper tape are built into the shape

 

maxpatch:

  

download

Arduino Code:

#include <CapacitiveSensor.h>

CapacitiveSensor cs_4_2 = CapacitiveSensor(4,2);
CapacitiveSensor cs_4_3 = CapacitiveSensor(4,3);
CapacitiveSensor cs_4_5 = CapacitiveSensor(4,5);
CapacitiveSensor cs_4_6 = CapacitiveSensor(4,6);
CapacitiveSensor cs_4_7 = CapacitiveSensor(4,7);
CapacitiveSensor cs_4_8 = CapacitiveSensor(4,8);
CapacitiveSensor cs_4_9 = CapacitiveSensor(4,9);
CapacitiveSensor cs_4_10 = CapacitiveSensor(4,10);
CapacitiveSensor cs_4_11 = CapacitiveSensor(4,11);
CapacitiveSensor cs_4_12 = CapacitiveSensor(4,12);

void setup(){

cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF); // turn off autocalibrate on channel 1 – just as an example Serial.begin(9600);
cs_4_3.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_5.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_6.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_7.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_8.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_9.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_10.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_11.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_12.set_CS_AutocaL_Millis(0xFFFFFFFF);

Serial.begin(9600);
}

void loop(){

long start = millis();

long total2 = cs_4_2.capacitiveSensor(1);
long total3 = cs_4_3.capacitiveSensor(1);
long total5 = cs_4_5.capacitiveSensor(1);
long total6 = cs_4_6.capacitiveSensor(1);
long total7 = cs_4_7.capacitiveSensor(1);
long total8 = cs_4_8.capacitiveSensor(1);
long total9 = cs_4_9.capacitiveSensor(1);
long total10 = cs_4_10.capacitiveSensor(1);
long total11 = cs_4_11.capacitiveSensor(1);
long total12 = cs_4_12.capacitiveSensor(1);

//long total9 = cs_8_9.capacitiveSensor(1);

//Serial.print(millis() – start); // check on performance in milliseconds

Serial.write(99);
Serial.write(98);
printLimit(total2, 100, 2);
printLimit(total3, 100, 3);
printLimit(total5, 100, 5);
printLimit(total6, 100, 6);
printLimit(total7, 100, 7);
printLimit(total8, 100, 8);
printLimit(total9, 100, 9);
printLimit(total10, 100, 10);
printLimit(total11, 100, 11);
printLimit(total12, 100, 12);

//delay(5); // arbitrary delay to limit data to serial port

}

void printLimit(long val, int thresh,int yes){
if (val > thresh){
Serial.write(val);
} else {
Serial.write(0);
}
}

download

 

 

[will refine documentation on friday]