Mitt fokus i dette prosjektet har v?rt rundt hvordan man kan mappe data som en kontroller sender, til ? styre ulike funksjoner som gj?r kontrolleren om til et spillbart instrument.
Xbox 360-kontrolleren sender data til maskinen din, som pd m? finne og lese. For Windows brukes [hidin]-objektet, mens for Mac og Linux brukes [hid]. Skal man teste denne patchen p? Mac er det derfor viktig ? endre navnet til dette objektet til [hid] for at det skal kunne fungere. Etter at pd har f?tt koblet seg opp mot kontrolleren, mottar [hidin] data som m? settes inn i et system. Ved ? bruke [route], kan man lage en rekke outlets som organiserer de ulike datastr?mmene som vist p? dette bildet. Her sendes de ulike kanalene til [send]-objekter, slik at de lett kan hentes igjen med [recieve]-objekter fra hvor som helst i patchen.
Siden jeg synes det var litt lite intuitivt ? lese data fra route-panelet, valgte ? samle denne dataen og sette de opp i en lignende visuell framstilling som kontrolleren har. P? denne m?ten er det lett ? lese hvilken data som sendes n?r man trykker p? kontrolleren.
Fra to akser til fire retninger
Store deler av arbeidet har g?tt med p? ? finne ut hvordan instrumentet skulle fungere i praksis. L?sningen jeg endte opp med er at hver av joystickene kan spille fire toner hver, ved ? dytte de i retningene OPP, H?YRE, NED og VENSTRE. Dette gj?r det mulig ? spille 8 toner. I tillegg kan man trykke inn Right Bumper (RB) for ? senke alle tonene en kvart lavere, slik at vi totalt har muligheten for ? spille 16 toner. Data inn fra hver av joystickene kom i form av to akser; 1:OPP/NED, 2:VENSTRE/H?YRE. Hver av disse sender ut heltall fra 0 til 65535. Siden jeg ville bruke fire retninger pluss ha en d?dsone i midten, valgte jeg ? dele hver av aksene inn i tre like store deler. For ? gj?re dette m?tte jeg f?rst skalere ned 65535 ned til 29999. Siden 29999 / 65535 = 0,457769, multipliserte jeg datastr?mmen med 0,457769 for ? f? til dette. Deretter delte jeg tallet p? 10000 for ? gj?re det om til et heltall med desimaler. Siden jeg kun ville ha et heltall, s? brukte jeg [int] for ? kutte vekk desimalene uten ? forandre heltallet, siden [int] kun behandler heltall. For ordens skyld gjorde jeg at tallene starter p? 1 og ikke 0, ved ? plusse tallet med 1. Deretter satt jeg inn et [change]-objekt som forhindrer at tallet oppdaterer seg hele tiden, siden joysticken er sv?rt sensitiv og registrer bevegelse bare man tar i den. Videre brukte jeg [select] for ? trigge av- og p?-beskjeder til toggle-boksene. Hvis for eksempel [select] registrer tallet 1, vil den sende bang til to message-bokser. Den ene boksen har tallet 1 og g?r til toggle nummer 1. Den andre boksen sender tallet 0 til boks nummer 2 og 3. Dette gjentas for tallene 2 og 3, slik at n?r [select] registrerer et tall, vil toggle-boksen til dette tallet skrus p? og de andre av. Disse tre toggle-boksene blir s? sendt videre for ? kombineres med toggle-boksene til aksen OPP/NED.
Videre g?r disse inn i et system som gj?r de ulike kombinasjonene om til et tall som indikerer hvilken retning joysticken peker. Dette er her l?st ved ? bruke [&&]-operatoren, som sjekker om h?yre og venstre inlet er “IKKE NULL” (non-zero). Hvis begge tallene er noe annet enn null sender den beskjeden “1” som vi kan lese av i number-boksen under. Jeg fikk en del problemer n?r jeg kun brukte ett [&&]-objekt til ? sjekke alle mulighetene til hver retning, fordi den sjekker kun fra venstre til h?yre. Problemet var at den ikke registrerte alle bevegelsene, avhengig av hvilken vei som ble bevegd f?rst. Derfor brukte jeg to objekter slik at den sjekker kombinasjonen til venstre og h?yre inlet, pluss h?yre og venstre inlet. Etter jeg hadde lagt til alle sektorene og kombinert h?yre og venstre joystick, f?r vi ut tallene 0-8 ut ifra hvilken retning man peker joystickene. Dette s? til slutt slik ut:
Synthen
For ? i det hele tatt f? lyd fra instrumentet trenger det en lydkilde. Dataen som ble prosessert i patchen over, blir sendt videre til synth-patchen, som i grunn er to separate synther som hver kan produsere 8 partialtoner (overtoner). Disse to synthene er like i struktur, men den ene spiller en kvart lavere enn den andre, slik at hver retning p? joysticken kan alterneres mellom to toner ved hjelp av RB. Hver partialtone mottar individuell data om hvilken pitch og styrke de skal spille, slik at det er mulig ? gj?re fininnstillinger p? klangfargen hvis man ?nsker det.
Endre grunntonen
Som standard starter synthen ? spille p? grunntonen F2. Hvis man ?nsker ? endre p? dette, kan man bruke D-pad'en for ? velge andre grunntoner. Begrensningen her er at D-pad kun sender ut data 0 til 8, som vil si at man kun kan velge mellom 8 ulike grunntoner. Derfor kan man kun velge mellom de 8 hvite tangentene fra F2 opp til F3.
Hvilken oktav man spiller i har ogs? mye ? si for b?de klangfarge og bruksomr?der for instrumentet. Ved ? trykke X, Y eller B, kan man sette grunntonen til ? v?re F1, F2 eller F3.
Romklang
Ved ? bruke [freeverb]-objektet, har man muligheten til ? tilf?re romklang p? instrumentet. Siden dette ikke alltid er skelig har jeg gjort det mulig ? skru av klangen ved ? trykke knappen A. I patchen har man mulighet til ? endre p? parametrene til klangen, slik som hvor stor rommet er, demping av frekvenser eller hvor mye klang som skal v?re p? signalet.
Master out
Helt til slutt samles all lyden i en felles sub-patch hvor jeg har satt inn en av- og p?-funksjon. Denne gj?r at man kan skru lyden p? med Start-knappen og av med Back-knappen.
Oppsummering
Dette instrumentet kan spille en rekke forskjellige toner ved hjelp av joystickene p? kontrolleren. Den har muligheten til ? alternere tonen ned en kvart ved ? trykke RB. I tilleg har den muligheten til ? endre grunntonen med D-pad og X, Y, B. Klangen kan skrues av og p? med A. Hvis man ?nsker ? stoppe en tone ? spille kan man trykke LB. For ? skru mastervolumet av eller p? kan man bruke Start og Back.
Skjermbilder og patch
Flere h?yoppl?selige skjermbilder finnes her.
Pd-patchen kan lastes ned her.