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