DA5201: Musikprogrammering och mobil ljuddesign 15 högskolepoäng David Yanagisawa, Anders-Petter Andersson
Översikt Vem vi är Vad är Musikprogrammering och mobil ljuddesign? Hur vi gör i kursen Innehåll och kurslitteratur Verktyg
Vem vi är David Yanagisawa DA5201: Kursansvarig, lärare i ljudprogrammering och ljuddesign sedan jan 2010 Programspråk: C/C++, C#, Java, Objective-C Senior System Developer at Milso AB (Stockholm/Lund) Driver företaget Noteon (konsultuppdrag och iPhone-appar) Kompositör, http://www.myspace.com/impromptudreams Spelar piano
Vem vi är Anders-Petter Andersson DA5201: Musikteknologi, haandledare i interaktivljuddesignprojekt, ”Soundscape for Airports” (BRIO), Arduino Lärare Interaktiv ljuddesign på HKr Musikvetenskap, musikteknologi, musik och hälsa, interaktiv musikkomposition Ljuddesigner i MusicalFieldsForever.com www.musicalfieldsforever.com Exempel på projekt: Orfi, Strainings, RHYME.no Spelar vilolin
Vad är Musikprogrammering och mobil ljuddesign? Behövs till: musik, musikinstrument, datorspel, mobila tjänster, interaktiva installationer, maskin/männsika-interaktion i samhället (tv, telekom, fordon, musik o hälsa, etc.) Efterfrågas ljud som är: interaktiva, dynamiska, taktila, multimediala Sensorik: hur man kan förnimma ljud, vad man kan göra kopplat till ljud
Vad är Musikprogrammering och mobil ljuddesign? Intelligenta musikinstrument och kompositionsverktyg Nyskapande musik: algoritmisk komposition, mikrotonalitet, fraktalmusik, självgenererande musik Ljudmotorer till datorspel Hybrider mellan musikinstrument och dataspel Sociala medier (t.ex. Appar, hemsjukvård, nike) Interaktiva musikinstallationer: MusicalFieldsForever, Strainings (wave regler + granularsyntes trumpet, Max/MSP), Orfi (JAZZ wave, MINI regler, GLCH regler, SuperCollider), VOXX regler inspelning + syntes)
Varför det är intressant med musikprogrammering Interaktiv dynamisk ljuddesign Estetiska och interaktiva möjligheter pga. ny teknologi Från: automatiska, stationära och statiska system Till: interaktiva, mobila, dynamiska, nätverkade, bruk & förändring över tid
Varför det är intressant med musikprogrammering Interaktiv dynamisk ljuddesign Flexiblare Från: statiska ljudfiler, linjär komposition, in- och uppspelning Till: oändlig variation, physical modelling av ljud, icke-linjär komposition, uppspelning som styrs av algoritmer, regler Ex. Morpheus, Brian Eno (KoanX), Reactable, Altair (http://www.hgf-synthesizer.de/)
Varför det är intressant med musikprogrammering Interaktiv dynamisk ljuddesign Rikare upplevelser Från: ljud som statiska signaler Till: musik med variation och motiverande utveckling över tid Till: berättande, spelbarhet/gameplay Till: spel, interaktiv konst, multimedia, interaktiv ljuddesign, Till: mobila sociala medier som förändrar sig med interaktion ex. TAT mobila tjänster, SonyEricsson
Varför det är intressant med musikprogrammering Algoritmisk komposition Random, interaktion, blackbox Nick Collins, Electronic Music (sid. 107-125) Mozarts Musikalisches Würfelspiel (Musikaliskt tärningsspel) Komponium, kompositionsmaskin a la 1821 John Cages kompositionstekniker byggde mycket på I Ching (en gammal klassisk kinesisk text om att ändra händelser)
Varför det är intressant med musikprogrammering Algoritmisk komposition Programmering för interaktion med ljud (leksaker, BRIO) Mobil, Tangible User Interface (TUI) Lärande system och Machine Listening (Nick Collins)
Hur vi gör Musikprogrammering och mobil ljuddesign Föreläsningar Övningar Labbar Presentationer Projektarbete Kommentera varandras Lab, Övn, Pres. på forum!
Hur vi gör Musikprogrammering och mobil ljuddesign Föreläsningar Fem övningar (4hp) Sju laborationer (5hp) För alla laborationer gäller: obligatorisk närvaro inlämningsuppgift (dvs. källkod samt skriftlig redovisning) individuellt arbete (även om en laboration görs i grupp så lämnar var och en in sin egen redovisning/källkod) Ett projekt (6hp) Interaktivt musikinstrument i openFrameworks
Hur vi gör Musikprogrammering och mobil ljuddesign Lab 0 Interaktiv musikkomposition (BRIO)
Hur vi gör Musikprogrammering och mobil ljuddesign Lab 1 Grundläggande ljudprogrammering i C Hantera ljudfiler, ljudformat, manipulera amplitud, normalisera, RMS nivå brytpunktfiler, envelopper Bibliotek: portSF eller libsndfile GNUplot
Hur vi gör Musikprogrammering och mobil ljuddesign Lab 2 Implementera en table-lookup oscillator Linjär interpolering Sinus, fyrkant, sågtand och triangel Wavetable-syntes Fourier-syntes
Hur vi gör Musikprogrammering och mobil ljuddesign Lab 3 Ljudströmmar och callbacks Synteser: FM, PM, AM, RM Brytpunktsfiler: envelopper för amplitud och panorering ev. surround 5.1 Bibliotek: portAudio
Hur vi gör Musikprogrammering och mobil ljuddesign Lab 4 C++ Installera CodeBlocks och openFrameworks audioRequested() audioReceived()
Hur vi gör Musikprogrammering och mobil ljuddesign Lab 5 C++ med openFrameworks Översätta C-kod till C++ klasser Lägga till och använda olika open source-bibliotek: STK, SndObject, RtMidi, portMidi, openAL, STL, m.fl.
Hur vi gör Musikprogrammering och mobil ljuddesign Lab 6 openFrameworks TCP/UDP, sockets, streamning audio TouchOSC (iPhone/android) reacTIVision (motion tracking)
Projektarbete (6hp) Implementering av interaktivt musikinstrument i openFrameworks Olika synteser och effekter som kan kontrolleras externt med Arduino (med olika sensorer inkopplade) Videokamera Gamepad, OSC/MIDI-kontroller el. likande
openFrameworks + Ett mycket kraftfullt verktyg (3D grafik, video, audio, ...) + Gör det enklare och roligare att lära sig programmera i C++ + Skapat för att understöda kreativiteten + Liknar Processing (+ setup(), draw(), libraries, …) + Open Source + Bygger på flera välkända Open Source bibliotek + RtAudio, openGL, freeTyp, freeImage, m.fl. + Nya funktioner kan läggas till med ”addons” + ofxSimpleGui, ofxMidi, m.fl.
openFrameworks + Cross-platform + Windows, Mac, Linux + Xcode, CodeBlocks, Visual C++ + Skapa fristående applikationer + Utveckla för iPhone + ofxiphone + Ett bra sätt att lära sig programmera DSP och audio i C/C++ + Integrera med STK (The Synthesis Toolkit in C++) + Förena audio och visual
openFrameworks Varför lära sig C/C++? + Ett mycket kraftfullt språk + Betydligt snabbare program än Java-program + Används på professionell nivå bland audioutvecklare + SuperCollider, Max/MSP och andra är byggda med C/C++ + Behövs kunskap i C/C++ om man vill skapa egna ljudapplikationer + VSTi (Steinberg) + Audio Units (Apple) + Max/MSP externals + SuperCollider plugins + iPhone (Objective-C)
Sammanfattning av kursens innehåll Introduktion till C med inriktning på ljudprogrammering Introduktion till C++ med OF och utvecklingsmiljön Code::Blocks/Xcode Programmeringsövningar och laborationer i C och C++ Design av ljud och effekter som kan användas i studioarbete och live Uppbyggnad av ljud från grunden additiv syntes, modulation, ADSR-envelope, m.m. Design av egna klasser i C++ Användning av open source-bibliotek för ljud (C/C++) Implementering av interaktivt musikinstrument i oF
Utrustning och verktyg Kurssida på Moodle med Forum (all kommunikation) Ljudlabb (H8g80c) Cubase 5 Mixer Ljudkort, Presonus Firepod Aktiva högtalare, 5.1 surround Mikrofoner MIDI keyboard
Teori Kurslitteratur Boulanger, Richard & Lazzarini, Victor. (2011) The Audio Progamming Book. Mit Press. ISBN 9780262014465 Noble, Joshua. (2009) Programming Interactivity. O'Reilly Media. ISBN 9780596154141 Collins, Nick. (2008) The Cambridge Companion to Electronic Music. Cambridge University Press. ISBN 0521688655 Roads, Curtis. (1996) The Computer Music Tutorial. Mit Press. ISBN 0262680823 Jägerskogh, Arild. (1998) Massmedieljudets villkor, Praktiska principer för professionell balansering och avvägning av ljud. Anmärkning: Beställes genom kursansvarig