First round of PROTOTYPE & USER TEST 
01 FIRST ROUND OF USER TEST
We prototyped with cardboard for the first version of user test. We let tester tried our prototype and noted down their confusion in different stages of user flow. 
People are confused when we mention about hanging two painting. They feel they can control both paintings at the same time but they are not allowed to, because our intention is to let user appreciate and conduct each painting separately.
Therefore, instead of having 6 IR sensor on two separate notes, we will only have 3 IR sensors, and users are only able to see one note at a time. The way people choose which painting to interact with is through turning the pages. Also, instead of having a reset button, we want the action itself, turning the page, switch off everything and reset, so users can start interacting with the next painting.
DESIGNING THE CIRCUIT
We made the functional analyze as below. 
We also analyzed our technical problems. To remote control different parts, we found that IR beam sensor is still the best choice so far. But as it is not accurate far away and will ruin the painting if we drill some holes on it, we decided to put the IR part behind a music score on the shelf. 
Based on that, we improved our plan. 
trying out maxmsp:
#define waterlight 2
#define menlight 3
#define mountainlight 4
#define IR_water 6
#define IR_men 9
#define IR_mountain 8
int IR_water_State = 0,IR_water_lastState = 0;
int IR_men_State = 0,IR_men_lastState = 0;
int IR_mountain_State = 0,IR_mountain_lastState = 0;
//message given to max
int active_water = 0;
int active_men = 0;
int active_mountain = 0;
void setup() {
// put your setup code here, to run once:
pinMode(waterlight,OUTPUT);
pinMode(menlight,OUTPUT);
pinMode(mountainlight,OUTPUT);
pinMode(IR_water,INPUT);
pinMode(IR_men,INPUT);
pinMode(IR_mountain,INPUT);
Serial.begin(9600);
}
void loop() {
IR_water_State = digitalRead(IR_water);
IR_men_State = digitalRead(IR_men);
IR_mountain_State = digitalRead(IR_mountain);
//water
if (IR_water_State && !IR_water_lastState) {
active_water = 1;
}
IR_water_lastState = IR_water_State;
if(active_water == 1){
digitalWrite(waterlight,HIGH);
}
Serial.print(active_water,DEC);
Serial.print(” “);
//men
if (IR_men_State && !IR_men_lastState) {
active_men = 1;
}
IR_men_lastState = IR_men_State;
if(active_men == 1){
digitalWrite(menlight,HIGH);
}
Serial.print(active_men,DEC);
Serial.print(” “);
//mountain
if (IR_mountain_State && !IR_mountain_lastState) {
active_mountain = 1;
}
IR_mountain_lastState = IR_mountain_State;
if(active_mountain == 1){
digitalWrite(mountainlight,HIGH);
}
Serial.print(active_mountain,DEC);
Serial.print(” “);
Serial.print(“\r”);
}



after that, we wanted to use mapping function in the max and ableton instead of just require ableton's api to change something (effects, sound values, etc.). So we changed our logic in max/msp little bit afterwards.


Back to Top