For my final project in Collective Narrative, I wanted to go out of my comfort zone and try a concept that I wasn't sure how it would play out. I wanted to combine technical aspects with storytelling, the classroom space and also attempt to include all the students in this storytelling experience. I wanted to have this projects to be a collective story.
Premise
I created funeral scene. In the middle of the circular-position desks of the class room I built a coffin and had it draped with a black cloth.
I recorded stories of friends that have had a male pass away in their lives. It could either be someone close to them or a friend's story. I recorded 14 stories, one for each student in the class. I asked that each story not include a location, name, or reason for why he passed away so that there were not conflicting stories in the project.
Hardware
I then wired up 14 foot peddles to an Arduino and played the audio pieces using serial communication and p5.js on a local server.
Here is the Arduino code:
const int switchOnePin = 19; // the number of the pushbutton pin
const int switchTwoPin = 2;
const int switchThreePin = 3;
const int switchFourPin = 4;
const int switchFivePin = 5;
const int switchSixPin = 6;
const int switchSevenPin = 7;
const int switchEightPin = 8;
const int switchNinePin = 9;
const int switchTenPin = 10;
const int switchElevenPin = 11;
const int switchTwelvePin = 12;
const int switchThirteenPin = 13;
const int switchFourteenPin = 14;
bool switchOnePressed = false;
bool switchTwoPressed = false;
bool switchThreePressed = false;
bool switchFourPressed = false;
bool switchFivePressed = false;
bool switchSixPressed = false;
bool switchSevenPressed = false;
bool switchEightPressed = false;
bool switchNinePressed = false;
bool switchTenPressed = false;
bool switchElevenPressed = false;
bool switchTwelvePressed = false;
bool switchThirteenPressed = false;
bool switchFourteenPressed = false;
// variables will change:
int switchState = 0; // variable for reading the pushbutton status
void setup() {
// setup serial
Serial.begin(9600);
// initialize the pushbutton pin as an input:
pinMode(switchOnePin, INPUT);
pinMode(switchTwoPin, INPUT);
pinMode(switchThreePin, INPUT);
pinMode(switchFourPin, INPUT);
pinMode(switchFivePin, INPUT);
pinMode(switchSixPin, INPUT);
pinMode(switchSevenPin, INPUT);
pinMode(switchEightPin, INPUT);
pinMode(switchNinePin, INPUT);
pinMode(switchTenPin, INPUT);
pinMode(switchElevenPin, INPUT);
pinMode(switchTwelvePin, INPUT);
pinMode(switchThirteenPin, INPUT);
pinMode(switchFourteenPin, INPUT);
}
void loop() {
if (!switchOnePressed) {
switchState = digitalRead(switchOnePin);
if (switchState == LOW) {
Serial.write(1);
switchOnePressed = true;
}
}
if (!switchTwoPressed) {
switchState = digitalRead(switchTwoPin);
if (switchState == LOW) {
Serial.println(2);
switchTwoPressed = true;
//Serial.println(switchState);
}
}
if (!switchThreePressed) {
switchState = digitalRead(switchThreePin);
if (switchState == LOW) {
Serial.println(3);
switchThreePressed = true;
}
}
if (!switchFourPressed) {
switchState = digitalRead(switchFourPin);
if (switchState == LOW) {
Serial.write(4);
switchFourPressed = true;
}
}
if (!switchFivePressed) {
switchState = digitalRead(switchFivePin);
if (switchState == LOW) {
Serial.write(5);
switchFivePressed = true;
}
}
if (!switchSixPressed) {
switchState = digitalRead(switchSixPin);
if (switchState == LOW) {
Serial.write(6);
switchSixPressed = true;
}
}
if (!switchSevenPressed) {
switchState = digitalRead(switchSevenPin);
if (switchState == LOW) {
Serial.write(7);
switchSevenPressed = true;
}
}
if (!switchEightPressed) {
switchState = digitalRead(switchEightPin);
if (switchState == LOW) {
Serial.write(8);
switchEightPressed = true;
}
}
if (!switchNinePressed) {
switchState = digitalRead(switchNinePin);
if (switchState == LOW) {
Serial.write(9);
switchNinePressed = true;
}
}
if (!switchTenPressed) {
switchState = digitalRead(switchTenPin);
if (switchState == LOW) {
Serial.write(10);
switchTenPressed = true;
}
}
if (!switchElevenPressed) {
switchState = digitalRead(switchElevenPin);
if (switchState == LOW) {
Serial.write(11);
switchElevenPressed = true;
}
}
if (!switchTwelvePressed) {
switchState = digitalRead(switchTwelvePin);
if (switchState == LOW) {
Serial.write(12);
switchTwelvePressed = true;
}
}
if (!switchThirteenPressed) {
switchState = digitalRead(switchThirteenPin);
if (switchState == LOW) {
Serial.write(13);
switchThirteenPressed = true;
}
}
if (!switchFourteenPressed) {
switchState = digitalRead(switchFourteenPin);
if (switchState == LOW) {
Serial.write(14);
switchFourteenPressed = true;
}
}
}
Here is the p5.js code:
var serial; // variable to hold an instance of the serialport library
var fromSerial = 0; //variable to hold the data
var buttonValue;
var currentVoice;
var lindseyD;
var orianaNTwo;
function preload() {
lindseyD = loadSound('assets/LD.mp3');
orianaNTwo = loadSound('assets/ON2.mp3');
}
function setup() {
noCanvas();
serial = new p5.SerialPort(); // make a new instance of serialport librar
serial.on('list', printList); // callback function for serialport list event
serial.on('data', serialEvent); // callback for new data coming in
serial.list(); // list the serial ports
serial.open("/dev/cu.usbmodem1421"); // open a port
}
function draw() {
}
function switchAudio(newVoice) {
if (currentVoice && currentVoice.stop) {
currentVoice.stop();
}
currentVoice = newVoice;
currentVoice.play();
playing = true;
}
// get the list of ports:
function printList(portList) {
for (var i = 0; i < portList.length; i++) {
// Display the list the console:
console.log(i + " " + portList[i]);
}
}
function serialEvent() {
var inString = serial.readLine();
if (inString.length > 0) {
inString = inString.trim();
buttonValue = Number(inString);
if(buttonValue === 2){
//lindseyD.play();
switchAudio(lindseyD);
}
if(buttonValue === 3) {
//orianaNTwo.play();
switchAudio(orianaNTwo);
}
}
}
The only rules I gave to the class when I started the experiment was that you can push you peddle whenever you like, but you only have one chance to do so.
There are two aspects to this projects that I was curious how it would play out:
- the social dynamics of how groups participate in a collective storytelling experience. Are people shy with participating? Are they quick to interact? Especially since they were only able to contribute their story once.
- We we be able to create the life of the individual that has died at the funeral by having different stories told by different people and be able to know him better even if he is a fictional person? Can we create this "man" in our minds from the stories that we hear from his loved ones in the room?