Semesteroppgave i MUS2830
Høst 2014
Kandidatnummer 642
Innledning
Jeg har i min semesteroppgave forsøkt å lage et system for gitarister som gjør det mulig å endre effektparametre med bevegelsesfeedback. Utgangspunktet for oppgaven var en ide om å kunne styre flere gitareffekter samtidig med en og samme bevegelse. Den første tanken som slo meg var å hente midi-data fra en «expression pedal». Dette er et konsept som er velkjent og som kan fungere veldig bra, men jeg ville knytte bevegelsen nærmere instrumentet. Derfor kom jeg etter hvert på ideen om å hente bevegelsesdata fra en sensor som festes på gitarhodet. På denne måten forandres effektene ut i fra hvordan gitaristen beveger på seg og man blir ikke «lenket fast» i en pedal på bakken. For å se en demonstrasjon av systemet, trykk her.
Måten jeg har løst dette på er å bruke det innebygde gyroskopet i iPhonen min som bevegelsessensor. Telefonen festes på gitarhodet og kobles opp i mot en datamaskin som kjører programmet Pure Data. For å hente sensordata fra iPhone har jeg brukt MobMuPlat, som i tillegg gjør det mulig å sende dataene trådløst til Pd-patchen på datamaskinen gjennom en trådløs ruter.
Målet for oppgaven var å finne logiske mappingløsninger for å få god sammenheng mellom bevegelse og det lydlige resultatet . I tillegg fokuserte jeg på å gi utøver mest mulig kontroll på effektene ved å legge til en funksjon som gjør det mulig å velge hvilke effekter som påvirkes av gitaristens bevegelse. Det vil si at man kan ha på flere effekter samtidig, men man kan velge hvilke av dem man vil kontrollere. Et annet viktig punkt som dukket opp i prosessen var å holde effektenes maksimum-verdier innenfor rimelige grenser. For å få mest mulig kontroll på effektene ble jeg nødt til å finne en middelvei mellom små og ekstreme klangforandringer i lyden.
Resultatet av dette blir at man får et «utvidet instument». Slike «utvidede instrumenter» er blitt lagd tidligere og kjennetegnes ved at et akustisk (eller elektrisk i dette tilfellet) instrument får utvidet funksjonalitet ved å integrere en eller flere sensorer, som gir utøver muligheten til å gi instrumentet et utvidet musikalsk uttrykk. Et lignende eksempel som jeg hentet inspirasjon fra er Curtis Bahn's «sBass» som er en elektrisk kontrabass som er utstyrt med diverse potmetre, touchpads og sensorer for å kontrollere parametrene til eksterne effekter (Miranda/Wanderley 2006: 22). En mulig representasjon av et slikt system kan settes opp slik:
Figur fra Miranda/Wanderley 2006.
«Gestural controller» blir i dette tilfellet gitaren som sensoren er festet på. Her vil utøveren få to typer feedback. «Primary feedback» vil i dette tilfellet være taktil (vibrasjonene fra gitarkroppen) og auditivt (lyden av strengene). Sensoren på gitaren er mappet til forskjellige effektparametre (slik som pilene illustrerer) som manipulerer gitarens lydsignal og gir en «secondary feedback». Dette er feedback som er en utvidelse av instrumentets opprinnelige musikalske uttrykk (ibid:3).
Bevegelse og plassering av sensor
Når jeg skulle finne en bevegelse for å kontrollere effektene prøvde jeg å tenke etter hvilken bevegelse som ville være mest naturlig å bruke. Etter å ha tenkt litt etter kom jeg fram til at den praktisk mulige bevegelsen måtte være å bevege gitarhalsen opp og ned nøytral posisjon. Opp for stor effektforandring og nøytral for upåvirket signal. Jeg vurderte muligheten for å få andre effekter ved å peke gitarhalsen ned mot gulvet, men fant etter hvert ut at dette førte til mindre kontroll i tillegg til at det er mye mer naturlig å peke gitarhalsen opp enn ned. Med dette i bakhodet kom jeg fram til at den beste plassen å feste Iphonen på var på gitarhodet. Der kommer den ikke i veien for utøveren og får de beste forholdene for å fange opp presis bevegelsesdata. Det første jeg prøvde var å feste iPhonen sidelengs bak hodet opp i mot stemmeskruene. Dette var ikke ideelt da sensordataene ikke ble særlig presise. Løsningen ble derfor å beste den vannrett under gitarhodet slik som dette:
Med denne plasseringen fikk jeg inn god og nøyaktig bevegelsesdata. Jeg festet iPhonen med teip. Dette er selvfølgelig en midlertidig løsning. Neste steg vil være å finne en enkel festemekaniske for å slippe å teipe iPhonen på plass hver gang jeg skal bruke systemet.
Oversikt over Pd-patch
For å prosessere gitarsignalet brukte jeg Pure Data. Det er i dette programmet all programmeringen er gjort. MobMuPlat fungerer kun som et kommunikasjonsledd mellom iPhone og Pd. MobMuPlat-filen på iPhone inneholder ingen andre funksjoner enn å sende bevegelsesdata. Underveis i prosessen vurderte jeg å legge til enkle funksjoner i appen for å kontrollere Pd, men fant etter hvert ut at dette var svært tungvindt og fokuset forsvinner fra ideen om å styre effektene med bevegelse. Den eneste koden som ligger på telefon-appen er derfor kodeblokken til venstre i bildet nedenfor. Først henter den informasjon fra gyroskopet i telefonen. Deretter sendes denne informasjonen som en liste under variablen «/valueToNetwork $1» til ruteren som telefonen og datamaskinen er koblet opp i mot:
Koden til høyre i bildet ovenfor henter denne informasjonen fra ruteren slik at den kan brukes i Pd-patchen. Etter en omskalering av dataene sendes de videre til effektene. Resten av hovedpatchen består av en oversikt over hvilke effekter som er aktivert og hvilke effekter som blir kontrollert:
Gitarsignalet kommer fra «adc~»-objektet og blir sendt gjennom effektene. Effektene er seriekoblet slik det ofte er på et fysisk pedalbrett. Alle effektene har hver sin «toggle» som viser om effekten er aktivert eller ikke. De to siste effektene er stereosignaler så disse har to linjeutganger. Signalet blir deretter sendt ut gjennom «dac~» objektet.
Midimapping
Midi-informasjonen blir lest av objektet «notein» som er det første objektet i koden merket med rødt i bildet over. Objektet «stripnote» sender «note-on» beskjeden videre, men venter med å sende «note-off» beskjeden til tangenten blir trykket ned på nytt. Uten dette objektet ville jeg fått en bang ved å trykke tangenten ned, og en ved å slippe tangenten. På denne måten kan jeg bruke hver tangent på keyboardet som en av/på bryter. Objektet «select» sender en bang når den mottar en verdi som er lik ett av dens argumenter som gjør det mulig å mappe en tangent opp mot en effekt. Boksen som er merket med blått i bildet ovenfor fungerer kun som en oversikt på hvilke effekter som påvirkes når man beveger gitaren. Innholdet i denne underpatchen vises i bildet under:
Midi-dataene kommer inn i «inlet» og går gjennom et nytt «select»-objekt der argumentene korresponderer med verdiene fra fem forskjellige tangenter på keyboardet. Hvis en av disse tangentene trykkes ned sender «select»-objektet en bang til en «toggle» som igjen sender verdien 1 til «spigots» høyre inngang. «Spigot» fungerer som en sluse som kan åpnes med verdien 1 og lukkes med verdien 0. Datastrømmen fra iPhone sendes gjennom vestre inngang og kan derfor skrus av og på etter behov. På denne måten kan man styre hvilke effekter som kontrolleres.
Mapping av effektene
Det blir for omfattende å ta for seg hvordan hver av effektene er satt sammen. Kodens oppbygning er godt dokumentert i patchen og i effektenes respektive underpatcher, så jeg vil heller vise et eksempel på hvordan jeg har mappet dataene fra iPhone til de forskjellige effektparametrene. Bildet under er et utklipp av underpatchen som heter «pd waheffekt» som igjen befinner seg inne i underpatchen som heter «WAHWAH».
Øverst kommer datastrømmen fra iPhone ut fra objektet «r wah» (r er forkortelse for recieve). Som man kan se blir disse tallene sendt inn i et «osc~» objekt som i dette tilfellet fungerer som en LFO som kontrollerer filterets senterfrekvens. Først blir tallene ganget med fem for å få verdier mellom 0 og 5 som «osc~» objektet leser som Hz. Man kan derfor øke frekvensen på hvor fort filteret sveiper opp og ned ved å løfte gitarhalsen. Nesten nederst i koden er det enda et «r wah» objekt. Dette er kun for å holde patchen ryddig, da det er de samme verdiene som kommer ut av disse to. Denne er derimot mappet til to andre parametre. En av dem er koblet til «vcf» objektets høyre inngang som kontrollerer filterets Q-verdi. Med andre ord filterets båndbredde. Jo høyere Q-verdi jo smalere og brattere blir filteret. Verdiene blir først sendt gjennom et «expr» objekt for å omskalere verdiene til ønsket omfang. Uttrykket «$f1» fungerer som en variabel slik at verdiene først blir ganget med 2, deretter adderes denne summen med 2. Den minste verdien vil derfor være 2 som gjør at filteret alltid vil ha en liten resonanstopp, noe som jeg var ute etter. Den andre parameteren som blir kontrollert er en enkel volumkontroll som øker volumet på utgangsignalet parallelt med økningen av filterets Q-verdi. Dette er kun for å kompensere for lydfiltreringen. Når Q-verdien øker kutter filteret bort flere og flere frekvenser som gjør at signalet oppleves svakere. Nedenfor er en video der jeg demonstrerer hvordan hver av effektene høres ut og hvordan de påvirkes når jeg beveger på gitaren:
Konklusjon
Etter mye eksperimenter og bruk av systemet vil jeg påstå at jeg har klart å nå målene jeg satte meg i begynnelsen av prosjektet. Jeg ble fornøyd med hvordan bevegelsene mine samsvarte med effektforandringen. Jeg ble også fornøyd med kontrollen over effektene. Det var allikevel enkelte ting som gjorde systemet mindre presist. Det første var at signalet mellom iPhonen og datamskinen ikke alltid var like stabilt. Dette var ikke et veldig stort problem, men det hendte noen ganger at datastrømmen ble brutt i opptil et halvt sekund. Særlig ved kjappe bevegelser. Det andre var fotkontrolleren, som i mitt tilfelle var et midi-keyboard. Dette fungerer veldig dårlig som en fotkontroller på grunn av at føttene er for store i forhold til de små tangentene. Disse tingene gjorde at kontrollen over systemet ble noe mindre, men dette er ting som absolutt kan optimaliseres.
Litteratur
Miranda & Wanderley. 2006. New Digital Musical Instruments: Control and Interaction Beyong the Keyboard. Middleton, Middleton.
Kilder for patch
Iglesia, D. "MobMuPlat", Iglesia Intermedia, http://www.mobmuplat.com [Lesedato 7.12.14]
Massat, Pierre. "Guitar Extended", https://guitarextended.wordpress.com/audio-effects-for-guitar-with-pure-data [Lesedato 6.12.14]
Nymoen, Kristian. "delay-medfilter.pd" i mappen "11-dafx", http://www.uio.no/studier/emner/hf/imv/MUS2830/h14/undervisningsmateriale [Lesedato 5.12.14]
Vetter, Katja 2012. "vfreeverb" fra "Pure data forum", http://forum.pdpatchrepo.info/topic/6247/freeverb-in-vanilla-pd/6 [Lesedato 3.12.14]
Patch