Semesteroppgave – Interaktiv musikk, UiO

Pure Data & MobMuPlat

I min semesteroppgave har jeg tatt for meg programmering i Pd (Pure Data) og lagd en patchkontroll for iOS med MobMuPlat. Jeg vil forske p? hvordan jeg kan lage lyd i Pd, og hvordan lage et funksjonelt instrument basert p? akkorder. Oppgaven vil belyse fremgangsm?ter, samt ta for seg problemer og erfaringer underveis.

Pd (Pure Data)

Pure Data er et grafisk verkt?y til lydproduksjon og instrumentdesign. Pure Data er gratis og kan lastes ned her.

MobMuPlat
MobMuPlat er en iOS-basert app som tar for seg kontrollering av Pd-patcher. Med MobMuPlat Editor kan man generere sin egen kontroll opp mot sin Pd-patch. MobMuplat Editor er ogs? gratis og kan lastes ned her.

Programmeringen
F?r jeg gikk i gang med selve programmeringen m?tte litt tankevirksomhet til. Fra f?r hadde jeg kun erfaring med Pd gjennom en obligatorisk oppgave, som tok for seg nettopp dette. I den obligatoriske oppgaven tok jeg utgangspunkt i en tidligere lagd patch (ikke produsert av meg), og pr?vde meg frem til hva som fungerte og ikke. I denne semesteroppgaven vil jeg begynne fra ?scratch? og utforske hvordan jeg kan lage akkorder med b?de 3 og 4 toner.

Bildet over viser p? en m?te essensen i min patch (alle akkordene er satt opp p? denne m?ten, med tilh?rende trigger). Markert mer r?dt er selve akkorden. Etter gode r?d fra Alexander Refsum Jensenius? Lydsyntese 1 og Lydsyntese 2, som er instruksjonsvideoer p? YouTube, fikk jeg vite hvordan man kan sette sammen grunntone og kvint med tilh?rende overtoner. Denne idéen ville jeg videref?re til ? lage treklanger, b?de dur og moll, og firklanger. Som man ser har jeg tatt utgansgpunkt i A4, som man finner ved 440Hz. Overtoneregisteret finner man ved ? multiplisere toneverdien (Hz) med henholdsvis 2, 3 og 4. P? den m?ten f?r man en rikere tone, enn bare en enkel sinustone p? 440Hz. Alle disse objektene g?r gjennom et osc~-objekt for at de generere lyd. ?~?-tegnet (tilde) er viktig i Pd, da dette signaliserer at lyd skal sendes, og ikke andre beskjeder. I overtoneregisteret har jeg ogs? lagt p? en volumkontroll etter osc~-objektet, for ? nedskalere overtonenes volum for en mer kontrollert lyd. Overtonene er koblet ut i fra nummerboksen (440Hz) og ender i et +~-objekt som legger sammen disse.

Arbeid som omfatter hertz (Hz) skulle vise seg ? ikke bli av de enkleste saker. Ut i fra Refsum Jensenius? instruksjonsvideoer fikk jeg vite at kvinten til A (femte trinn) ligger ved 660Hz, alts? 220Hz mellom. Mitt m?l var som sagt ? lage treklanger og til slutt firklanger. A-dur treklang ble ikke noe problem, da jeg pr?vde det som tilsynelatende var mest sannsynlig; ? dele 220 p? 2. Ved 550Hz fant jeg tersen (tredje trinn), som ogs? gj?r at akkorden blir dur/moll. Da jeg skulle lage en A-moll, hadde jeg jo et veldig godt utgangspunkt i og med at jeg nettopp hadde funnet ut hvor tersen l? (i Hz), i forhold til grunntonen. Men her m?tte jeg p? mitt f?rste ?problem?. Av musikkteoretisk bakgrunn vet jeg at en moll-ters ligger en halv tone under en dur-ters. Men hvor mange hertz tilsvarer en halv tone? Min m?te ? l?se dette p? var ? finne ut hvor mange halvtoner det var mellom grunntonen og tredje trinn. Fra A til C# er det fem halvtoner. Jeg viste jo fra f?r at dur-ters (C#) l? ved 550Hz, alts? 110Hz over grunntonen (440Hz). Derfor, 110:5=22, alts? en halv tone tilsvarer 22Hz. Dette skulle resultere i at jeg fant moll-ters (C) ved 528Hz, alts? 22Hz under dur-ters (C#-550Hz).

Over p? arbeidet med firklangene, henholdsvis 7- og 9-akkorder (A7, Aadd9, Am7, Amadd9), fikk jeg enda mer ? bryne meg p?. Her m?ter jeg p? de st?rste utfordringene n?r det kommer til at akkordene skal klinge rent. Litt av problemet er at jeg jobber med ca. tall, alts? tall uten desimaler. Etter ? ha sl?tt opp en liste over de forskjellige frekvensene ser jeg at A (tonen) har rene tall i alle oktaver (440Hz, 880Hz, 1760Hz osv.). Tallene i mellom har desimaler, og dette gj?r utslag i overtonene n?r 7- eller 9-eren blir lagt p?. Derfor har jeg pr?vd s? godt det har latt seg gj?re ? f? det s? n?rme som mulig ? l?te rent, ved ? endre etter ?ret. Det er spesielt i moll-akkordene dette skjer. Som nevnt over, skulle moll-tersen etter min regning ligge 22Hz under dur-ters. I en treklang kunne dette h?res rent ut, men over i en firklang l?t det annerledes. Jeg endte da opp med ? skru moll-tersen ned til 523Hz og la syvende trinn (G, ikke G# - liten syver i Am7) ved 770Hz. Det er denne akkorden (Am7) jeg hadde mest problemer med ? f? til ? l?te rent. Et videre forskningsprosjekt kan v?re ? finne ut hvorfor dette skjer, og hvordan man kan l?se dette. Dette har jeg valgt ? ikke gj?re i denne oppgaven. A9 og Amadd9 (uten syvende trinn) var det derimot mindre problemer med. Aadd9 har samme verdier som dur7 har, bortsett fra at 7-eren er tatt vekk og byttet med 9-eren ved 990Hz. Amadd9 m?tte justeres litt (hvertfall til mitt ?re). Inneholder de samme verdiene som Aadd9, bare at 9-eren er justert ned til 988Hz.

Videre i patchen har jeg laget en ?envelope? p? hver av akkordene, med et tilh?rende bang-objekt (p? bildet over er dette det som er merket med gr?nt). Dette er ogs? en ting jeg plukket opp fra Refsum Jensenius og fant nyttig. Denne funksjonen gir muligheten til en ?fade?-effekt. Bang-objektet inneholder en 1-verdi og en 0-verdi. Det jeg har gjort her er at jeg har satt 1-verdien til ? vare i 700ms og at 0-verdien skal vare i 4000ms. Opp? dette har jeg lagt en forsinkelse (delay) p? 0-objektet s? det ikke starter med en gang, da et bang-objekt sender 1-verdien n?r den blir trykket ned og 0-verdien n?r den slippes. Dette gir en lang og mer avrundet ?crescendo?-lignende akkord. Disse bang-objektene er ogs? koblet til MobMuPlat, som jeg kommer tilbake til lenger ute i oppgaven. Et annet problem jeg st?tte p? var at nummerboksene nullet seg ut hver gang patchen startet. Av den grunn kom det ingen lyd n?r jeg testet det ut p? iPad. M?ten jeg l?ste dette p? var ? sette en message-boks over hver nummer-boks for s? ? koble det opp mot et loadbang-objekt. Et loadbang-objekt er en trigger n?r patchen starter. Derfor, n?r patchen starter trigger loadbang-objektet message-boksen, og angir verdi i nummer-boksen (kan sees over akkorden i den r?de markeringen). For ryddighetens skyld lagde jeg ogs? et send~- og et recieve~-objekt (gul merking p? bildet). Dette s? jeg kan f? en master volumkontroll for seg selv og slippe ? ha alle tilkoblingene rett p? den. Dette ender i et dac~-objekt, som er en forkortelse for Digital Audio Converter, som sender lyden ut.

MobMuPlat

Det inspirerende med denne oppgaven jeg har valgt ? ta for meg er ? kunne lage og designe din helt egne kontroll. P? denne m?ten kan du kontrollere lyden fra Pd-patchen p? ?din? m?te og ikke v?re avhengig av ? bruke pila til ? trykke p? de forskjellige objektene. Min MobMuPlat-kontroll tar utgangspunkt i det enkle. 6 knapper, én til hver akkord, med utseende som en sampler og en volumkontroll (slider). Jeg lagde ogs? kontrollen for iPad, og ikke iPhone, av det enkle prinsipp ? f? st?rre rom til ? spille p?. Programmeringen av dette er ikke s? komplisert, bare man finner ut hvor man m? plassere de forskjellige knappene og sliderne. Setter man disse p? feil sted kan du f? store overaskelser eller s? kan du risikere at det ikke skjer noe. Som anvist p? bildet over, tar jeg n? for meg det som er merket med bl?tt. I Pd-patchen ser man et objekt ved navn recieve fromGUI som videre g?r til et objekt ved navn route list. Det er i denne ?routingen? man kobler sammen MobMuPlat og Pd. I mitt tilfelle har jeg 6 knapper (buttons) og 1 slider. Slideren har f?tt navnet /slider1 i MobMuPlat. For at denne skal sende ut beskjeder i Pd, m? den st? oppgitt som /slider1 i ?route? listen. Denne slideren har jeg koblet p? en annen ?slider? i Pd, for ? dobbeltsjekke at de samhandler riktig. Dette utgj?r volumkontrollen. De 6 knappene f?lger s? etter i listen, henholdsvis /button1 (Adur), /button2 (Aadd7), /button3 (Aadd9), /button4 (Am), /button5 (Amadd7) og /button6 (Amadd9). Hver av disse er koblet til tilsvarende bang-objekt, og et objekt som tilsier at de skal velge verdi 1 (select 1).

Dette er hvordan kontrollen ser ut ut: (dur-akkordene utgj?r de tre ?verste knappene, mens moll-akkordene utgj?r de tre nederste)



I videoen under demonstrer jeg det ferdige resultatet. Dette har jeg spilt inn ved hjelp av Logic X og lagt p? reverb (Space Designer) og chorus. Legg merke til hvordan s?rlig moll-akkordene i visse tilfeller minner om et orgel. Legg ogs? merke til hvordan lyden oppf?rer seg n?r intensiteten p? spillingen ?ker samtidig som volumet presses til maks, og hvordan det svinger n?r det byttes mellom dur- og moll.


https://www.youtube.com/watch?v=qEwg1HNaVw4

Konklusjon

Nok engang har jeg f?tt kjenne p? at Pure Data er komplisert program ? ta fatt p?, i hvertfall n?r man har s? lite bakgrunn innenfor lyd/instrumentprogrammering som undertegnede. Men hver gang ?pner det seg nye d?rer og du skj?nner litt mer. Min oppgave og mitt forskningsprosjekt er kanskje ikke av de mest avanserte og kompliserte, men for min egen del har jeg hatt nok ? jobbe med. Det som er spennende med dette er videreutviklingen av dette, hva det kan f?re til. Ergo, dette er kun en begynnelse. Gjennom denne oppgaven, de tre obligatoriske innleveringene og kurset i sin helhet, har jeg l?rt en hel del om lydproduksjon og lyd generelt, som er veldig kjekt ? ha med seg videre for en som daglig driver med musikk. Gjennom s?rlig denne oppgaven, som har tatt for seg akkorder spesifikt, har jeg f?tt god innsikt i hvordan for eksempel toner med ulike svingninger reagerer p? hverandre og hvordan lyd kan programmeres fra ? v?re en tynn, liten sinustone til ? bli en rik og fyldig akkord. For min del begynte hele dette Pd-eventyret med et snev av panikk, men gjennom arbeid l?rer man, og jeg begynner ? forst? s?pass at det kan v?re g?y. Selvom Pure Data og MobMuPlat kanskje ikke er noen satsningsomr?der i mitt tilfelle, er det en god egenskap ? kunne bruke slike verkt?y.

Jeg vil ogs? rette en takk til:


Kristian Nymoen, fagl?rer, for all hjelp underveis
&
Alexander Refsum Jensenius, for instruksjonsvideoer p? YouTube.

Frekvens-tabell: (som nevnt i oppgaven)
http://www.phy.mtu.edu/~suits/notefreqs.html

MUS2830 Interaktiv musikk
André Blaaflat
Universitetet i Oslo, 2013.