Patch-Seq er en alternativ sequencer bygget i forbindelse med valgfaget interaktionsdesign ved Sonic College.

——-


Hvad er interaktionsdesign?
Faget interaktionsdesign kredser omkring menneskers interaktion med designobjekter. Faget varer 6 uger og kulminerer i en eksamen, hvor man som studerende har 3 uger til at producere et interaktivt lydprodukt. Jeg producerede her en alternativ sequencer, som jeg valgte at kalde Patch-Seq.
Hvad er Patch-Seq?
Seqeunceren består af to dele. Den første del er en gate sequencer som fungerer vha. en magnet hall sensor. Hver gang en magnet passerer over sensoren, sender den et gate signal. Ved at variere hastigheden man drejer, samt placeringen af magneterne, kan man få forskellige gatemønstre.
Den anden del er patch panelet, som styrer sequencerens toneværdier. Hvis ingen kabler er sat i, vil melodien bevæge sig som vist i billedet herunder. Hvert step svarer til et skalatrin.
Hvis man indsætter patchkabler, kan man styre hvor signalet ryger hen, og på den måde skabe komplekse melodier. Dette kan ses på billedet til højre.
Hvordan fungerer teknikken?
Patch-Se1 er bygget op omkring en Arduino mega, og kredsløbsdesignet kan ses på billedet til højre.
Det øverste viser kredsløbet for LED’erne, det nederste viser kredsløbet for magnet sensoren, og det midterste viser det mest interessante, nemlig kredsløbet for Jackstikkene. Hvert Jack input er forbundet til både et input og et output på arduinoen. På outputtet er der sat en diode, hvilket sikrer at outputsiden ikke stjæler spænding fra inputsiden. Desuden er der på inputsiden sat en pulldown resistor, for at stabilisere inputtet.

Nedenunder ses et udsnit af koden fra projektet. Koden er relativ simpel, og kredser omkring to “for loops”. Disse er begge under funktionen “checkNextStep”, som kaldes hver gang magnetsensoren får et input. Funktionen starter med at tænde for outputtet på det nutidige step. Det første for loop gennemgår så en for en alle inputs, og tjekker hvor vidt de modtager et signal fra det nutidige step. Hvis det gør, så bliver dette skrevet ind i et boolean array. Det næste for loop gennemgår dette boolean array, og udregner derved hvad det næste step er. Til sidst kalder den så funktionen output, som sender en seriel besked til Max4Live.
void checkNextStep(){
digitalWrite(currentStepOutPin, HIGH);
for (int i = 1; i < 17; i++){
checkStep = i + 37;
if (checkStep != currentStepInPin && digitalRead(checkStep) == HIGH){
stepStatus[i] = true;
}
}
for (int j = 1; j < 17; j++){
if(stepStatus[j] == true) {
nextStep = j;
}
}
if (nextStep == 0) {
nextStep = currentStep;
}
nextStepLed = nextStep - 1;
digitalWrite(currentStepOutPin, LOW);
output();
}
void output() {
digitalWrite(ledPins[nextStepLed], HIGH);
Serial.write(nextStep);
delay(200);
digitalWrite(ledPins[nextStepLed], LOW);
//Set new value for currentstep
currentStep = nextStep + 1;
//Check for end
if (currentStep == 17) {
currentStep = currentStep - 16;
}
//Set pin values
currentStepInPin = currentStep + 37;
currentStepOutPin = currentStep + 21;
resetSteps();
}
void resetSteps() {
for (int h = 1; h < 17; h++){
stepStatus[h] = false;
}
nextStep = 0;
}
I max4Live har jeg opsat en simpel patch som oversætter den serielle data til midi, samt generer en simpel ambience, som stiger i intensitet, alt efter hvor hurtigt magnetskiven drejes. Midi sendes videre til Ableton som står for resten af lydgenereringen.
Designprocessen
En stor del af designprocessen bestod i hvordan jeg kunne gøre den intenderede interaktion tydelig for brugeren. Jeg lavede derfor en prototype, hvorefter jeg observerede en række folk bruge den. Dette gjorde det hurtigt tydeligt at interaktionen mellem magneterne og magnetskiven ikke var intuitiv, da den holder jeg havde designet til magneterne, ikke gjorde det tydeligt at de skulle placeres vertikalt i skiven. For at fikse dette, designede jeg en ny magnetholder, som spejlede hvordan magneterne sidder i magnetskiven, samt tilføjede pile som peger mod skiven.
Jeg valgte i denne process også at reprogrammere sequencerens logik, til det som jeg beskrev tidligere i indlægget. Dette gjorde jeg da jeg igennem testprocessen oplevede at den tidligere logik ikke producerede spændende melodiske forløb.
Hvad lærte jeg?
Igennem arbejdet med projektet lærte jeg en hel del om både programmering, 3d print, kredsløbsdesign, men også omkring designprocesser og observation. Det blev meget tydeligt for mig hvordan man igennem kontinuerlig test kan forbedre et produkt, og gøre den intenderede interaktion mere tydelig. Overordnet er jeg rigtig tilfreds med projektet, og føler at jeg på kort tid formåede at skabe et finpudset produkt.
Nedenunder ses en video af sequenceren i brug:
