Materiale

https://www.dropbox.com/sh/8fj7tbsptsr4o3m/AAC-vOieESPXEzZkv-CAvzDwa?dl=0

Dropbox lenken inneholder en samling med mapper med ulike pd moduler, hjelpefiler og mobmuplat filer som vi går igjennom på samlingene.

Fler eksempler blir lastet opp fortløpende, så greit å synkronisere denne mappen

Lenker

Her er en samling lenker med både tutorials og tips. Det er alltid fint å bruke disse dersom en lurer på noe eller har et problem. Ellers så kan dere selvsagt sende meg en epost også!

Husk at det også er en fin hjelpefunksjon i Pd i menylinjen (både dokumentasjon og gjennomgang av patcher fra Miller Puckette, hovedutvikleren). For å se informasjon og hjelp om ulike objekter i PD, høyreklikk i et tomt område i en patch (åpner en referanseliste over objekter) eller høyreklikk på et objekt for å se hjelpefil for objektet.

Et veldig bra sted å begynne er å se litt på videoene til Dr. Rafael Hernandez:

Komponist Johannes Kreidler har skrevet en forholdsvis lettlest og svært bra nettbasert bok om programmering i PD. Programming Electronic Music in Pd

flossmanuals.net har bra og oversiktlig referanser og tutorials http://en.flossmanuals.net/pure-data/

Boken til mannen bak Pd, Miller Puckette, : The Theory and Technique of Electronic Music Grundig om teoretiske aspekter.

pd forumet er også svært aktivt. I tillegg til et hav av informasjon er heller ingen spørsmål for dumme

Introduksjon

Den demokratisering av teknologi, kunnskap og informasjon som har foregått i løpet av de siste tiårene har gitt opphav til større aktivitet og bredere utforskning av estetisk og performativ praksis. I tillegg har miniatyrisering av teknologi, kostnadsreduksjon, regnekraft og tilgjengelighet  ført til at små og mobile enheter, med kraftig CPU, innebygde sensorer, trådløs teknologi og programvare, åpnet opp for en rekke interessante metoder for interaksjon og en kreativ utnyttelse i musikalske sammenhenger.

Vi skal i dette kurset ta sikte på å utforske de kunstneriske og musikalske potensialene som ligger i denne teknologien med et fokus på mobile og nettbaserte enheter for iOS og Android.

Fokuset ligger ikke i det å lære å programmere fra bunn av,  men det kan være greit at man kan litt fra før (som f.eks Max e.l).  Det sentrale her er at en tar i bruk og utforsker de mulighetene man har både kunstnerisk og teknologisk.

Det vil være en del ferdige moduler man kan “sy-sammen” slik at en skal slippe å bruke alt for mye tid på bare programmering. Men det er selvsagt helt nødvendig å programmere noe! Nødvendig informasjon vil bli gitt både i samlinger, på denne siden samt via en god del lenker (som f.eks tutorials videoer, nettsider og pdf) fra eksterne kilder.

Mål:

  • Produsere egne personlige mobile instrumenter/verktøy for bruk i live-sammenheng, lyd-installasjoner,produksjon og komposisjon. Utforskning av estetisk og performativ praksis.
  • Musikkteknologisk begrepsapparat og god forståelse av de lydgenerende/ bearbeidene prosesser samt refleksjon over egen programmering.
  • Å tenke kreativt, “å se” musikalske og kunsteriske potensialer i den spesifikke teknologien.

Nettbasert med samlinger: 4 samlinger (2 høst 2 vår)

Oppgaveinnleveringer, delt inn i 6 øvelser og ett større kunstnerisk arbeid.

Eksempler på kunsteriske arbeider :

  • Utvikle en lydinstallasjon hvor f.eks GPS posisjonsdata fra en enhet har en direkte innvirkning på musikken. (kan være f.eks  en binaural “soundwalk” e.l )
  • Lydinstallasjon eller komposisjon hvor en enhet er koblet sammen med et annet objekt eller instrument hvor interaksjonen med objektet er musikalsk augmentert ( sensordata fra en enhet registrerer ulike bevegelser gjort på et instrument)
  • Egen avansert styreflate/MIDI kontroller el. InterApp-kommunikasjon verktøy.
  • Nettverksbasert komposisjon eller instrument, hvor en rekke enheter koblet sammen på et nettverk utgjør en algoritmisk komposisjon e.l
  • Verktøy for live-prosessering og bearbeiding.

Vi skal hovedsaklig bruke PD (PureData) som er et grafisk lydprogrammering miljø lignende Max, men som har den store fordelen ( i tillegg til gratis) at det kan kjøre på mobilen (iOS og Android) og nettbrett. PD kan tilogmed kjøre i en nettleser (WebPD)! Noe vi skal se litt på mot slutten av kurset.

Men for å bruke patcher laget i PD som vi kan så kjøre på iOS/Android, så må vi bruke en bridge; MobMuPlat (Mobile Music Platfom). Det er mulig å bruke patcher laget i PD uten MobmuPlat, ved å bruke libpd. (mobmuplat er laget ved hjelp av libpd)  Men dette krever en god del programmering i objective C/ Java. Noe som blir langt utenfor kursets omfang. Fordelen i tillegg til en noe mer optimalisering er at en kan da få det inn på AppStore eller GooglePlay og bli styrtrik…. Men vi holder oss til MobMuPlat.

lyddprog_oversikt.001

Fig1.Oversikt over lydprogrammering språk og plattformer. uthevet er det vi skal se på i kurset. (I tillegg skal vi se på NexusUI som er en nettbasert UI plattform hvor en kan lage ulike grafiske interface og styre t.eks PD patchen på mobilen fra web…

De to hovedverktøyene vi skal bruke er Pd og Mobmuplat (editor). Pd kommer i to versjoner: Vanilla og pd-extended. Vi skal kun bruke vanilla versjonen da det er kun denne som kan kjøre på iOS/Android (og web). Så dersom du har pd-extended installert fra før, pass på at du jobber i pd vanilla . Vanilla versjonen inneholder langt færre objekter, men det betyr ikke at det er noe dårligere men kun at en får ting litt mindre “gratis” og enkelte ting kan være noe mer tungvint i forhold til extended varianten.

Android eller iOS

Det er forskjeller på iOS og Android og det er en del ting som er langt bedre på iOS enn i Android når det gjelder lyd. iOS har en ganske lav latency mens Android (avhengig av hvilken versjon ) har langt høyere. (10-100ms) I tillegg er iOS og Appstore universet langt mer utviklet enn GooglePlay. Med applikasjoner som AudioBus på iOS kan vi og rute kreasjoner laget i Pd gjennom andre apper (effekter, andre synther, sende/motta MIDI, data og lyd mellom ulike applikasjoner i sanntid) Dette kan være svært spennende. Det er og mulig å kjøre det vi har laget i Pd på mobilen som en VST/AU plugin i DAWen hvor mobilen/iPaden fungerer som en DSP prosessor! (studiomux). AudioBus og StudioMux er applikasjoner på iOS som koster penger. På Android har vi en del mer begrensinger men ved å bruke Jack 2 Android (kompilere selv). så er det teknisk mulig. I tillegg er det på Android (avhengig av modellen) ulike sensorer som er tatt i bruk og som vi får tilgang til. Men Android har meget bra støtte for ekstern HID enheter (mus,tastatur,joystick i prinsippet alt som kan kjøre med USB). På begge systemer har vi tilgang til multikanals lydinput og output. og kan bruke eskterne lydkort (USB/CameraConnectionKit).

La oss komme igang, gå til 1. Puredata og MobmuPlat

 

1. Pure Data og Mobmuplat

Laste ned og installere på datamaskinen:

PD Vanilla for Mac   PD Vanilla for Windows

og Mobmuplat

Deretter må vi laste ned og installere mobmuplat for iOS eller Android

iOS (Appstore)  Android (GooglePlay)

Les instruksene på mobmuplat.com (les “Setup” )

Hvis alt er blitt installert riktig, kan du nå åpne pd.046.

Nå kan det være greit å se litt på lenkesamlingen, dersom du kan grunnleggende ting i PD fra før kan du gå videre til del 1b.

 

1.b Pure Data og MobMuPlat

Start mobmuplat på iOS/android og lek litt med de ulike eksemplene

På din datamaskin, se i mappen “MobMuPlatDistribution”, finn frem til mappen “Editor” og inn i mappene som er gjeldende for din maskin (Win,Linux->”Crossplatform” eller Mac->”OSXLionAndUp” . Start editoren. Vi kan starte med å se på eksempelet: “Hello Sine” som ligger i  “MobMuPlatDistribution/Patches. Her vil du se ulike .mmp og.pd filer.

.mmp er filer som kan åpnes i MobMuPlat editoren og .pd i PD.

Dobbeltklikk på MMPTutorial0.mmp

Åpne filen MMPTutorial0.pd i PD. ( for å få lyd i pd, aktiver DSP knappen, se også lenke siden for hvordan bruke pd)

pd_starthellosine

 

I MobMuPlat editoren, trykk på “lock” fanen (for å låse slik at vi ikke flytter på GUI

mobmuplatHelloSine

Dra så i slideren, ingenting skjer?

Det er fordi vi må ha noe som kan simulere en kommunikasjon mellom det vi gjør på mobilen/nettbrettet og patchen. For å simulere dette, naviger til mappen MobMuPlatDistribution og start PdWrapper.pd filen i PD. Det er viktig å ikke forandre noe i denne patchen, så du kan bare la den ligge i bakgrunnen ( minimisere f.eks). Hvis du nå beveger på slideren i mobmuplat editoren så skal du ha lyd!

Du vil også se at et tall kommer inn i pd MMPTutorial0.pd patchen under “route/mySlider”

Og i editoren i Messages feltet: en rekke beskjeder [out] /mySlider etterfulgt av tall.

GUien i Editoren sender altså ut beskjeder som pd patchen mottar, dette er i bunn og grunn nettverksbeskjeder (OSC) som er kommunikasjonsprotokollen mellom mobil/nettbrett og pdpatchen når den kjører på en enhet.

Gå tilbake til MobMuPlat Editoren og trykk på taben: “Prop”, trykk på slideren. Her kan du se at den har en adresse /mySlider og en slider range, la oss forandre på denne til 20 og gi den f.eks en annen farge.

hellosine-change

Lag en slider til ved å gå til Add og trykk på slider, plasser den et passende sted og gi den er range på 2, noe som betyr at den sender ut flytverdier mellom 0. og 1. Gi den også en annen adresse f.eks /mySlider2

hellosine-change2

Modifiser også pd patchen til følgende ( en klassisk AM/Ring modulasjon):

hellosine-changePD2

Lag en mappe på disken som f.eks kan kalle Mobmuplat-tester.

I pd, saven patchen under et annet navn som f.eks min-test.pd, lagre den i din nye mappe.

I Mobmuplat Editoren, gå til “Doc” tabben og under Main Pd File, velg den pd patchen du akkurat lagret, slik at det står min-test.pd, Gi også ett nytt navn i Mobmuplateditoren ved å gå i menyen å velg Dupliser/Duplicate, velg Save, gi den et nytt navn f.eks min-test.mmp (viktig at extension .mmp er med) Lagre den i din nyopprettede mappe. Da skal du i mappen ha to filer, en pd fil og en mmp fil.

For å overføre dette til mobilen/nettbrett ditt så er det fler metoder (Se mobmuplat readme filen i mobmuPlatDistribution mappen) men den enkleste metoden er å markere begge to, lage en zip(komprimere) fil ut av de og sende dette til deg selv på epost.

Når du så går på mobilen/nettbrettet ditt å åpner zip filen du har sendt til deg selv skal denne åpnes i MobMuPlat på din Mobil/nettbrett og den pakker automatisk ut alt innhold.

I oversikten skal du nå finne min-test.mmp. Trykk på den Voila! Ditt første instrument!

Ok ikke så veldig spennende kanskje, men dette er slik arbeidsflyten og metoden er for å lage: GUI, Patcher og overføre til enhet.

Oppsummering:

  • Editere i MobmuPlat Editor, navn på GUI objekter har alltid ett navn/adresse som starter med /
  • Patche i PD , route ut beskjedene fra Mobmuplat slik at de styrer lyden.
  • Husk å ha pdwrapper.pd åpnet i PD nå du skal teste ut simulering av hvordan det vil låte.

Gå nå til Oppgave 1:

Etter du har gjort denne og sendt den inn, kan du gå videre til litt mer avansert stoff!

Oppgave 1

Basert på det første du gjorde av modifisiering av tutorial 0, skal du nå ta vekk den ene frekvensoscillatoren og alle pd_starthellosinebeskjeder til denne, sett inn inn-lyd istedet (adc~ objektet) , lage en inngangsvolum og koble dette sammen på den samme måte som den forrige oscillatoren var koblet sammen med AM modulasjonen. Du beholder med andre ord (AM modulasjonen) men legger til inn-lyd. Altså en ring modulasjon på mikrofon input. (Husk å bruk headset eller får du feedback!!!)

Markert del skal vekk og erstattes med adc~og en gain kontroll *~
Markert del skal vekk og erstattes med adc~og en gain kontroll *~
  • Lag en adc~, behold AM oscillator delen som du allerede har laget.
  • Lag et ekstra *~ objekt som du setter under adc~ og kobler sammen, adc~  utgang skal gå til venstre inngang på *~ (da har du gain kontroll på input)
  • I mobmuplat forandrer du verdien fra 20 til 2 i /mySlider slik at du får verdier mellom 0-1 I PD tar du denne tar ut fra /mySlider å kobler på gaindelen (høyre inngang på *~).
  • Koble sammen med AM delen.
  • Lagre i PD og mobmuplat og send besvarelsen til meg.

2.Pure Data og MobMuplat

  1. Last ned mappen i Materiale
  2. Strukturen i kursmateriale mappen er delt inn i: #mobmuplat-dokumenter, #moduler, #samples og en template.pd fil. Åpne template.pd filen i PD.
  3. Her ser du en oversikt over hvordan kommunikasjon fra og til mobmuplat og PD gjøres og også da samtidig mobil<->PD når den kjører på en mobilenhet. Du ser også en oversikt over modulene som er tilgjengelig (klikk på pd moduler objektet).

    Oversikttemplate
    Oversikt over input og output, det er fler muligheter her som ikke listet opp, se også mobmuplat dok eller eksempelfilene.  Oversikten gir et bilde på hvordan en skal sette de opp ikke alle funksjonalitetene.

Modulene:

Her er oversikt over moduler, du kan lage dine egne selvsagt i pd med ting som låter enda mer spennende en de som er her, men modulene her gjør at du kommer raskt igang uten å måtte patche veldig mye. For bra eksempler på patcher som du evt. kan modifiserer selv og ta inn, se help i PD og browse
Her er oversikt over moduler, du kan selvsagt lage dine egne i PD med ting som låter enda mer spennende, men modulene her gjør at du kommer raskt igang uten å måtte patche veldig mye. For bra eksempler på patcher som du kan ta utgangspunkt i .se help menyen i PD (browse)

Alle modulene har en hjelpefil, høyreklikk på modulene og velg “help” for en forklaring og eksempel på bruk. Ett tips er å copy/paste fra disse.Vi skal komme tilbake til det å lage noe fra skrætsj ved hjelp av modulene men da det er noen ting vi må passe på å gjøre, men la oss nå få litt lyd igjen!

4. I kursmateriale mappen, gå til mobmuplat-dokumenter og send zip filen FM1.zip på epost til mobilen eller iPaden din. I epost programmet på mobilen/iPaden trykk å hold på vedlegget, velg så at den skal åpne i MobMuPlat. I MobMuPlat trykk på info tegnet og velg FM1.mmp

Den ser sånn ut:fmmob

Prøv den ut litt, prøv først med Mod og Carrier sliderene veldig lavt nede, se så hva du kan klare å vri ut av lyder, prøv ut ulike innstillinger, bruk antall fingre ( multitouch ) osv.

Dette instrumentet består av 3 FM synther som hver for seg er en enkel “FM” syntese med to oscillatorer, med felles modulasjon, carrier og en reverb modul. Men det som er interessant her er hvordan vi kontrollerer denne.

La oss nå åpne FM1 i MobMuPlat editoren og i PD:

Pakk ut FM1.zip filen og dobbeltklikk på .mmp filen da åpner filen i mobmuplat, åpne FM1-mobmu.pd i PD. Hvis vi først ser i MobMuPlat editoren så skal den slik ut:

fm mobmu1a
Det er ikke sikkert dere har et sånt grid, det kan være praktisk å ha nå og senere så klikke på Layout Grid og sett x10 y10 så får dere et rutenett som “snapper” GUI på plass.

Her har vi en styreflate og tre parametere, Styreflaten er multitouch objektet dvs. den sender ut x og y pr finger. Mod. slideren bestemmer modulasjonsfrekvensen og Carrier som setter Carrier frekvensen, DW er dry-wet kontroll som setter mengden av reverb. Hvis vi trykker på Lock så kan vi se hva styreflaten sender ut, jeg har kalt styreflaten /XY, den sender ut en touch beskjed etterfulgt av fire tall, /XY touch 1 1 0.161 0.667, fm mobmu

Hva betyr dette og hvordan styres FM synthen egentlig?

Åpne patchen i PD:

fm

Ut ifra GUI så tar vi ut de beskjedene vi vil ha ut med route, som foreksempel /XY som er multitouchstyreflaten, deretter må vi ta ut det som kommer med touch beskjeden ved hjelp av route-objektet, dette er fordi den også sender ut andre beskjeder i tillegg til “touch” og disse er vi ikke interessert i her. Deretter ruter vi ut 1 2 3, dette betyr finger IDen, altså i dette tilfellet er det maks 3 fingre. Etter dette sitter vi igjen med 3 tall som jeg “pakker” ut, det første er en integer eller heltall, og de to andre flytall. Det første tallet heltallet, er bare 1 eller 0, altså fingeren på eller av, de to neste er x aksen og y aksen. Så hva går heltallet, x aksen og y aksen til?

Hvis vi høyreklikker og åpner hjelppatchen (help) på en FM1 synthene så kan vi se hva slags parametere vi styrer.

fm-help

Vi ser at heltallet eller 0/1 ( finger av/på) skrur av på da den går til den første inngangen. x-aksen styrer frekvensen (andre inngang) og y-aksen styrer index frekvensen til synthen (tredje inngang)

Dersom vi ser hvor /mod og /carrier er routet fra GUI ser vi at de styrer de tre fm synthene med felles modulasjonfrekvens og carrier frekvens. /DW styrer dry-wet kontrollen til slutt.

Du kan nå gå igang med Oppgave 2.

Oppgave 2

Basert på det vi gikk igjennom i FM1 multitouch instrumentet kan du nå lage en patch hvor du bruker en enkel lydavspiller pr finger(!) Bruk copy /paste fra FM1 eksempelet og erstatt FM1 synthene med simpleplayer (du finner den i moduler, se på hjelpe filen å bruke copy paste.

NB for å legge inn dine egne lydfiler må de ligge i en egen mappe som vi kan kalle samples (samme mappe som patchen!)  Dette gjelder også modulene (Du kan kopiere moduler mappen inn i samme mappe som patchen). Lag et objekt som heter: declare -path ./samples og et objekt som heter declare -path ./moduler (Se template.pd filen i kursmateriale, du kan bare kopiere derfra inn i din egen patch).

Slik skal mappestrukturen se ut i alle oppgaver

Slik skal mappestrukturen se ut i alle oppgaver

Ett lite hint! Utifra fingerID som gir 0 eller 1 (finger av på) kan du bruke route 0 1 objektet i PD for a rute 0 til stop og 1 til start i simpleplayer.

x-aksen og y-aksen kan vi mappe til noen effekter, se i moduler hvilke du kan tenke deg å bruke og lag en enkel mapping legg effekten etter simpleplayer.

  • Copy/Paste  fra FM1 eksempelet i et nytt dokument (husk å kopier declare -path ./moduler objekt) Ta vekk fm1 synthen og bruk en simpleplayer istedet, Velg tre ulike lydfiler for hver finger.
  • Velge effekter til hver simpleplayer (samme eller ulike) å styr disse med x og y aksene.
  • Du kan og ta vekk /mod og /carrier i både mobmuplat og PD.
  • Lagre og send besvarelse til meg.

Oppgave 3

I denne oppgaven skal du lage noe som lager lyd basert på bruken av fler av de innebygde sensorer. Før du går igang med denne oppgaven er det lurt å bruke litt tid på å se på MobMuPlat eksemplene som følger med: MMPTutorial3-Hardware og MMPExamples-Motion. Du finner disse på datamaskinen som .mmp filer og pd filer under mappen: MobMuPlatDistribution/Patches. Her må du nok bruke litt tid på å tenke ut hva du skal mappe det til av moduler eller lignende, men også skalering av sensor data, bruk gjerne copy/paste fra eksemplene inn i ditt egen patch som et utgangspunkt. Et lite hint på hvordan sette opp er her:

Viser skalering av tilt sensor (-1 til 1 blir omgjort til 0 -1, og gyro -pi til pi omgjort til 0-1)
Viser skalering av tilt sensor (-1 til 1 blir omgjort til 0 -1, og gyro -pi til pi omgjort til 0-1) eksempel.pd
  • Se over eksempler som følger med mobmuplat og studer.
  • Lag et oppsett hvor du henter ut sensor data
  • Map/koble disse til noe lydproduserende, kan være effekter på samples , ulike prosesseringer av live input lyd eller ulike kombinasjer. Tenk over hvordan du vil styre det i forhold til hva som er praktisk, samtidig som det kan låte interessant. NB husk at selv enkle ting kan bli langt mer komplekst og interessant så fort man lager en bra mapping.
  • Mappe struktur med declare -path ./moduler og declare -path ./samples objekter i patchen (se template.pd i kursmateriale).
Slik skal mappestrukturen se ut
Slik skal mappestrukturen se ut