Zwermgedrag als muzikale inspiratie
Fedde ten Berge Instituut voor Sonologie 2009
Ik wil Kees Tazelaar en Raviv Ganchrow bedanken voor hun begeleiding bij het ontwikkelen van mijn muzikale ideeën en Peter Pabon voor het delen van zijn praktische alsmede theoretische inzichten. Luc van Weelden wil ik danken voor zijn feedback op de ontwikkeling van mijn software en voor de geweldige samenwerking bij het bouwen van onze A.I. Lego Robots. Wouter Snoei voor de hulp bij het gebruiken van het ‘Game of Life’ golfveld synthese systeem en voor de tips die hij heeft gegeven voor het ontwikkelen van mijn software. Mijn ouders voor de eindeloze steun gedurende mijn studie.
2
Samenvatting Deze scriptie laat zien hoe het fenomeen ‘zwermgedrag’ uit de fysieke werkelijkheid als inspiratiebron heeft gediend voor de totstandbrenging van compositie-software voor het golfveldsynthese (GVS)-systeem van de stichting ‘Game of Life’ (GoL).
De eerste drie hoofdstukken hebben een theoretisch karakter. Daarin worden eerst
impulsen en bewegingsprocessen besproken als de belangrijkste basisbouwstenen voor de ontwikkeling van deze software en wordt vervolgens het fenomeen ‘zwermintelligentie’ theoretisch geïntroduceerd. Het laatste en langste hoofdstuk is gewijd aan de praktijk. Voortbouwend op de theoretische hoofdstukken wordt daarin de ontwikkeling van bewegingsalgoritmes en klankobjecten toegelicht, waarmee materiaal kan worden gegenereerd voor klankcomposities die binnen het GVS-syteem, maar ook met andere geluidsreproduktie systemen ten gehore kunnen worden gebracht. Enerzijds is voortgebouwd op werk van anderen, anderzijds zijn door mijzelf ontwikkelde toepassingen toegelicht.
De belangrijkste conclusie is dat het mogelijk is gebleken om op basis van een theo-
retische en praktische doordenking van zwermbewegingen een ‘tool’ te ontwikkelen met rijke en dynamische mogelijkheden voor het creëren van klanklandschappen met een fascinerende steeds wisselende coherentie. Tevens is uiteengezet hoe de grafische gebruikersinterface voor GVS van de GoL in staat stelt om de gegenereerde bewegingstrajecten te kunnen reproduceren binnen grote ruimtes. Hoewel er voor de toekomst nog het nodige te wensen over blijft, is daarmee een aanzet gegeven voor de verdere ontwikkeling van een door de fysieke werkelijkheid geïnspireerde driedimensionale vormgeving van elektronische muziek.
3
Inhoudsopgave 1. Inleiding................................................................................................
6
2. Impulsen...............................................................................................
7
2.1 Van punt naar impuls...................................................................
7
2.2 Historisch perspectief...................................................................
9
2.3 Technische aspecten....................................................................
11
2.4 Series van impulsen.....................................................................
12
2.5 Events........................................................................................
13
3. Beweging................................................................................................
14
3.1 Lineaire bewegingsprocessen.........................................................
14
3.2 Niet-lineaire bewegingsprocessen...................................................
16
4. Zwerm-intelligentie.................................................................................
17
18
4.1 Sociale Insecten..........................................................................
4.1.1 Principe.........................................................................
18
4.1.2 Algoritmische beschrijving...............................................
19
4.2 Zwermen, kuddes en scholen........................................................
20
4.2.1 Principe.........................................................................
20
4.2.2 Model omschrijving.........................................................
21
5. De zwerm-compositiesoftware..................................................................
24
5.1 De hardware-setup......................................................................
25
5.2 De Graphic User Interface............................................................
27
5.3 De bewegingsalgoritmes..............................................................
29
5.3.1 ‘Wolk’ ..........................................................................
30
5.3.2 ‘Herder en schaapjes’......................................................
33
5.4 ‘Wolk’ & ‘Herder en schaapjes’ ontmoeten de GoL PathEditor.............
37
5.4.1 GoL GVS interface..........................................................
37
5.4.1.1 Controls............................................................
37
5.4.1.2 Score Editor.......................................................
37
5.4.1.3 Path Editor.........................................................
38
5.4.2 GoL GVS XML Formaat.....................................................
39
4
5.4.3 GoL GVS Path Generator in Cycling ‘74 Max............................................
40
5.4.3.1 2DGrid..............................................................
42
5.4.3.2 sizeDurAttributeGen ...........................................
43
5.4.3.3 pathElement.......................................................
44
5.5 Analyse van de bewegingsdata.......................................................
45
5.5.1 Snelheid.........................................................................
46
5.5.2 Relatieve stuurrichting......................................................
46
5.5.3 Kromming.......................................................................
47
5.5.4 Afstand..........................................................................
47
5.6 Het genereren van de audio...........................................................
48
5.6.1 Gefilterde laagfrequente ruis-generator...............................
49
5.6.2 Stofruis producerende generator........................................
51
5.6.3 Physical Modeling.............................................................
52
5.6.3.1 Klankmodel 1......................................................
53
5.6.3.2 Klankmodel 2......................................................
55
5.6.3.3 Klankmodel 3......................................................
56
6. Conclusie................................................................................................
58
Gebruikte literatuur .....................................................................................
59
5
1. Inleiding
De ontwikkeling van geluidsreproductie zonder ‘sweet-spot’-beperkingen door middel van golfveldsynthese (GVS), waarvan de theorie voor het eerst in 1988 uiteengezet werd door de Nederlandse natuurkundige Guus Berkhout1, opende nieuwe perspectieven voor het componeren van elektronische muziek. In mijn afstudeerscriptie voor de opleiding Audiodesign van de Hogeschool voor de Kunsten in Hilversum in 2007 ben ik ingegaan op de achtergronden van de ontwikkeling en op de specifieke kenmerken van GVS. In deze scriptie voor de masteropleiding Sonologie van het Koninklijk Haags Conservatorium staat ruimtelijk elektronisch componeren voor het GVS-systeem van de Game of Life-stichting centraal. Concreet is onderzocht welke mogelijkheden het intrigerende fenomeen van ‘zwermgedrag’ biedt als inspiratiebron voor het tot stand brengen van een compositie-software voor GVS.
De eerste drie hoofdstukken hebben een theoretisch karakter. In hoofdstuk 2 en 3
worden impulsen en bewegingsprocessen besproken als de belangrijkste basisbouwstenen voor de ontwikkeling van deze software. In hoofdstuk 4 wordt het fenomeen ‘zwermintelligentie’ theoretisch geïntroduceerd. Het laatste en langste hoofdstuk 5 is gewijd aan de praktijk. Voortbouwend op de theoretische hoofdstukken wordt daarin de ontwikkeling van bewegingsalgoritmes en klankobjecten toegelicht. Er wordt uiteengezet hoe op basis daarvan klankmateriaal kan worden gegenereerd, waarmee composities kunnen worden gerealiseerd die binnen een reproduktie systeem voor ruimtelijk geluid ten gehoren kunnen worden gebracht.
Er zal in deze scriptie enerzijds aandacht worden besteed aan en voortgebouwd
worden op ideeën en uitwerkingen van anderen, anderzijds zullen door mijzelf ontwikkelde toepassingen zo nauwkeurig mogelijk worden toegelicht. In de conclusie zal worden ingegaan op implicaties, problemen en mogelijkheden voor de toekomst.
1
Journal of the Audio Engineering Society 36 No. 12, (1988)
6
2. Impulsen Dit hoofdstuk is gebaseerd op het idee dat impulsen de kleinste basiseenheid vormen voor het componeren van elektronische muziek. Er zal worden ingegaan op de impuls, in de muziek ook wel aangeduid als de puls, in vergelijking met de punt en de noot. De impuls is voor de elektronische muziek wat de punt is voor de wiskunde, en de noot voor de traditionele muziek. Er wordt aandacht besteed aan wat hier door anderen al over is gezegd, aan technische aspecten en aan het combineren van impulsen tot series en tot een ‘event’.
2.1 Van punt naar impuls De punt is niet alleen een basiselement uit de wiskunde. Hij vervult als symbool ook verschillende functies ter aanduiding van het begin of einde van een gebeurtenis. Op zichzelf staand heeft een punt als tekstsymbool geen betekenis, alleen een functie. In de traditionele muzieknotatie verlengt een punt een noot. In de orthografie wordt een punt gebruikt om het einde van een zin aan te duiden waardoor een tekst leesbaar wordt. Zo wordt het voor de lezer duidelijker hoe er geïntoneerd en waar er gepauzeerd moet worden. Een van de grondleggers van de Nederlandse elektronische muziek, de componist Dick Raaijmakers ziet voor de punt in de muziek echter ook een andere functie. Hij zegt in zijn boek ‘Cahier M’ in het hoofdstuk ‘De Ruimtelijke Klank’ over punten en noten het volgende: “De traditionele muziek wordt genoteerd in noten. Noten zijn symbolen met een eenduidig puntvormig karakter. In de praktijk worden noten aangevuld met accidenten, andersoortige tekens en korte verklarende woorden dan wel letters. Deze notatie voldoet maar is niet ideaal. Ideaal is een coherente muziek die uitsluitend met punten wordt uitgedrukt, ja zelfs uit punten bestaat en door het operatief betrekken van punten op punten tot stand wordt gebracht.” (Raaijmakers, CahierM, p. 94)
Punten zijn een hulpmiddel om een continuüm te articuleren en te structureren. De punt staat op zich zelf en heeft geen lengte, oppervlakte of volume en is dus nuldimensionaal. De enige functie van het plaatsen van een punt in de ruimte is het aanduiden van een positie. Vanuit deze positie kan in iedere richting een tweede punt worden geplaatst waartussen eventueel een continue lijn getrokken kan worden. Net als een punt heeft een impuls geen lengte, maar het verschil is dat een impuls wel energie kent. Binnen het kader van elektronisch componeren kan een impuls dus de functie van een punt vervullen zoals Raaijmakers dat bedoelt. 7
Bij traditionele muzieknotatie is het enige mogelijke continuüm het bereik van het instrument op de notenbalk. Met het positioneren van punten als noten op een notenbalk kunnen alleen toonhoogte en toonlengte worden aangeduid. Voor articuleren van het dynamisch continuüm worden deze noten aangevuld met aanduidende letters en woorden. Het ontbreekt aan een mogelijkheid om ook ruimtelijke positionering aan te duiden, terwijl daaraan tegenwoordig wel behoefte bestaat. Door hedendaagse componisten worden inmiddels pogingen gedaan om de ruimtelijke positionering van noten/klanken te transcriberen naar een notatie op de notenbalk. Een voorbeeld van een dergelijke poging is het NIKOLA project van de in Nederland werkzame componist Paul Oomen:
Figuur 1: Concept partituur indicatie voor ruimtelijk beweging en positionering van Paul Oomen.
Een impuls is niet identiek aan een punt. Hij deelt met een punt dat alles op een positie geconcentreerd is, maar heeft als extra dat hij ook een bepaalde energie grootheid aanduidt, een begin van beweging. Een impuls vormt geen continue horizontale lijn tussen twee punten. Een impuls is als het ware ‘verticaal’ , een soort naaldenprik. De impuls impliceert één bepaalde grootheid op één bepaald moment. Deze grootheid kan aan de hand van het systeem waarbinnen de impuls wordt gebruikt, gekoppeld worden aan verschillende variabelen. In de natuurwetenschappen wordt de impuls gezien als het product van massa en snelheid. In de muziek heeft de impuls niet alleen een aanzettende, 8
articulerende functie, maar hij kan ook bepalend gemaakt worden voor een toonhoogte evenals een tijdsduur of aanzet van een event. De grootte van de puls kan bijvoorbeeld in de elektronische muziek direct gekoppeld worden aan de frequentie van een oscillator of aan de lengte van een envelope generator. Hoewel de impuls an sich nog weinig muzikale betekenis heeft, heeft hij daardoor veelzijdige potentie. Bovendien hoeft de impuls niet perse binnen een tweedimensionaal vlak te worden gebruikt zoals dat voor noten binnen de notatie van traditionele muziek geldt, maar series van impulsen kunnen vrijelijk worden ingezet om punten en trajecten binnen een driedimensionale ruimte te articuleren.
Tot zover het voorkomen van de statische impuls en de meerdimensionale
functionaliteit ervan. Nu zal globaal worden ingegaan op de vraag waar en wanneer de fascinatie voor het gebruik van de impuls in de geschiedenis van de elektronische muziek tot stand is gekomen.
2.2 Historisch perspectief In 1877 kwam Thomas A. Edison met de fonograaf. De fonograaf kan, via één kanaal, op een in was gedoopte kartonnen cilinder geluid opnemen en afspelen. Emile Berliner vond in 1888 de eerste grammofoonplaat uit. Ongeveer gelijktijdig zorgde de ontwikkeling van de telefoon door Alexander G. Bell en Thomas A. Watson voor het ontstaan van de eerste elektronisch-akoestische transmissie. Deze ontwikkelingen vormden samen de basis voor het eerste elektronisch-akoestische systeem waarbij er over een afstand geluid opgenomen en afgespeeld kon worden. Met de introductie van de magnetische taperecorder werd het eind jaren ‘40, begin jaren ‘50 mogelijk om het opgenomen geluid te bewerken alvorens het voor reproductie vrij te geven.
In het compositorisch denken van de 20e eeuw ging het elektronisch
instrumentarium een steeds belangrijkere rol spelen. Omdat er door de componist efficiënt gewerkt moest kunnen worden resulteerde dit in de samenvoeging van deze technologische vondsten. Hiermee werden rond de jaren ‘50 elektronische muziekstudio’s ingericht. De minimale benodigdheden voor het maken van elektronische muziek bestaan uit een reproductieketen die in zijn meest basale vorm in figuur 2 schematisch wordt weergegeven. 1.1
1.2
2.
4.
3.
Figuur 2: Schematische weergave van geluidsreproduktie met een microfoon (1.1), een signaal generator (1.2), een signaalversterker (2.) een taperecorder (3.) en een versterkte luidspreker (4.) 9
De aandacht die het muziekleven aan het technisch instrumentarium gaf, heeft grote invloed gehad op het gebruik en de ontwikkeling ervan. Een belangrijk voorbeeld is de mogelijkheid die een taperecorder biedt om opgenomen geluid in een tussenliggende fase onder de loep te nemen en te kunnen bewerken. Hierdoor konden de klankmatige effecten van versnellen, vertragen, verkorten, verlengen en het omkeren (van achter naar voren afspelen) van geluid systematisch geëxploreerd gaan worden. Deze toen ontdekte functies van de taperecorder zijn vandaag de dag niet meer weg te denken uit onze digitale audio bewerkingssoftware. Er was in de vijftiger- en zestiger jaren van de vorige eeuw tevens een toenemende invloed op muzikanten en componisten vanuit de natuurwetenschappen. Dat geldt in het bijzonder voor Denis Gabor die de holografie en de granulaire synthese1 uitvond. Karlheinz Stockhausen formuleerde de synchroniciteit tussen de muziek-wetenschappelijke en andere wetenschappelijke ontwikkelingen in die periode als volgt: “There was similar thinking everywhere: reduction of the process of forming to the smallest possible element. When I use the word ‘forming’, I mean it in the sense of the crystallized result of the creative act, the form being just an instant in a process, and that was happening among scientists as well as artists, in the early fifties was that attention was increasingly focusing on the process.” (Stockhausen, Stockhausen On Music, p. 37)
Wat Stockhausen hier zegt is kenmerkend voor bepaalde theorieën die halverwege de 20e eeuw zijn ontwikkeld met betrekking tot het gebruik van de pulserende klank als fundamentele bouwsteen voor vorm in muziek. Eind jaren ‘50 ontwikkelde Karel Goeyvaerts in samenwerking met Karlheinz Stockhausen de punt muziek. Vanaf eind jaren ‘50 was Dick Raaijmakers bezig met een morfologisch klank onderzoek naar het kleinste geluid. Deze determinerende benaderingen van compositie hebben veel inzicht opgeleverd over de essentie van elektronische muziek.
1
Iannis Xenakis ontdekte gelijktijdig met Denis Gabor de ‘Granulaire Synthese’ techniek.
10
2.3 Technische aspecten Voor mijn eigen ruimtelijke compositieprincipe ga ik dus uit van de impuls als fundamentele bouwsteen om elektronische klankstructuren in de ruimte te kunnen opbouwen. In deze paragraaf behandel ik de technische aspecten van de impuls. Er wordt ingegaan op de eigenschappen van een impuls zoals die binnen de signaalverwerking gedefinieerd zijn en op de puur klankmatige aspecten van de impuls binnen de elektronische muziek. Binnen de analoge signaalverwerking is een impuls een aantoonbare gebeurtenis die zich in de meest ideale situatie voordoet als een oneindig korte stoot. Deze korte stoot, dit signaal, heeft een functie die een oneindig scherpe punt representeert: een functie waarbij alle waarden nul zijn behalve op x = 0, waar de waarde oneindig groot is, een oneindigheid die als het ware een bevroren stukje tijd moet voorstellen waarin alle bewegingsenergie zit opgeslagen. Deze theoretische impuls wordt de Dirac-puls genoemd. Hij dankt zijn naam aan de Britse theoretisch natuurkundige Paul Dirac. In de onderstaande figuur waarbij de x-as en de y-as respectievelijk de tijd en de amplitude representeren kan de Dirac-puls als volgt kan worden weergegeven:
0 Figuur 3: De Dirac-puls
Binnen de elektronische muziek gaat het er om dat de impuls een zeer kortstondige bijna kleurloze waarneembare uitbarsting van geluid is. De ideale Dirac-puls heeft een onmiddellijke transitie van nul naar plus en van plus naar nul in oneindig korte tijd. In de praktijk is dit verloop door fysieke limitaties van het systeem dat de impuls genereert onmogelijk. Het systeem heeft namelijk een bepaalde tijd nodig om van nul naar plus en weer van plus naar nul te komen. In een analoog elektronisch circuit dat de impuls genereert is deze aanloop- en teruglooptijd af te leiden van de elektrische capaciteit en inductie die daarin aanwezig zijn. Bij een digitale sample-bewerking kan de impuls in principe over 2 samples (aanlooptijd + teruglooptijd) gecreëerd worden. Dit levert bij een sample frequentie van 44.1kHz een sample interval van 0.0227ms op. De minimale impuls-lengte bij 441000 samples per seconde is dus 0.0454ms. Een dergelijk korte impuls is nauwelijks hoorbaar. De breedte van een impuls is dus het resultaat van de tijd die het signaal gebruikt om van nul naar plus en weer naar nul te komen. Deze breedte markeert ook de snelste beweging (hoogste frequentie = halve sample frequentie) die door een digitaal systeem weergegeven kan worden. 11
2.4 Series van impulsen Het componeren van impulsen kan geautomatiseerd worden. Daarvoor kan men gebruik maken van een impulsgenerator. Met deze machine kunnen dan series van impulsen worden gecomponeerd waarbinnen de dichtheid van het aantal impulsen per tijdselement gemoduleerd kan worden. De welbekende blokgolf oscillator is in staat series van brede impulsen te genereren over een constante frequentie die vooraf instelbaar is. Het tijdsverloop van 0 naar 1 en terug van de op zichzelf staande impuls krijgt dan grafisch de vorm van een rechthoek. De pulsbreedte die hierbij ontstaat is in principe af te leiden van de frequentie van de blokgolf. Bij een blokgolf van 5Hz duurt een periode 200ms. De pulsbreedte is dus 100ms. Deze tijdsduur van positieve fases van een blokgolf wordt ook wel de duty cycle genoemd.
Wanneer de nul-tijd of ‘negatieve tijd’ over meerdere periodes gelijk is aan de duty
cycle spreken we van een blokgolf. Niet elke periodieke serie van impulsen is een blokgolf. Wanneer de nul-tijd groter of kleiner is dan de duty cycle dan is de balans in de blokgolf doorbroken. De duty cycle bepaalt de rechthoekige breedte van de klinkende impuls. Er wordt door ons gehoor geen verschil waargenomen tussen de positieve en negatieve blokgolf-gerelateerde impuls van gelijke amplitude en pulsbreedte. Alleen in een visuele representatie van het signaal kan dit verschil worden weergegeven: De modulatie van de pulsbreedte wordt meestal in het Engels aangeduid als pulse width modulation, afgekort tot PWM. Door de tijdslengte tussen het 0 -> 1 moment en het 1 -> 0 moment constant te variëren, treedt er in het geluidsspectrum een eveneens constant variërende interfererende werking op. Het resultaat daarvan is dat de klankkleur en dus het karakter van de impuls verandert. Een impuls ontleent aan de blokgolf heeft een rechthoekig temporeel karakter. In de praktijk kan het temporele masker van de impuls elke vorm aannemen. Bovendien kunnen voor het genereren van series impulsen ook andere machines worden gebruikt. Zoals bijvoorbeeld een random pulsegenerator. Een variatie in klankkleur kan bovendien gerealiseerd worden door de impulsen te polijsten met behulp van filters. 50:50
ariatie duty/cycle v
Figuur 4: Duty Cycle variatie van een serie rechthoekige impulsen, wanneer de positieve fase gelijk is aan de negatieve fase is er sprake van een blokgolf.
12
2.5 Events In de voorafgaande paragrafen zijn de verschillen en overeenkomsten tussen punten en impulsen aan de orde geweest. Technische aspecten van de impuls en series van impulsen zijn beschreven. Dit is noodzakelijk voor het fundament van de compositorische strategie. De functionaliteit van opeenvolgende series van impulsen kan begrepen worden als een temporeel frame dat een bepaalde ruimte schept. De beoogde beweging die hierdoor gerepresenteerd moet gaan worden is te vergelijken met het diagram zoals Peter Eisenman dat in de architectuur gebruikt, maar dan met een dynamische, in de tijd voortdurend veranderende versie daarvan. Peter Eisenman hanteerde een diagram-methode waarbij de bouwgrond en de bouwwerken gedeconstrueerd worden tot een diagram. Dit diagram functioneert als basis voor het geometrische onderliggende principe van een bouwwerk. Deze diagram-methode is een weergave van het functionele ruimtelijk doel van een beoogde architectuur. De vorm waardoor het uiteindelijke bouwwerk gestalte gaat krijgen staat daarmee nog niet vast. Deze ruimte moet vervolgens nog bekleed worden met events. In de architectuur doen deze zich voor als trappen, deuren, pilaren, waardoor het gebouw pas daadwerkelijk kan gaan functioneren. De auditieve vorm van de event is het klankresultaat van een door impulsen geëxciteerd klankproducerend object.
13
3. Beweging De mogelijkheid om elektronische klanken te voorzien van bewegingen in een fysieke ruimte is een inspirerende gedachte. Een belangrijk uitgangspunt in deze scriptie is dat bewegende klanken in de fysieke ruimte waargenomen kunnen worden als akoestische representaties van fysieke gebeurtenissen. Het geluid van een paraderende carnavalsoptocht die aan een rij microfoons voorbij trekt, resulteert bijvoorbeeld in ‘een kakofonische sliert’. Het klankresultaat beweegt na opname niet meer, maar is de akoestische neerslag van de interactie tussen stilstaande objecten, in dit geval: de deelnemers aan de optocht en hun interacties. Zo’n klankresultaat kan worden gedeconstrueerd: neergeslagen interacties kunnen worden opgesplitst in een analyse van de samenhang tussen betrokken fysieke objecten en hun ‘beweegredenen’. De samenhang in de beweegredenen levert data die de onderliggende ruimtelijke structuur van klankresultaten beschrijft. Deze gedachten werden door mij ontwikkeld aan de hand van mijn geluidsopnamen van een carnavalsoptocht in februari 2009. Hier is een reproductie van gemaakt binnen het GVS-systeem van de ‘Game of Life’ in het kader van het Scheltema-Lakenhal project van Jeroen Doorenweerd. In dit hoofdstuk wordt een poging gedaan deze gedachten te formaliseren tot een systematische compositorische strategie.
3.1 Lineaire bewegingsprocessen Het willen beschrijven van de beweging van een fysiek object schept de vraag: ‘wat is beweging?’ De eenvoudigste vorm van beweging, de eenparige beweging, heeft een constante snelheid binnen één tijdsinterval en wordt daarom gemeten tussen twee punten. Een begintijd (t0) vanaf beginpunt (s0) naar een eindtijd (t1) op eindpunt (s1). Daar kan uit afgelezen worden hoe lang een constante beweging er over doet om zich te voltrekken. De registratie van een beweging kan worden geanalyseerd door bemonsteringen te nemen over het traject dat een beweging doorloopt. Door deze bemonsteringspunten operatief op elkaar te betrekken kan de beweging gereconstrueerd worden. Vervolgens moet de klank op een zelfde puntgewijze manier gerealiseerd worden. Op vergelijkbare wijze kunnen vanzelfsprekend ook complexere vormen van beweging, zoals de eenparig versnelde en eenparig vertraagde beweging, dus bewegingen met een variabele snelheid, worden geanalyseerd en vastgelegd voor klankaansturing.
Een beweging impliceert te allen tijde dat de locatie van een object verandert door
de tijd, zoals de locatie van de paraderende carnavalsoptocht verandert ten aanzien van de weg waar hij op uitgevoerd wordt en met betrekking tot de duur dat hij langs trekt. Beweging suggereert dus dat er tevens sprake is van een decor dat voor de waarnemer 14
hetzelfde blijft, anders zou de beweging niet waarneembaar zijn. Er moet op worden gewezen dat dit relatief is. Dat kan geïllustreerd worden met een poppenspeler in de carnavalsoptocht, die in een van de paradewagens zijn poppen laat bewegen. Hij is zich niet bewust van zijn snelheid ten aanzien van de weg, hij is slechts gefixeerd op de handelingen waarmee hij zijn poppen laat bewegen. Alleen wanneer hij vanuit de paradewagen naar buiten kan kijken en de weg aan zich voorbij ziet gaan, neemt hij notie van de totale beweging die plaats vindt. Uit de relativiteitstheorie weten we dat een beweging waarbij het volledige object zich in één richting verplaatst te allen tijde relatief is, alleen maar beweging is ten opzichte van iets dat niet beweegt, of beter gezegd: niet lijkt te bewegen.
Het is mogelijk om aan de hand van het voorbeeld van de poppenspeler een
parallel te trekken met de ruimtelijke compositie van elektronisch gegenereerde klank. Hiermee kunnen we het belang aantonen voor de componist van het creëren van een totale beweging. Voor de poppenspeler is het niet noodzakelijk dat hij zich bewust is van de totale beweging. Maar bij het construeren van een fysieke beweging in een klankcompositie moeten alle facetten van de ruimtelijke indeling in balans zijn. Wanneer het de bedoeling is dat een beweging in een rechte lijn aan de luisteraar voorbij trekt, zal er een decor moeten zijn waaraan hij de positionering van dit klankresultaat ontleent. Het is immers mogelijk dat de luisteraar zich door het luistervlak zal bewegen en zich mogelijk zelfs met een zelfde snelheid beweegt. Dan zou hij zich dus nauwelijks bewust zijn van een tot stand gebrachte beweging. Als ons gehoor een beweging in een bepaalde richting waarneemt, kan de vraag gesteld worden: ‘Omvat de totale beweging alleen de verandering van de positie van het individuele klankresultaat of verandert de positie van de volledige virtuele ruimte?’ De ‘beweegreden’ moet voor de waarnemer voort komen uit een ruimtelijke relatie tussen onderlinge klankproducerende objecten. Een lineair bewegend klankobject staat dus in relatie met stilstaande klankobjecten.
Tussen de stilstaande klankobjecten kan bovendien ook een mentale beweging
worden waargenomen mits deze hiervoor is gemaakt. Deze beweging berust op de principes van een stereoscopische waarneming. Dit heb ik in mijn compositie Flux in 2008 gedemonstreerd. Er zijn hierbij clusters van gerelateerde klanken in het GoL GVS-systeem statisch gepositioneerd waarbinnen een stereoscopische beweging ontstaat doordat de klanken vanuit het zelfde principe zijn ontworpen maar verschillende transformatieprocessen zijn ondergaan. Deze kleine deviaties geven ons gehoor de suggesties dat de klank beweegt.
15
3.2 Niet-lineaire bewegingsprocessen Naast de translatie beweging is er de roterende beweging. De roterende beweging is een duidelijk aan te wijzen beweging die op zich zelf staat en geen extra referenties behoeft. Omdat er een unieke kracht inwerkt op de as van één of meerdere roterende objecten is door iedere waarnemer duidelijk te onderscheiden welke klanken van het decor bij welk rotatie systeem horen. Dit soort bewegingen zijn mede interessant voor klankbewegingen omdat de rotatie van zichzelf al een versnelling realiseert.
Wanneer een ruimtelijk traject beschouwt wordt als een combinatie van translatie-
en rotatiebewegingen wordt de beweegrichting in de ruimte van punt a naar b optimaal bestreken alsmede wordt de autonomie van de beweging door het centrum van de rotatie gewaarborgd. Naast het gebruiken van deze complexe beweging voor het spatialiseren van een klank ligt het in mijn oogmerk om dezelfde data te gebruiken voor het aansturen van de parameters van elektronische klankgeneratoren. Dit om een uniformiteit te scheppen tussen de beweging en de klank. In het laatste hoofdstuk van deze scriptie zal worden uitgelegt hoe dit wordt gerealiseerd.
Muzikale beweging vindt zijn grondslag in de oer-rol van fysieke bewegingspatronen
en de perceptie daarvan. Het gaat daarbij om zeer complexe fysieke bewegingspatronen die de aansturing leveren waardoor een geloofwaardige perceptie kan ontstaan. Mijn speciale belangstelling gaat uit naar bewegingen binnen zwermen zoals die in de fysieke werkelijkheid waargenomen kunnen worden. De eigensoortige schoonheid daarvan biedt in mijn visie bijzondere mogelijkheden voor mijn intenties tot ruimtelijk componeren.
16
4. Zwerm intelligentie Te midden van de eeuwenoude natuur van onze aarde komt een grote variatie aan interessant gedrag van dieren en insecten voor. Dit gedrag van de soorten is door de natuurlijke selectie van de evolutie gevormd. Het ogenschijnlijk gesynchroniseerde bewegingsgedrag van bijvoorbeeld een zwerm spreeuwen in het najaar is een prachtig gezicht. Het is fascinerend om te zien hoe een mierenkolonie een wegenstructuur heeft aangelegd waarlangs de kortste weg naar hun eten is te vinden. Dit soort complexe beweging van dieren en insecten wordt zwermgedrag genoemd. Omdat dit zwermgedrag in de natuur succesvol is, lijkt het mogelijk om de eigenschappen hiervan deels te gebruiken in compositorische processen voor het genereren van muziek. Voor deze doelstelling is het noodzakelijk inzicht te krijgen in de achterliggende principes van zwermgedrag.
Vroeger dacht men dat de complexe bewegingen van een zwerm dieren of insecten
op telepathie tussen de leden van de zwerm berustten. Huidige computermodellen tonen aan dat dergelijk gedrag gebaseerd is op zeer eenvoudige locale regels voor de individuele leden van een zwerm zonder enige vorm van hiërarchie (Liu & Passino, 2000; Hemelrijk & Boers, 2008). De biologie, computerwetenschap maar ook de generatieve kunsten binnen het gebied van kunstmatige intelligentie hebben dit zwermgedrag bestudeerd, probleemoplossende computermodellen gemaakt of simpel weg als inspiratie of generatief model gebruikt vanwege de schoonheid ervan.
Zwerm gedrag in de natuur wordt onderverdeeld in twee categorieën: het
zwermgedrag van sociale insecten die in kolonies leven omdat ze niet op zichzelf kunnen overleven en dat van diersoorten waarbij de individuen een zwerm, kudde of school vormen, omdat zij hier op een bepaalde manier voordeel uit kunnen halen (Pfeil, 2006). Beide categorieën laten inspirerende eigenschappen van de natuur zien, die toegepast kunnen worden bij het tot stand brengen van ruimtelijke elektronische muziek. De globale gedragingen van beide categorieën en de algoritmische beschrijving hiervan zal in de volgende alinea’s behandeld gaan worden. Bovendien wordt er ingegaan op de relevantie van beide categorieën voor de door mij tot stand gebrachte zwerm compositie software.
17
4.1 Sociale Insecten Het contrast tussen de complexe bouwsels en acties van een kolonie insecten als geheel en de relatief simpele individuen waaruit de kolonie bestaat is een fascinerend fenomeen. Termieten zijn op zichzelf relatief eenvoudige insecten die waarschijnlijk niet lang zullen overleven. Ze werken allemaal samen om enorme aardhopen met ventilatie schachten en broedkamers van tot wel 9 meter groot te kunnen bouwen, die een veel langer leven beschoren is. Bijen zijn meesters in het goed organiseren van de taakverdeling voor het halen van de nectar, het voeren van de larven en het verdedigen van het nest met prachtige honingraten als resultaat. Hoe is het mogelijk dat zulke kleine insecten een dergelijke structuur kunnen aanleggen? Je zou op voorhand kunnen concluderen dat de werkzaamheden van de natuur ons laat zien dat een robuust en complex compositorisch systeem uit een heldere structuur van simpele gelijksoortige elementen is opgebouwd. Het gedrag van sociale insecten zoals dat daadwerkelijk bestudeerd is door de wetenschap laat inderdaad zien dat eenvoud en heldere procedureregels vaak de oplossing zijn voor een complex probleem, en zo de basis vormen voor de schoonheid van waarneembare complexiteit. 4.1.1 Principe Het achterliggende principe van het succes dat sociale insecten boeken wordt niet behaald door centrale controle maar berust op stigmergie, een term die in 1959 door PierrePaul Grass is uitgevonden om het gedrag van termieten tijdens de bouw van een nest te omschrijven. Stigmergie is een vorm van indirecte coördinatie tussen de leden van een kolonie waarbij aan de hand van bepaalde werkzaamheden, sporen in de omgeving worden achtergelaten. Deze sporen noemt men feromonen. De feromonen worden door de andere leden van de kolonie geroken wat bij hen als het ware resulteert in een impuls om die werkzaamheden voort te zetten. Op deze manier laten mieren bijvoorbeeld een feromoon achter op het traject waarlangs zij eten hebben gevonden. Marco Dorigo heeft in 1992 voor het eerst laten zien dat dit principe ook algoritmisch omschreven kan worden. Hij noemde het ‘Ant Colony Optimization’ (ACO).
18
4.1.2 Algoritmische beschrijving Dit voorbeeld van een algoritme voor ACO komt uit een artikel ‘Swarm Intelligence’ van Jonas Pfeil. Het is een algoritme in pseudo programmeertaal wat gebruikt kan worden voor het opstellen van een daadwerkelijk softwareprogramma voor het vinden van de optimale procedure in wat de ‘probleemruimte’ genoemd zou kunnen worden.
Algoritme voor ‘Ant Colony Optimization’: 1: repeat 2:
if antCount < maxAnts then
3:
create a new ant
4:
set initial state
5:
end if
6:
for all ants do
7:
determine all feasible neighbor states {considering the ant’s visited states}
8:
if solution found V no feasible neighbor state then
9:
kill ant
10:
if we use delayed pheromone udate then
11:
evaluate solution
12:
deposite pheromone on all used edges
13: 14: 15: 16: 17: 18:
end if else stochastically select a feasible neighbor state {directed by the ants memory, the pheromone concentration on the edges and local heuristics} if we use step-by-step pheromone update then deposit pheromone on the used edge end if
19:
end if
20:
end for
21:
evaporate pheromone
22: until termination criterion satisfied {e.g., found a satisfying result}
19
4.2 Zwermen, kuddes en scholen Behalve de ‘sociale insecten’ zijn er ook nog de diersoorten die kunnen kiezen of zij willen zwermen of niet. Voor zwermende dieren geldt net als voor sociale insecten dat er geen hiërarchisch systeem bestaat voor het tot stand brengen van de samenwerking. De zwermende bewegingen komen voort uit een principe dat gebaseerd is op de gedragingen van het aan de zwerm deelnemende individu. De structurele coördinatie bij sociale insecten berust op stigmergie. Dit is niet het geval voor de leden van een vogelzwerm, een vissenschool of een dierenkudde. Een individu dat deel wil nemen aan zo’n zwerm moet gedragseigenschappen hebben die hem in de gelegenheid stellen zijn bewegingen te coördineren met die van andere leden van de zwerm. Dit type zwermgedrag blijkt te bestaan uit twee gebalanceerde, tegenliggende gedragingen: de wil om dichtbij de zwerm te blijven en de wil om botsingen te voorkomen (Reynolds, 1987). Het is duidelijk waarom een individu een botsing wil voorkomen. Een belangrijke reden voor het deel uit willen maken van een zwerm is bescherming tegen roofdieren. Daarnaast kan als verklaring gegeven worden dat het vinden van eten met een groep eenvoudiger is dan alleen of dat het vinden van een partner voor reproductie in een groep makkelijker gaat dan alleen. (Pfeil, 2006) Dit zijn weliswaar belangrijke aspecten voor het voortbestaan van het succes van de soort. Maar voor veel dieren die zwermgedrag vertonen geldt dat zij zich ook best kunnen onttrekken aan de groep en zo nodig prima op zichzelf kunnen overleven. Dit aspect, alsmede principes als wrijving waaraan een zwerm onderhevig kan zijn, leveren een groep dynamisch bewegende objecten op die een interessant fenomeen vormen als inspiratiebron voor het organiseren van ruimtelijkheid binnen elektronische muziek. 4.2.1 Principe Er bestaat geen bewijs dat er een grens is aan het aantal individuele leden van een zwerm. Vogelzwermen raken niet overbelast wanneer zich nieuwe vogels aansluiten. Het lijkt waarschijnlijk dat het individu niet evenveel aandacht kan besteden aan alle leden van de zwerm. Maar wanneer een zwerm over grote afstanden reist moet het individu wel een globaal gelokaliseerde perceptie hebben van de zwerm. Mogelijk is het individu zich bewust van drie categorieën die op zijn coördinatie van invloed zijn: zichzelf, de twee of drie dichtstbijzijnde buren en de rest van de zwerm (Reynolds, 1987).
20
4.2.2 Model omschrijving In 1986 ontwikkelde Craig Reynolds een softwareprogramma voor het simuleren van het gedrag van een vogelzwerm. Hij noemde het model Boids, wat ‘bird-oid’ ofwel vogelachtige betekend. Het boid model is gerelateerd aan het partikel systeem van William Reeves. Dit wordt gebruikt voor het representeren van dynamische objecten met complexe vormen zoals vuur, rook en wolken. Partikel systemen zijn gebaseerd op grote hoeveelheden individuele partikels met elk hun eigen gedrag waardoor in de meeste gevallen geen interactie tussen de individuele partikels voorkomt. In het boidmodel van Reynolds worden de punt-achtige partikels vervangen door volledige geometrische gedaantes. Het gebruik van gedaantes in plaats van punten levert een fundamenteel verschil op omdat er in tegenstelling tot een punt bij een gedaante sprake is van een oriëntatie.
Het boid model is gebaseerd op een geometrische vlucht. Deze term refereert aan
een beweging langs een pad: een dynamisch, oplopende, niet-buigzame geometrische transformatie langs een denkbeeldige driedimensionale lijn. Voor het simuleren van vogelzwermgedrag zijn drie ‘stuurgedrag’ regels gedefinieerd (zie de illustraties): 1. Separatie: stuur weg van locaal samendrommende zwermgenoten 2. Richten: stuur mee met de gemiddelde richting van locale zwermgenoten 3. Cohesie: beweeg in de richting van de gemiddelde positie van locale zwermgenoten
Figuur 5: Locale omgeving van een boid object. De omgeving wordt gedefinieerd door de diameter en de richting van de vlucht.
De regels voor het tot stand brengen van het zwerm gedrag gaan alleen op voor een interactie met boids die zich in de zeer nabijgelegen omgeving rondom een individuele boid bevinden. Deze omgeving wordt gekarakteriseerd door een afstand die wordt gemeten vanaf het middelpunt van de boid en een hoek die gemeten wordt vanuit de richting van de vlucht. Boids die zich buiten deze locale omgeving bevinden worden genegeerd.
21
Figuur 6: Separatie: stuur weg van locaal samendrommende zwermgenoten.
De seperatie regel is er om te voorkomen dat boids op elkaar botsen, om een gespreide formatie te bewerkstelligen en om de individuele boid als het ware een autonoom karakter te geven. De regel is gebaseerd op de relatieve positie van andere locale leden van de zwerm. De boid stuurt weg van boids die op zijn vliegroute liggen en probeert en hanteert daarbij een minimum benodigde afstand.
Figuur 7: Richten: stuur mee met de gemiddelde richting van locale zwermgenoten.
Het richten is gebaseerd op het matchen van de stuurrichting en snelheid van de individuele boid ten opzichte locale andere leden van de zwerm. Hiervoor neemt de individuele boid de gemiddelde stuurrichting en snelheid over van de andere locale zwermgenoten. Dit zorgt voor een synchronisatie in de vlucht van de onderlinge boids en draagt daarbij eveneens bij aan het voorkomen van botsingen.
22
Figuur 8: Cohesie: beweeg in de richting van de gemiddelde positie van locale zwermgenoten.
De cohesie regel zorgt dat een boid dicht bij het centrum van de zwerm wil zijn. Het centrum van de zwerm is voor de individuele boid het centrum van de dichtstbijzijnde zwerm leden. Om deze centrale positie te verwezenlijken zorgt de boid ervoor dat hij rondom omgeven is door andere zwerm leden. Wanneer hij aan de rand van een zwerm vliegt zal de cohesie regel er voor zorgen dat hij enigszins naar binnen beweegt.
Waar het in deze scriptie nu dus uiteindelijk om gaat is dat de door deze wetenschappers geformuleerde analyse van bewegingsprocessen binnen een zwerm de basis kunnen vormen voor ruimtelijk componeren op basis van in beweging gebrachte klankimpulsen. Deze gegenereerde bewegingsprocessen bieden een relatief nieuw soort van rol voor de componist. Zijn ruimtelijk compositie werk gaat nu meer de vorm aannemen van een theater regisseur. Zijn globale opdrachten resulteren in een vrije invulling daarvan door de acteur. Ruimtelijke bewegingen worden niet meer gedefinieerd van punt a naar punt b maar zijn een enigszins voorspelbaar resultaat van een opdracht met eenvoudige regels.
23
5. De zwerm compositiesoftware De totstandkoming van de bij deze scriptie horende afstudeer compositie ‘Idee2’ is gebaseerd op het idee van de auditieve weergave van een fysieke zwerm-beweging. Een door bewegingsalgoritmen aangestuurde structuur van klankimpulsen beschrijft op een discrete manier het bewegingstraject van objecten die onderdeel zijn van een groep. De auditieve weergave van de totale groep vormt als het ware een geluidsskelet in tijd en ruimte, dat vervolgens met klanken bekleed kan worden. Daartoe zijn fysieke modellen ontworpen waarvoor de impulsen functioneren als excitatiemomenten. Hierdoor wordt als het ware het vlees op de botten gelegd. Er onstaat zo een coherent klanklandschap. De impulsen triggeren dus de events die bestaan in het uiteindelijke klankresultaat.
Met dit model als uitgangspunt is een softwareprogramma geschreven in Cycling
‘74 MAX/MSP/Jitter. Dit programma genereert ruimtelijke bewegingen voor een groep van punten die gebaseerd zijn op natuurkundige en biologische principes. Daartoe zijn twee verschillende aansturende algoritmes ontworpen. Het ene algoritme stuurt de beweging van een groep objecten aan door middel van zogenaamde massa-veer-systemen (onderling door veren verbonden massa’s). Het andere wordt aangestuurd door het Boids(zwerm)algoritme van Craig Reynolds (zie het vorige hoofdstuk).
De afgelegde beweging van ieder punt wordt opgeslagen in een XML partituur die
geschikt is voor de compositie-interface van de golfveld synthese software van de ‘Game of Life’. De bewegingsparameters van de individuele objecten zijn elk gekoppeld aan afzonderlijke impulsgeneratoren, filters en fysieke klankmodellen.
De compositietool omvat een visuele representatie van ruimtelijke bewegingen
van een groep objecten die door een pentablet en een MIDI-contoller of Wii-controller gecontroleerd kunnen worden. De klanksynthese kan tot worden gebracht stand met behulp van twee soorten impulsgeneratoren waarbij de dichtheid en filtering van impulsen wordt afgestemd op de bewegingsprocessen. Met behulp van physical modeling zijn verschillende objecten ontwikkel die klank voortbrengen wanneer zij door de impulsen worden geëxciteerd. De eigenschappen van de modellen worden eveneens bepaald door de bewegingsprocessen van de objecten. Om een grondig inzicht te geven in de mogelijkheden in de praktijk van de ontworpen compositiesoftware, in relatie tot de ideeen en ambities waarop deze is gebaseerd, zal in dit slothoofdstuk uitvoerig worden ingegaan op de technische aspecten ervan, te beginnen met de vereiste hardware set-up en het gecreëerde grafische user interface. Daarna worden de twee ontworpen bewegingsalgoritmes waarmee bewegingsprocessen kunnen worden aangestuurd nauwkeurig beschreven en zal worden uiteengezet hoe de communicatie 24
tot stand wordt gebracht tussen deze nieuwe software en de bestaande interface van het ‘Game of Life’ golfveld synthese systeem. In de laatste twee paragrafen wordt eerst uiteengezet hoe vervolgens de tot stand komende bewegingsprocessen door de computer worden geanalyseerd en tot slot hoe dan uiteindelijk met behulp van impulsgeneratoren en klankproducerende objecten de audio gegenereerd kan worden op basis waarvan composities tot stand kunnen komen.
5.1 De hardware-setup Er worden twee laptops gebruikt om het complete programma simultaan zonder fouten te kunnen laten uitvoeren. Bij de eerste versies van het programma werd er één laptop gebruikt maar naar mate de rekenprocessen complexer werden, werd dit hoorbaar in de audio. De impulsgeneratoren gaven overdreven veel of soms zelfs geen impulsen meer weer en er ontstonden tikken in de klanksynthese van de fysieke modellen. Daarbovenop ontstonden er door de grote rekenbelasting haperingen in de visuele projectie van de bewegingstrajecten. Het gebruik van twee machines voor het onafhankelijk voor het onafhankelijk van elkaar laten berekenen van de bewegingsprocessen en de audioprocessen heeft dit opgelost. Dit is als volgt gerealiseerd: Beide laptops staan via een ethernet netwerk met elkaar in verbinding. Laptop 1 neemt hoofdzakelijk de generatie van alle audio voor zijn rekening. De audio wordt gegenereerd vanuit patches geschreven in Cycling ‘74 Max/MSP/Jitter 4.6. De nieuwere Max 5.06 versie is hier niet gebruikt omdat het wenselijk was de IRCAM Modalys abstracties voor Max/MSP te gebruiken die een eenvoudige methode vormen om voor het Modalys object in Max/MSP scripts te genereren. Vooralsnog zijn deze abstracties niet compatible met Max 5.06 omdat de zogenaamde pattr objecten die er in worden gebruikt in Max 5.06 gewijzigd zijn ten opzichte van Max 4.6. De uiteindelijk resulterende audio wordt door de daarvoor ontworpen impulsgeneratoren tot klinken gebracht op basis van de bewegingsdata die zij via het netwerk van laptop 2 ontvangen.
Behalve voor het genereren van de audio wordt laptop 1 ook gebruikt om de
pentablet en de MIDI-controller uit te lezen. Het lijkt voor de hand te liggen om de hierdoor geleverde data samen met de bewegingsdata op laptop 2 in Max 5.06 uit te lezen. Maar omdat het Wacom object dat de x/y coördinaten van de pentablet uitleest in Max 5.06 vooralsnog niet goed blijkt te werken, wordt dit op laptop 1 gedaan. Op deze manier hoeft laptop 2 niet twee versies van Max uit te voeren. De MIDI-controller is ook meegenomen naar laptop 1 zodat alle USB verbindingen op één laptop zitten aangesloten en alle
25
controller data in één netwerk pakket één kant kunnen worden opgestuurd. Laptop 2 houdt zich expliciet bezig met het berekenen van de ruimtelijke bewegingen van een groep punten en alle daarbij horende parameters. Er zijn door mij in Cycling ‘74 Max/ MSP/Jitter 5.06 twee verschillende patches ontwikkeld die hiervoor kunnen worden gebruikt. Patch 1 wordt aangestuurd door de pentablet- en MIDI-controllerdata die van laptop 1 afkomstig zijn en Patch 2 wordt aangestuurd door een Nintendo Wii controller. Patch 1 en 2 bevatten verschillende algoritmes die niet bestemt zijn voor gelijktijdig gebruik. Alle uit de beweging resulterende bewegingsdata wordt via het netwerk naar laptop 1 gestuurd. Dit wordt weergegeven in de onderstaande figuur.
laptop 1 controller data
laptop 2 audio processing
MIDI-controller pentablet audio interface Wii-controller
Figuur 9: Schematische weergave van de hardware setup t.b.v. de zwermcompositie software.
26
Software onderdelen: Cycling ‘74 Max/MSP/Jitter 4.6 -> http://www.cycling74.com (proeftijd/betaald) Cycling ‘74 Max/MSP/Jitter 5.x -> http://www.cycling74.com (proeftijd/betaald) IRCAM Modalys 3.0.3 -> http://forumnet.ircam.fr/?L=1 (betaald) Litter Power Package Pro Bundle -> http://www.bek.no/~pcastine/Litter/ (gratis/betaald) PMPD Physical Modeling library -> http://www.mathieuchamagne.com/code/pmpd-ub/ (gratis) Boids library -> http://www.s373.net/code/ (gratis) CNMAT library -> http://cnmat.berkeley.edu/downloads (gratis) aka.wiiremote -> http://www.iamas.ac.jp/~aka/max/ (gratis) wacom -> http://www.akustische-kunst.org/maxmsp/ (gratis) Multichannel Soundfile extracter -> http://audacity.sourceforge.net/download/ (gratis) Hardware onderdelen: MacBook Pro, 2.53 GHz Intel Core 2 Duo, 4GB 1067 Mhz DDR3, OSX 10.5.6 (laptop1) MacBook, 1.83 Ghz Intel Core Duo, 1GB DDR2 SDRAM, OSX 10.4.6 (laptop2) TRUST Slimline Design Tablet TB-6300 (pen tablet) Evolution UC-16 (MIDI-controller) Nintendo Wii Remote MOTU traveller (audio-interface) 7x versterkte luidsprekers
5.2 De Graphical User Interface (GUI) De grafische gebruikersomgeving van waaruit de gebruiker een interactie aangaat met het softwareprogramma, is gemaakt in de driedimensionale computer omgeving ‘OpenGL’. OpenGL is uitermate geschikt voor het visueel weergeven van zowel een twee- als driedimensionale representatie van de beoogde fysieke ruimtelijke posities van geluid. Met het softwareprogramma wordt een groep balvormige objecten in de ruimte standaard vanuit een camerapositie met een tweedimensionaal helikopter-zicht weergegeven. De mogelijkheid bestaat om de camerapositie te veranderen en de groep vanuit een ander perspectief te bekijken. Vanuit een nieuwe positie kan het bewegingsproces van de groep zowel op het horizontale vlak als in de hoogte inzichtelijk worden weergegeven. (Een positionering in de hoogte en visuele weergave daarvan zou vanzelfsprekend alleen betekenis hebben als deze ook daadwerkelijk gebruikt wordt in de uiteindelijke auditieve reproductie, wat het niet het geval is.)
27
Het luidsprekersysteem voor golfveld synthese van de ‘Game of Life’ kent maar één hoogte. Er zal bij het totstandkomen van mijn compositie ‘Idee2’ waarbij dit software programma wordt gebruikt daarom nog niet worden geëxperimenteerd met een dynamische camerapositie omdat deze compositie in eerste instantie expliciet wordt gemaakt voor het golfveld synthese luidsprekersysteem van de ‘Game of Life’.
Figuur 10: Screenshot van de zwerm compostie GUI.
De GUI is opgebouwd in een driedimensionale ruimte, maar de groep objecten is zoals hiervoor beschreven standaard visueel te volgen van uit een tweedimensionaal helikopter zicht. De gebruiker ziet de objecten bewegen over een rechthoekig grijs vlak, soms ook daarbuiten (zie: fig. 10). Het rechthoekige vlak representeert namelijk het afluistervlak binnen de golfveld synthese luidsprekeropstelling van ‘Game of Life’-toepassingen, dat als kenmerk heeft dat geluiden ook achter de opgestelde luidsprekers gepositioneerd kunnen worden.
Als er sprake is van een luidsprekeropstelling met een andere vorm kan de grafische
representatie daar op eenvoudige wijze aan worden aangepast. Omdat de in beweging gebrachte balvormige objecten ieder een eigen kleur hebben,is het voor de gebruiker gemakkelijker om visueel onderscheid te kunnen maken tussen de objecten, hun onderlinge posities, hun bewegingsgedrag. Dat stelt de gebruiker in staat tot een subtiele inzetbaarheid van de aan de objecten gerelateerde klankparameters. Aan de rechter zijde van het scherm wordt elk gekleurd balvormig object en de op dat moment bestaande x/y coördinaat in meters weergegeven. Hierbij wordt het corresponderende balvormig object aan de zijkant transparanter naarmate het correspondeerde punt zich verder naar het midden van het luistervlak beweegt. 28
De mate van transparantie van de objecten correspondeert tevens met de mate van amplitudecorrectie voor het geluid. Hoe transparanter het object des te meer neemt de amplitude af. In paragraaf 5.6.1 wordt verder ingegaan op het nut van deze amplitudecorrectie bij het daadwerkelijk holografisch produceren van geluid.
Door in het midden van de GUI met de muis te klikken terwijl de alt toets wordt
ingedrukt is het voorts mogelijk om in en uit te zoomen op het vlak waar de punten zich bewegen. Hierdoor wordt het mogelijk om zowel grovere grote bewegingen als kleine gedetailleerdere bewegingen te maken. Het luistervlak binnen de gvs-luidsprekeropstelling is meestal ongeveer 8 bij 10 meter groot, maar de gegenereerde klanken kunnen dus ook tot vele meters buiten deze opstelling worden gepositioneerd. De huidige implementatie van de GUI laat het toe bewegingen te coördineren over een vlak van 100 bij 72 meter. De aan de schermgrootte gerelateerde waarden, zoals de grootte van de balvormige objecten en de schermpositie van de x/y coördinaten worden niet meegeschaald bij het in- en uitzoomen op de beweging, waardoor ze voor de gebruiker optimaal hanteerbaar blijven.
5.3 De bewegingsalgoritmes De fysieke klankbewegingen in mijn compositie ‘Idee2’ zullen worden gegenereerd door twee algoritmes. Beide algoritmes zijn op zichzelf staande bewegingsprincipes die principieel gebaseerd zijn op bewegingsfenomenen die ook buiten de computer voorkomen. Ze zijn nauw verwant aan in de wiskunde ontwikkelde cellular-automaton-modellen, waarin de nieuwe positie van elk object in een grid na de aanvangstijd automatisch bepaald wordt door de toestand in de naaste omgeving van het object en een bepaalde meestal wiskundig geformuleerde regel.
Algoritme 1 is geïnspireerd op in de natuur waarneembaar gedrag van bijvoorbeeld
een zwerm spreeuwen. Hiervoor heb ik gebruik gemaakt van de Boids 2D/3D Max/Jitter objecten van Eric Singer. De objecten van Eric Singer zijn een implementatie van het beroemde Boids vogelzwerm algoritme van Craig Reynolds. Algoritme 2 is gebaseerd op een aaneenschakeling van massa-veer modellen waardoor een complexe combinatie van eenparig versnelde/vertraagde translatie- en rotatiebewegingen ontstaat. Hiervoor heb ik gebruik gemaakt van de PMPD physical modeling Max objecten van Cyrille Henry. In de volgende paragraaf zal worden uitgelegd hoe de functionaliteit van beide algoritmes is ingezet voor het aansturen van een groep objecten, hoe de algoritmes worden gecontroleerd en hoe de resulterende bewegingen omgezet worden naar ruimtelijke bewegingstrajecten in het XML formaat voor het golfveld synthese systeem van de ‘Game of Life’.
29
5.3.1 ‘Wolk’ Algoritme 1 is gebaseerd op een wolk van zwermende deeltjes, waaraan ik daarom de naam ‘Wolk’ heb meegegeven. Het algoritme is opgebouwd rondom het jit.boids2D object. Jit. staat voor Jitter. Jitter is een extensie van Cycling ‘74 Max waarmee matrixen gevuld kunnen worden met data voor bijvoorbeeld het genereren van video. De Jitter variant van het tweedimensionale Boids-object gebruikt de matrixen voor het berekenen van het bewegingsgedrag van de Boids. De 2D variant is gebruikt omdat de bewegingen van de zwerm uiteindelijk ook auditief worden weergegeven in een tweedimensionale luidsprekeropstelling, te weten die van de ‘Game of Life’. De output van het jit.boids2D object hangt af van de drie verschillende modi waaruit gekozen kan worden. Modus 0 geeft de huidige x/y positie van iedere individuele Boid. Modus 1 geeft de huidige en de vorige x/y positie van iedere Boid. Modus 2 geeft daarbij ook de snelheid en azimut van iedere boid. In de onderstaande figuur is te zien hoe de parameters voor Boids uitgelezen kunnen worden. Het jit.boids2D object neemt een geheel getal als argument dat het aantal Boids in het algoritme bepaalt. Iedere keer als het Boids object een zogenaamde bang ontvangt berekent het een nieuwe positie voor iedere individuele Boid en geeft deze terug.
Figuur 11: Voorbeeld patch van de implementie van het jit.boids2D object.
Het Boids-object heeft daarnaast een aantal flight parameters meegekregen waarmee de globale gedragsdispositie van de gehele zwerm kan worden bepaald. De huidige implementatie van het Boids algoritme in de ‘Wolk’ software maakt gebruik van deze parameters waarvan er een aantal één statische waarde krijgen en een aantal dynamisch worden gecontroleerd en een aantal vooralsnog niet worden gebruikt. Met behulp van onderstaande tabel 1 die alle flight parameters globaal omschrijft wordt ingaan op de in de ‘Wolk’ software dynamisch gebruikte paramaters. 30
parameter
omschrijving
status
controller
neighbors
het aantal aangrenzende boids waarover elke Boid het gedrag consulteert als hij kuddegedragsimuleert
statisch
-
maxspeed
de bovengrens van het totale snelheidsbereik waarbinnen elke boid zich begeeft
dynamisch
algoritmisch
minspeed
de ondergrens van het totale snelheidsbereik waarbinnen elke boid zich begeeft
dynamisch
algoritmisch
center
de kracht van de aangebrachte gedragsdispositie van elke boid om te centreren
dynamisch
MIDI-controller
attract
aantrekkingskracht van elke boid tot het aantrekkingspunt (‘attractpt’)
dynamisch
MIDI-controller
match
de kracht van de aangebrachte gedragsdispositie statisch van elke boid om de eigen snelheid aan te passen aan die van een aangrenzende boid
-
avoid
de kracht van de aangebrachte gedragsdispositie om een aangrenzende boid uit de weg te gaan
dynamisch
MIDI-controller
repel
kracht van de aangebrachte gedragsdispositie om muren uit de weg te gaan
niet gebruikt
-
edgedist
afstand van het zicht om de randen van muren uit de weg te gaan
niet gebruikt
-
speed
globale bewegingssnelheid
dynamisch
MIDI-controller
inertia
de aangebrachte wil van elke boid om de snelheid en richting te veranderen
dynamisch
MIDI-controller
accel
de mate acceleratie van elke boid
statisch
-
prefdist
de voorkeursafstand van elke boid ten opzichte van aangrenzende Boids
statisch
-
flyrect
de grenspositie van de muren waar de boids tegen aan vliegen (links/rechts/boven/onder)
niet gebruikt
-
attractpt
punt waar de boids zich tot aangetrokken voelen
dynamisch
pen tablet
reset
reset de boids in het grensvlak van muren
niet gebruikt
-
set
selecteert één boid waarvoor het gedrag handmatig overruled kan worden
niet gebruikt
-
set_pos
overrulet handmatig de positie van één boid
niet gebruikt
-
set_speed
overrulet handmatig de bewegingssnelheid van één boid
niet gebruikt
-
set_invspeed
overrulet handmatig de inverse bewegingssnelheid van één boid
niet gebruikt
-
set_dir
overrulet handmatig de beweegrichting van één boid
niet gebruikt
-
bang
berekent en geeft de volgende positie, bewegingssnelheid en beweegrichting terug
dynamisch
klok
Tabel 1: Omschrijving van de bij het jit.boids2D object behorende flight parameters om het gesimuleerde zwermgedrag te kunnen controleren. Aanduiding van de status van de aansturing (dynamisch/statisch). Aanduiding van de soort controller die gebruikt wordt om de parameter aan te sturen. Alle argumenten accepteren zowel gehele getallen als decimale getallen.
31
In de tabel 1 is af te lezen dat de ‘attractpt’ parameter wordt aangestuurd met een pentablet. Met de ‘attractpt’ parameter kunnen de x/y waarden aangegeven worden waartoe de Boids zich aangetrokken voelen. Daarbij bepaalt de ‘attact’ parameter de mate van aantrekkingskracht tot het aantrekkingspunt. Met het pennetje wordt op de pentablet een x/y positie aangewezen. Deze x/y positie wordt gebruikt voor de x/y waarden van het aantrekkingspunt. De positie op het pentablet wordt met behulp van het Wacom Max object uitgelezen. De x/y waarden worden geschaald naar de randen van de huidige ‘zoompositie’ van de GUI. Door middel van het aanwijzen van verschillende x/y posities worden dus door de gebruiker de zones aangeduid voor het zwermgedrag van de Boids.
De ‘center’ parameter wordt aangestuurd door een MIDI-controller. Deze ‘center’
parameter bepaalt de kracht van de aangebrachte gedragsdispositie ten aanzien van alle Boids om te willen centreren. Dat wil zeggen dat de Boids zwermgedrag gaan vertonen waarbij zij zeer dicht bij elkaar blijven, dus een ‘wolk’ gaan vormen. Met een hoge ‘center’ waarde kan de zwerm zich bijvoorbeeld als hechte cluster van aantrekkingspunt naar aantrekkingspunt bewegen.
De MIDI-controller wordt ook gebruikt om de ‘avoid’ parameter te kunnen aansturen.
Deze parameter bepaald de kracht van de aangebrachte gedragsdispositie ten aanzien van alle Boids om aangrenzende Boids uit de weg te willen gaan. Wanneer twee of meer Boids door een hoge center waarde elkaar op één punt tegen komen met een hoge ‘avoid’ waarde veroorzaakt dit een botsing, waardoor hun beweegrichting geïnverteerd wordt. Een lagere ‘avoid’ waarde resulteert dus in een grotere kans op een kruising van een of meerdere Boids op een punt. Het koppelen van de ‘speed’ parameter aan de MIDI-controller stelt de gebruiker in staat de globale bewegingssnelheid van de totale zwerm te kunnen controleren. Een hogere ‘speed’ waarde veroorzaakt een grotere snelheid bij alle Boids. Hierdoor kan bij het aanwijzen van een nieuw aantrekkingspunt de snelheid van de beweging daar naar toe gecontroleerd worden.
De ‘inertia’ parameter bepaalt de mate waarin alle Boids een ‘wil’ hebben om hun
snelheid en beweegrichting te variëren. De snelheidsvariatie vindt plaats ten opzichte van de initiële waarde van de ‘speed’ parameter. Het bereik van deze variatie bevindt zich tussen een variërende waarde voor de boven- en ondergrens van het totale snelheidsbereik. De variatie van de grenswaarden wordt bewerkstelligd door een constante klok waarmee uit een waarschijnlijkheidsmasker worden gekozen. Dit resulteert in een systeem dat afwisselend grote en kleinere variaties in de snelheid van de Boids genereert. Met de implementatie van het Boids algoritme van Craig Reynolds als ruimtelijke compositie strategie is een basis gelegd voor het genereren van een variatie aan zowel discreet hoorbare als ‘wolkachtig’ samensmeltende klanken. 32
5.3.2 ‘Herder en schaapjes’ Algoritme 2 heeft de naam ‘Herder en schaapjes’ gekregen omdat het een aaneenschakeling is van massa-veer modellen waarbij steeds één massa (de herder) wordt aangestuurd door de gebruiker en alle andere massa’s (de schaapjes) door deze herder gestuurd worden.
Deze aaneenschakeling van massa-veer modellen is gemaakt met het
pmpd.mass2D object en het pmpd.link2D object. Deze twee objecten zijn onderdeel van de PMPD objecten library van Cyrille Henry. PMPD is een afkorting voor Physical Modeling Pure Data. In deze benaming staat Physical Modeling voor de functionaliteit van de objecten, namelijk het modelleren van de fysieke eigenschappen van massa-veer-systemen. De naam Pure Data wordt gebruikt omdat de objecten door Cyrille Henry in eerste instantie voor de gratis Pure Data software van Miller Puckette zijn geschreven. De max port voor de PMPD bibliotheek is later gerealiseerd door Ali Momeni. Van zowel het pmpd.mass als het pmpd.link object bestaan één-, twee- en driedimensionale varianten. In de ‘Herder en schaapjes’ software is gebruik gemaakt van de tweedimensionale variant omdat de uiteindelijke auditieve representatie van de massa-veer bewegingen binnen een luistervlak ook tweedimensionaal zal zijn. Het pmpd.mass2D object is een fysiek model van een tweedimensionale puntmassa. Om de massa in beweging te zetten is een kracht nodig. Hiervoor wordt het argument force2D gevolgd door een waarde voor de x-as en een waarde voor de y-as aan het object gegeven. De bewegingssnelheid hangt bovendien af van het gewicht van de massa en de mate van snelheidsdemping. De waarden hiervoor zijn in te stellen met de argumenten setM en setD. Wanneer het object dan een bang ontvangt wordt de resulterende bewegingssnelheid berekend en uitgevoerd. De uitvoer van het object bestaat uit drie verschillende variabelen: 1) een lijst met de x/y positie van de massa in de ruimte 2) de totale bewegingssnelheid van de massa 3) de totale hoeveelheid kracht die op de massa inwerkt
33
argument
omschrijving
status
controller
setM
het gewicht van de massa
statisch
-
setX, setY, setXY
de initiële positie van de massa
statisch
-
setXmin, setXmax, setYmin, setYmax
bepaald de minimum en maximum positie van de massa
niet gebruikt
-
setT
threshold, wanneer de massa zich bevind op de statisch minimum of maximum positie dan is beweging alleen mogelijk wanneer totale hoeveelheid kracht groter is dan de treshold
-
setD
demping van de bewegingssnelheid
statisch
-
bang
berekent positie en geeft output
dynamisch
klok
force2D
past een kracht toe op de massa
dynamisch
Wii / algoritmisch
reset
reset de positie naar zijn initiële waarde
dynamisch
Wii
resetF
reset de totale kracht die op de massa inwerkt
dynamisch
Wii
off
stopt de massabeweging
dynamisch
Wii
on
herstart de massabeweging
dynamisch
Wii
loadbang
geeft de huidige positie
statisch
-
Tabel 2. Omschrijving van de beschikbare argumenten voor de controle van het pmpd.mass2D object. Aanduiding van de status van de aansturing (dynamisch/statisch). Aanduiding van de soort controller die gebruikt wordt om de parameter aan te sturen. Alle argumenten accepteren zowel gehele getallen als decimale getallen.
Het pmpd.link2D object is een fysiek model van een tweedimensionale veer die kan worden gebruikt als verbinding tussen twee pmpd.mass2D objecten. De invoer van het pmpd.link2D object bestaat uit de positie van massa 1 en de positie van massa 2. De uitvoer bestaat uit de resulterende kracht die inwerkt op massa 1 en massa 2. argument
omschrijving
status
controller
setL
lengte van de verbinding
statisch
-
setK
stramheid van de verbinding
statisch
-
setD
demping van de verbindingsvervorming
statisch
-
setD2
demping van de snelheid van de massa’s
statisch
-
position2D
verandering van de positie van massa 2
dynamisch
algoritmisch
bang
bereken de kracht uitvoer aan de hand van de laatste positie van de massa
dynamisch
klok
reset
reset de positie van de massa’s en de snelheid van de verbinding naar nul
dynamisch
Wii
resetF
reset de demping en traagheidskracht van de verbinding
dynamisch
Wii
resetL
reset de lengte van het contact naar de huidige lengte
dynamisch
Wii
setLmin, setLmax
stelt de minimale en maximale lengte van de verbinding, wanneer deze overschreden wordt is de kracht uitvoer nul
niet gebruikt
-
setM
verandert de spierkracht, een spierkracht is instaat de grote van een verbinding te wijzigen
niet gebruikt
-
Tabel 3. Omschrijving van de beschikbare argumenten voor de controle van het pmpd.mass2D object. Aanduiding van de status van de aansturing (dynamisch/statisch). Aanduiding van de soort controller die gebruikt wordt om de parameter aan te sturen. Alle argumenten accepteren zowel gehele getallen als decimale getallen.
34
De constellatie van het ‘Herder en schaapjes’ model is opgebouwd uit zeven pmpd.mass2D objecten en zes pmpd.link2D objecten. De kracht die de constellatie in beweging zet wordt gerealiseerd met de ADXL330 chip die in de hiervoor gebruikte draadloze Nintendo Wii controller aanwezig is. Deze chip meet op drie assen (XYZ) de kracht die ontstaat uit een beweging. Daarbij wordt ook de kanteling ten opzichte van de zwaartekracht gemeten. Bij het genereren van een controlesignaal is het grote voordeel van deze controller ten opzichte van bijvoorbeeld een joystick dat het een soort van ‘flux’ rondom het beoogde signaalverloop oplevert, inplaats van een lineair schokkerig data verloop. Dit is gunstig voor het aansturen van een pmpd.mass object omdat dat het zelfde ‘fluxgedrag’ vertoont. Naast de versnellingsmeter heeft de Wii-controller nog een elftal buttons om bepaalde processen te kunnen instarten. Dankzij het door Masayuki Akamatsu ontwikkelde aka.wiiremote object kan de data in Cycling ‘74 Max worden uitgelezen. De door dit object uitgevoerde XYZ snelheden worden in het tweedimensionale ‘Herder en schaapjes’ model gereduceerd tot alleen de XY waarde. Deze worden doorgestuurd naar de pmpd.mass2D objecten. Om de massa-veerconstellatie bijvoorbeeld naar linksboven te laten bewegen wordt de Wii controller daarvoor naar linksboven gekanteld.
Proefondervindelijk is vastgesteld dat het niet wenselijk is om een snellere beweging
van de massa’s te realiseren met alleen de data van de snelheidsmeter. De gebruiker moet dan grote inspanningen leveren om een grotere snelheid te kunnen realiseren. Om dit te voorkomen is gekozen om voor dit doel de ‘A’ knop van de Wii-controller te gebruiken. Wanneer deze wordt ingedrukt, worden de XY waarden vermenigvuldigd. De gebruiker kan nu door slechts te kantelen in combinatie met de ‘A’ knop ingedrukt een grote kracht op de massa’s laten inwerken. Alle massa’s in de massa-veer-constellatie ontvangen deze resulterende kracht.
De structuur van alle verbindingen in het massa-veer systeem is als volgt: Er is één
leider met twee volgers die elk weer twee volgers hebben. Hiervan kan een schema worden gemaakt zoals die in figuur 12 weergegeven wordt.
35
Figuur 12: Schematische weergave van een aaneenschakeling van massa-veer-systemen voor het genereren van zwerm bewegingen.
Wanneer op het pijltje naar links van de Wii controller wordt gedrukt, neemt massa 7 de positie van massa 1 in, massa 1 de positie van massa 2, 2 van 3 enz. Wanneer er op het pijltje naar rechts wordt gedrukt, gebeurt het omgekeerde. Hierdoor kan gedurende de beweging constant de hiërarchie in de massa-veer structuur worden veranderd. Een verandering in deze hiërarchie is met name interessant om dat de veermodellen waarmee de massa met elkaar in verbinding staan verschillende lengte-, stramheid en dempingseigenschappen hebben, waardoor het bewegingsgedrag van de individuele massa varieert aan de hand van de veermodellen waartussen het zich manifesteert. Het resultaat van de variatie werkt dan vanzelfsprekend door in het uiteindelijke klankresultaat. Het zal duidelijk zijn dat met dit algoritme de basis is geschapen voor het genereren van weer andere dynamische klankmogelijkheden dan het Wolk algoritme, door de voortdurende spanning die is gecreëerd tussen de leidende herder en de volgende schaapjes.
36
5.4 ‘Wolk’ & ‘Herder en schaapjes’ ontmoeten de GoL-Path Editor De gevarieerde constellaties en de dynamische bewegingen die het Wolk-algoritme en het ‘Herder en schaapjes’-algoritme produceren, worden toegepast als ruimtelijke paden in het ‘Game of Life’ golfveld synthese (GoL GVS) systeem. In deze paragraaf wordt allereerst ingegaan op de al bestaande mogelijkheden van deze interface voor het GVS systeem. Daarna wordt uitgelegd hoe de communicatie van de bewegingsdata tussen de nieuwe zwerm software en deze interface tot stand is gekomen. 5.4.1 GoL GVS interface
De GoL GVS interface is gemaakt met de programmeertaal Super Collider door
Wouter Snoei. De huidige versie van de interface bestaat qua functionaliteit hoofdzakelijk uit drie onderdelen: 1) Controls 2) Score Editor 3) Path Editor 5.4.1.1 Controls
Met de ‘Controls’ van de interface wordt een te spelen partituur geselecteerd,
gestart, gestopt en weer aan het begin gezet. Vanaf een tijdsindicator kan de huidige afspeelpositie worden afgelezen. Het globale geluidslevel kan worden gecontroleerd met een lange fader en voor drie frequentiebanden kan het geluidsvolume en de bandbreedte worden bepaald. 5.4.1.2 Score Editor
In de ‘Score Editor’ kunnen de start en stoptijden van een serie mono
geluidsbestanden worden ingesteld. Er kan aan ieder geluidsbestand een start offset worden meegegeven, een fadein en fadeout tijd voor het geluidsvolume worden bepaald en een globaal geluidsvolume worden toegekend. Daarnaast kan aan de verschillende geluidsbestanden een ruimtelijke representatie worden toegekend. Er kan gekozen worden uit de volgende ruimtelijke representaties: * statische positie
Bij een statische positie wordt het geluidsbestand weergegeven als een puntbron op
een XY positie in de golfveld synthese omgeving. Deze wordt ingevoerd met twee decimale getallen.
37
* vlakke golf
Een vlakke golf is in principe het zelfde als een puntbron maar deze wordt gebruikt
voor een simulatie van een veraf staande puntbron. Hij heeft dus ook een statische positie maar die wordt bepaald door de azimut en de afstand welke worden ingevoerd met twee decimale getallen. * dynamische beweging
De dynamisch bewegende ruimtelijke representatie komt feitelijk neer op een
bewegende puntbron. Het pad dat de beweging aflegt wordt gelezen vanuit de ‘Path Editor’. De tijdsduur van het pad kan worden geschaald naar de tijdsduur van het geluidsbestand. * luidspreker index
Het is ook mogelijk om voor het weergeven van een geluidsbestand één luidspreker
te selecteren. Hiervoor wordt de index van de gewenste luidspreker met een geheel getal (1 tot 192) ingevoerd. Het is ook mogelijk het volume uit te smeren over twee aanliggende luidsprekers, dit kan worden gedaan door een decimaal getal in te voeren. Het volume wordt over de twee luidsprekers verdeeld al naar gelang de grote van het getal achter de komma.
Deze serie opties bepaalt het karakter van een ‘score’, deze kan worden gesaved
als ‘Score File’ in een zogenaamd XML gebaseerd formaat. De functionaliteit van het XML formaat zal hierna worden behandeld in het kader van de datastructuur van de ruimtelijke bewegingen. 5.4.1.3 Path Editor De ‘Path Editor’ is ontworpen om op verschillende manieren ruimtelijke bewegingen te kunnen maken in de vorm van ontworpen of gegenereerde trajecten. Een traject bestaat uit een reeks van XY coördinaten. In de beweging wordt een gladstrijkende interpolatie van XY positie naar XY positie gemaakt waarbij de deltatijden tussen onderlinge XY posities kunnen variëren. Deze paden kunnen vervolgens binnen de interface gekopieerd worden naar de ‘Score Editor’ of worden opgeslagen als ‘Path Bank’ waarbij het zogenaamde XML formaat wordt gehanteerd.
38
5.4.2 GoL GVS XML formaat De afkorting XML staat voor Extensible Markup Language, vrij vertaald betekent dit: ‘uitbreidbare markeer taal’. XML is een uitbreidbare taal omdat het de gebruiker instaat stelt de ‘markeer elementen’ in de opmaakstructuur zelf te definiëren. Het doel van het hanteren van een XML formaat is om verschillende informatie systemen te kunnen helpen bij het communiceren van gestructureerde data die zowel voor machines als mensen leesbaar is. De XML boomstructuur van een ‘Path Bank’ van de GoL GVS interface ziet er bijvoorbeeld als volgt uit: <xml:wfs>
WFSPathGen
<patharray>
<path dur= “4.551875” name= “path1” size= “2” type= “relative” >
-8.800000, -2.400000, 0.000000, 0.000000,
-8.800000, -2.400000, 0.000000, 0.772093,
-9.700000, -1.700000, 0.000000, 0.630010,
-10.600000, -1.000000, 0.000000, 3.149772,
<path dur= “1.971118” name= “path2” size= “1” type= “relative” >
-8.500000, 3.000000, 0.000000, 0.000000,
-8.500000, 3.000000, 0.000000, 0.610668,
-9.200000, 2.600000, 0.000000, 0.678971,
-9.600000, 2.500000, 0.000000, 0.681479,
De <> > symbolen duiden op het begin, de begin_tag en het einde, de end_tag van een element van de XML structuur. De begin_tag van het eerste element <xml:wfs> geeft aan dat de XML structuur die erna volgt, bedoeld is voor de GoL GVS interface. De begin_tag van het
element is alleen bedoeld ter informatie voor de gebruiker. Deze kan hieruit herleiden om welke bewegingstrajecten het in de structuur die volgt precies gaat. De begin_tag van het <patharray> element geeft aan dat het in de volgende structuur om meerdere bewegingspaden gaat. In de begin_tag van het <path> element zijn een aantal attributen ingenesteld. De waarden van deze attributen zijn uit de content van het <path> element te herleiden. De begin_tag ziet er dan bijvoorbeeld als volgt uit <path dur=
39
“4.551875” name= “path1” size= “2” type= “relative” > Achtereenvolgens worden de totale tijdsduur van het bewegingspad in seconde, de naam van het bewegingspad, de grootte van het bewegingspad in meter en de gehanteerde deltatijden (verschil in tijd tussen vertrek en aankomstpositie) ingenesteld. De lijst met content die volgt bestaat per regel uit de positie op x-as, de positie op de y-as, de positie op de z-as en de deltatijd om naar dat punt te komen. De deltatijden zijn in dit voorbeeld als type= ‘relative’ weergegeven. Dat betekent dat iedere opeenvolgende deltatijd weer vanaf 0. begint. Er kan ook een absolute deltatijd worden gebruikt waarbij de volgende deltatijd een optelling is bij de vorige. 5.4.3 GoL GVS XML Generator in Cycling ‘74 Max De bewegingen van het ‘Wolk’ en ‘Herder en schaapjes’ algoritme worden vanuit Cycling ‘74 Max in een GOL GVS compatibele XML structuur beschreven. De main patch van waaruit de XML wordt gegenereerd is vormgegeven zoals in figuur 13 wordt gedemonstreerd:
Figuur 13: Mainpatch voor het registeren van de trajecten van bewegende objecten in een ‘Game of Life’ GVS compitabele XML structuur. Nadat een bewegingstraject door de gebruiker als voltooid is beschouwd wordt een ‘bang’ gegeven waardoor de bewegingsdata in het ‘text’ object wordt weggeschreven.
Om de gegenereerde bewegingen correct in de XML structuur van de GoL GVS interface te gieten, zijn een aantal procedures nodig. In eerste instantie moeten de bewegingen van de objecten op een twee dimensionaal grid gaan plaatsvinden. De tijd die de beweging tussen twee gridposities nodig heeft kan dan gemeten worden. Er is gekozen voor een grid-formaat van 10cm bij 10cm. Het is mogelijk om te werken met een grid met een hogere of een lagere resolutie. Een lage resolutie van bijvoorbeeld 1 meter bij 1 meter heeft als nadeel dat bijvoorbeeld een XY positie van 1.46m bij 1.46m afgerond wordt naar 1m bij 1m. Door dit soort grid-afrondingen ontstaan haperingen die zich voordoen als trappetjes (zie: figuur 14) in de vastgelegde beweging. Een voordeel is dat er minder rekenkracht nodig is. 40
Bij een hoge resolutie is het mogelijk de bewegingen van de algoritmes veel preciezer vast te leggen. Maar er is wel een grens. Het minimale tijdsinterval dat het GoL GVS systeem kan weergeven tussen 2 punten is ongeveer 0.003 seconden (om precies te zijn; blockSize/sampleRate; ofwel 128/44100). Kleinere intervallen dan dat worden met een afwijking afgespeeld, en als er daar veel van inzitten kan dat behoorlijk de loop van het pad gaan beïnvloeden. Dat is ook de maximale tijdsresolutie; een verschil tussen 0.010 en 0.011 seconden kan het systeem dus ook niet weergeven.1 Het is dus de bedoeling dat de tijdsintervallen minder klein worden dan 0.003 seconden met behoud van de grote precisie van het grid.
Figuur 14: Plot van een ruimtelijk score voor het ‘Game of Life’ GVS systeem. De trappetjes in de lijnen zijn ontstaan door afronding van een grid met een hoge resolutie.
1
Met dank aan Wouter Snoei voor zijn uitleg. 41
5.4.3.1 2DGrid In het gekozen grid-formaat worden de XY posities die de groep zwermende punten tijdens hun beweging ‘teruggeven’ dus constant afgerond naar veelvouden van 10cm. Er moet worden voorkomen dat een punt tijdens zijn beweging over één gridpositie constant dezelfde uitvoer geeft. Hiervoor wordt het Lchange object gebruikt. Dit object geeft alleen uitvoer wanneer de X en/of de Y positie verandert. Om te voorkomen dat bij snelle bewegingen de deltatijden onder de 0.003 seconden komen wordt alleen na een bepaald aantal gridposities een uitvoer gegeven. Dit aantal resolutie punten kan variabel worden ingesteld. Alle deltatijden tussen het eigenlijke aantal gridposities worden gedurende dit proces opgeteld en uitgevoerd wanneer de nieuwe gridpositie wordt uitgevoerd. De deltatijden worden gemeten met behulp van twee cpuclock (Cycling ‘74 Max) objecten. Dit cpuclock object refereert de gemeten tijden aan een klok die bijhoudt hoelang de cpu opgestart is en levert een precisie in microseconde. De implementatie hiervan in het grid werkt als volgt: de eerste gridpositie triggert een uitvoer van cpuclock object 1 en de volgende gridpositie triggert een uitvoer van cpuclock object 2, weer een volgende gridpositie triggert cpuclock object 1. Het verschil in uitvoer tussen de twee objecten resulteert in relatieve deltatijden tussen een serie afzonderlijke gridposities. De cpuclock objecten worden gebruikt omdat het timer object in Max hiervoor niet geschikt is. Dit timet namelijk aan de hand van de onbetrouwbare miliseconde klok van Max zelf.
Figuur 15: Subpatch waarmee de bewegende objecten op een grid worden geplaatst
42
5.4.3.2 SizeDurAttributeGen De lijsten die na een bepaald aantal gridposities worden uitgestuurd bestaan uit een x-coördinaat, een y-coördinaat, een z-coördinaat (de laatste staat altijd op 0. omdat deze niet wordt gebruikt in de 2D luidspreker-setup GOL GVS systeem) en een deltatijd. Deze lijsten worden doorgestuurd naar de ‘sizeDurAttributeGen’ Max patch (figuur x) en de ‘pathElement’ Max patch (figuur x). De ‘sizeDurAttributeGen’ patch genereert de ‘size’ (totale lengte) en de ‘dur’ (totale tijdsduur) attribuut waarden voor zeven verschillende <path> elementen in de XML structuur. De ‘size’ attribuut waarde is een optelling van alle diagonale afstanden tussen alle gridposities in één <path> element. De ‘dur’ attribuut is een optelling van alle deltatijden in één <path> element.
Figuur 16: Subpatch waarbinnen de totale tijdsduur en afstand van een bewegingstraject worden bijgehouden.
43
5.4.3.3 pathElement De pathElement patch genereert de structuur van het <path> element en plaatst de content ervan op zijn plaats. De eerste lijst in de content heeft index 0 en is de beginpositie van de beweging. Daarom wordt de gemeten deltatijd die nodig was om hier te komen niet gebruikt en vervangen door het getal nul. Voor het opmaken van de attributen in het <path> element is veelvuldig gebruik gemaakt van het sprintf object. Hiermee kunnen verschillende variabelen eenvoudig in één lijst met symbolen en getallen worden gezet. Het pack object waarmee dit efficiënter zou moeten kunnen is niet in staat een attribuutwaarde correct binnen twee apostrofs op te maken. Het sprintf object accepteert als argument symout, dit zorgt er voor dat het een samengestelde string als enkel symbool terug geeft. Het symout argument in combinatie met een backslash resulteert in een correcte opmaak van de attribuutwaarden binnen twee apostrofs .
Figuur 17: Subpatch waarmee de bewegende objecten op een grid worden geplaatst
44
5.5 Analyse van de bewegingsdata De bewegingen van ieder punt van zowel het ‘Wolk’ als het ‘Herder en schaapjes’ algoritme worden door de computer geanalyseerd. De analyse is opgebouwd uit een aantal gespecificeerde bewegingsparameters en wordt gebruikt om de klankparameters van impulsgeneratoren, filters en met physical modeling ontwikkelde klankproducerende objecten aan te sturen. Dit wordt gedaan om een dynamische klank te kunnen realiseren die varieert aan de hand van de bewegingseigenschappen van de gegenereerde ruimtelijke manifestatie. Uit de analyse van twee XY posities waartussen één punt zich beweegt zijn de volgende gegevens af te leiden:
Figuur 18: Main patch voor het doorsturen van de bewegingsdata naar de verschillende analyse processen.
* snelheid (velocity) (m/perclockinterval) * relatieve stuurrichting (relative steering)(-1./1.) * kromming (curvature) (0./infinity) * afstand t.o.v. het midden (distance)(m)
45
5.5.1 Snelheid Met de snelheid wordt aangeduid wat de mate van verplaatsing is per klokinterval. Het klok interval wordt bepaald door de verschil tijd te meten tussen twee veranderde posities. Hier voor wordt het cputimer object gebruikt.
Figuur 19: Subpatch voor het berekenen van de snelheid van een bewegend object.
5.5.2 Relatieve stuurrichting Met de relatieve stuurrichting wordt aangeduid of een object een beweging uitvoert in de richting van de waarnemer. Een object dat beweegt kent een bepaalde snelheid en een bepaalde bewegingsrichting. Als deze parallel ligt met de denkbeeldige lijn die het object met het waarnemingspunt in het midden van het luistervlak verbindt dan is de relatieve stuurrichting 0. Als de beweging haaks is op deze lijn dan is de relatieve stuurrichting 1. Met de richting wordt de hoek aangeduid Alleen de hoek is belangrijk niet de relatieve afstand. De eigenlijke implementatie is gebaseerd op simpele vector algebra.1
Figuur 20: Subpatch voor het berekenen van de relatieve sturing van een bewegend object.
1
Hiervoor ben ik dank verschuldigd aan Peter Pabon die mij bij de implementatie heeft
geholpen.
46
5.5.3 Kromming Met de kromming wordt aangeduid in welke mate het traject van een object afwijkt van een rechte lijn. Wanneer het object zich over een cirkelvormig traject beweegt met een grote diameter is de kromming kleiner dan bij een cirkel met een kleine diameter. De eigenlijke implementatie is gebaseerd op simpele vector algebra.1
Figuur 21: Subpatch voor het berekenen van de kromming van het traject van een bewegend object.
5.5.4 Afstand De afstand omschrijft hoe ver een object zich begeeft vanaf het middelpunt.
Figuur 22: Subpatch voor het berekenen van de afstand van een bewegend object ten opzichte van het midden van het luistervlak.
1
Hiervoor ben ik dank verschuldigd aan Miguel Negrao die mij bij de implementatie heeft
geholpen.
47
5.6 Het genereren van de audio De bewegingsparameters die in de vorige paragraaf zijn beschreven worden gebruikt om de parameters van impulsgeneratoren, filters en verschillende fysieke klankmodellen mee aan te sturen. De impulsgeneratoren zijn gebouwd op basis van ruisgeneratoren uit de Litter Power object library van Peter Castine. De klankmodellen zijn vervaardigd met de Modalys Physical Modeling synthese-engine van IRCAM. Binnen Cycling ‘74 Max/ MSP wordt hiervan het Modalys~ object gebruikt. Hiervoor heeft Manuel Poletti de Mlystool ontwikkeld, welke voorziet in een grafische werkomgeving in tegenstelling tot de Modalys Lisp-programmeeromgeving. Het opnemen van het resulterende geluid gebeurt in meerkanaalsgeluidsbestanden met behulp van het sfrecord~ object. Hierna wordt ingegaan op het ontwerp van het systeem dat het geluid produceert.
Figuur 23: Mainpatch voor het doorsturen van de audio naar het sfrecord~ object en de fysieke klankmodellen.
Hiervoor worden achtereenvolgens de volgende elementen behandeld: * Laagfrequente-ruis generator (LRG) * Stofruis producerende generator (SRG) * Physical Modeling De LRG en de SRG zijn verschillende algoritmes die afzonderlijk van elkaar worden gebruikt om impulsen mee te genereren. Deze impulsen kunnen doorgevoerd worden als excitatie momenten waarmee de fysieke klankmodellen events voort brengen. Hierdoor ontstaat materiaal waaruit gekozen kan worden om zo tot een ruimtelijke klank compositie te komen waarbinnen de beweging als fundamenteel diagram centraal staat. 48
5.6.1 Gefilterde laagfrequente-ruis generator (LRG) De gefilterde LRG is een (Max 4.6) patch die gebouwd is rond het lp.frrr~ object (LowFRRRequentie noise). Het lp.frrr~ object genereert laagfrequente ruis uit een serie random amplitude waarden die gekozen zijn op een constante snelheid die lager ligt dan de sampling rate. Hij functioneert als een ruisgenerator waarvan het signaal door een sample-and-hold module wordt gevoerd. Als argument neemt het object een waarde aan zijn linker ingang waarmee de frequentie in Hertz wordt bepaald. Het lp.frrr~ object berekent dan het dichtstbij liggende integrale nummer aan samples. Tevens is het mogelijk om de rechter ingang een geheel getal tussen 0 en 2 aan te geven. Dit bepaalt de eventuele interpolatie tussen de gegenereerde waarden. Een 1 is lineaire interpolatie, een 2 is kwadratische interpolatie en 0 geen interpolatie (Castine, 2002). Bij deze implementatie van het object wordt meestal geen interpolatie gebruikt. Dat zorgt er namelijk voor dat het object zich gedraagt als een frequente puls generator met random amplitude waarden. Voor het genereren van pitch gerelateerde continue klanken kan overwogen worden om wel een interpolatie te gebruiken.
Figuur 24: Subpatch voor het genereren van op impulsen gebaseerd laagfrequente ruis.
De frequentie van de impulsen is afgeleid van de snelheid van een zwermend object. Er is een mogelijkheid geïmplementeerd om de snelheidswaarden af te ronden naar een veelvoud van een bepaalde grootheid. Dit resulteert in een recht evenredig verband tussen de frequenties van de onafhankelijke impuls generatoren.
49
De resulterende waarde kan eventueel nog vermenigvuldigd worden met een bepaalde grootheid waardoor de bandbreedte wordt gedefinieerd waarbinnen de frequentie varieert. Daarmee kunnen door de de componist verschillende modi worden gehanteerd.
De relatieve sturing van de bewegende objecten in combinatie met de afstand ervan
wordt gebruikt om de afsnijfrequentie van een hoog- en laag-doorlaatfilter aan te sturen. Naarmate de afstand van een object ten opzichte van het midden van het luistervlak toeneemt, wordt de afsnijfrequentie van het hoog-doorlaatfilter vanaf 400 Hz. over een afstand van 60 meter lineair gemoduleerd naar 20 Hz.
Dit gebeurt in de eerste plaats omdat er dan een ruimtelijk contrast ontstaat tussen
de klanken die veraf staan en de klanken die dichtbij staan. In de tweede plaats om de subwoofers van het GoLGVS-systeem te ontlasten. Dit is noodzakelijk omdat het ‘laag’ van een puls erg belastend is voor een luidspreker om weer te geven. Daarbij ontstaan er bij een hoge vermogensbelasting tevens ongewenste klinkende bijeffecten van de luchtverplaatsing door de basreflexpoort.
Wanneer het bewegende object zich in toenemende mate wegdraait van de
denkbeeldige lijn die het met het waarnemingspunt – i.c. het midden van het luistervlak - verbindt dan worden de hoge frequenties van de impulsen in geschaalde proporties weggefilterd. De stuurrichting heeft geen effect op de afsnijfrequentie wanneer het object zich in het midden begeeft, maar wordt steeds groter naarmate de afstand toeneemt. De bovengrens van de bandbreedte waarin wordt gemoduleerd heeft een vaste frequentie van 20 kHz. en de ondergrens wordt over 65 meter gemoduleerd naar 1 kHz. De procedure is ontwikkeld om als het ware het effect van een fysiek draaiende luidspreker te kunnen simuleren. Dit omdat als een echte luidspreker van de luisteraar af gericht staat er eveneens minder hoge frequenties waar te nemen zijn.
Na het uitvoeren van de eerste experimenten met de door impulsen klankmatig
gebroken bewegingen in het GoL GVS-systeem werd duidelijk dat de impulsen die in het luistervlak plaatsvonden, naast de oren van de luisteraar een schrik effect te weeg brachten. Dit is hoogstwaarschijnlijk te wijten aan de relatief grote variatie in versnelling van de gegenereerde bewegingen in combinatie met de goed te lokaliseren impulsen. In een klank installatie is dit wellicht een wenselijk effect maar bij het luisteren naar gecomponeerde elektronische muziek leidt het op een ongewenste manier af. Om voor dit effect te compenseren is een systeem ingebouwd dat het geluidsvolume van de impulsen in toenemende mate terugbrengt vanaf de rand van het luistervlak naar het midden. Op de rand en daarbuiten is het geluidsvolume 1.0 en in het midden is het volume 0.6. Daarmee is dus een gefilterde laagfrequente ruisgenerator ontstaan.
50
5.6.2 Stofruis-producerende generator (SRG) De SRG is een (Max 4.6) patch die gebouwd is rond het lp.ppp~ object (P-P-Popcorn). Dit object is een ruisgenerator die exponentieel gedistribueerde pulsen met variërende amplituden en pulse-breedtes produceert. Als argument neemt het lp.ppp~ object aan zijn linker ingang een waarde waarmee de gemiddelde dichtheid van pulsen per seconde wordt bepaald. Aan zijn rechteringang neemt het object een gehele waarde die de pulsbreedte in samples bepaalt. De daadwerkelijke pulsbreedte is afhankelijk van de signaal vector grootte die in het DSP menu van Max ingesteld kan worden(Castine, 2002).
De ruis die dit object produceert toont gelijkenis met typen ruis die vaak gehoord
worden in telecommunicatie lijnen en radio uitzendingen. Vreemd genoeg hebben pulsen van dit type in een dergelijke natuurlijke situatie allemaal dezelfde polariteit. Dit object voorziet echter in impulsseries met positieve alsmede negatieve polariteit of een symmetrische variant waarbinnen positief en negatief at random gemixt worden. Dit is alleen nuttig wanneer het object gebruikt wordt voor het genereren van controle data. Auditief is hier geen verschil tussen waar te nemen. Dit object voorziet niet in een oplossing voor overlappende impulsen wanneer er hoge dichtheid wordt gegenereerd. Het signaal moet eerst weer op 0. uitkomen voordat een nieuwe puls gegenereerd kan worden.
Figuur 25: Subpatch voor het genereren van impulsen gebaseerd op stofruis.
Het gemiddelde aantal pulsen per seconde wordt bepaald door de snelheid van een bewegend object. Het afronden van de snelheidswaarden heeft hier geen zin omdat het lp.ppp~ object de pulsen at random produceert. De snelheidswaarde kan net als bij de LRG worden vermenigvuldigd met een bepaalde grootheid waardoor het gebied wordt gedefinieerd waarbinnen de dichtheid varieert. Net als voor de LRG geldt dat het geluidsvolume in toenemende mate wordt teruggebracht wanneer de pulsen vanaf de rand naar het midden van het luistervlak plaatsvinden. Als het bewegende object zich in toenemende mate van het middelpunt verwijdert worden er meer lage frequenties aan het signaal toegevoegd. Dit gebeurd om de zelfde reden als voor de LRG. Dit is uitgelegd in de vorige paragraaf.
51
5.6.3 Physical Modelling Er zijn op basis van physical modelling drie verschillende klankmodellen ontwikkeld met Mlys van Poletti (zie de inleiding bij dit hoofdstuk). Mlys voorziet in een doeltreffende manier om het script te genereren voor het Modalys~ realtime physical modeling object. Het principe van Modalys is gebaseerd op een collectie fysisch gedefinieerde objecten waarmee fysieke klankmodellen in elkaar geknutseld kunnen worden, waarvan in realtime de parameters kunnen worden gemoduleerd.
Om een werkend model te maken met Modalys moet er met een aantal zaken
rekening gehouden worden. Modalys werkt met ‘toegangspunten’. Deze zijn gebruikt om een verbinding te kunnen maken tussen de verschillende objecten van de Modalys library. De toegangspunten op een zogenaamd MonoString object bijvoorbeeld bevinden zich alleen op de x-as tussen 0 en 1. Die op een FreeCircPlate (ronde plaat) daarentegen doen zich voor in twee dimensies: een toegangspunt voor de diameter (0-1) en een toegangspunt voor de hoek in graden. Deze toegangspunten worden meestal aan een zogenaamde controller verbonden. Deze controller rekent een inkomend excitatie signaal proportioneel om naar een gerelateerde variabele die het object in beweging kan brengen.
Er zijn verschillende typen controller objecten die dit kunnen bewerkstelligen maar
in eerste instantie wordt meestal een zogenaamde force controller gebruikt, zeker in het geval van complexe modellen waardoor de benodigde computer rekenkracht snel hoog op kan lopen. Een speed controller is uitgebreider te controleren maar daarmee ook minder breed inzetbaar. Wanneer een speed controller bijvoorbeeld wordt gebruikt bij het exciteren met een bipolair signaal van bijvoorbeeld het lp.frrr~ object, levert dit vanwege de abrupte verandering in richting ongecontroleerde klankresultaten op. Het is vermeldenswaard dat het mogelijk is om verschillende controllers aan verschillende punten op één object te verbinden. Dit maakt het mogelijk om bijvoorbeeld een MonoString object op verschillende punten tegelijkertijd te exciteren. Om een klankmodel dan ook daadwerkelijk te kunnen laten klinken is nog een zogenaamd Output object nodig.
Hierbij wordt een verbindingspunt gekozen op het object en een channel_number
om een uitvoer aan te duiden waar de audio heen gestuurd moet worden. Het is mogelijk om aan één object meerdere Output objecten toe te kennen met verschillende verbindingspunten op het object. Dit maakt het mogelijk om een object op meerdere punten te kunnen beluisteren.
Dit is dus een manier waarop een ruimtelijke representatie van een fysiek
klankobject in een ruimtelijke luidsprekeropstelling kan worden gerealiseerd.
Voor de zwermcompositie software zijn drie verschillende dynamisch te controleren
klankmodellen ontwikkeld.
52
Ze zijn als volgt te omschrijven: 1) een klankgroep van zeven in één transversale richting trillende snaren 2) een klankgroep van zeven akoestische gesloten buizen 3) één ronde vrij zwevende plaat met 7 excitatiepunten en 7 luisterpunten 5.6.3.1 Klankmodel 1
Figuur 26: Subpatch met daarin 7 onafhankelijk van elkaar geëciteerde klankmodellen.
Dit klankmodel bestaat uit zeven onafhankelijk van elkaar te exciteren snaren. De snaren bewegen bij een excitatie in één transversale richting. Het klankresultaat is te definiëren als coherente klankgroep. Dit omdat de excitatie momenten van de onafhankelijke snaren aan elkaar gerelateerd zijn door de bewegingsalgoritmes. De fysisch gerelateerde parameters van het hiervoor gebruikte MonoString object zijn in realtime aan te sturen. Een aantal van de parameters worden dynamisch aangestuurd door de data uit de bewegingsanalyse en een aantal worden statisch gedefinieerd.
53
In de tabel hier onder is de organisatie van dit systeem af te lezen. parameter
omschrijving
status
controller
Modes
Antal modes van vibraties die berekent worden bij de simulatie van het object. Hoe meer modes deste meer hoge partiale worden toegevoegd.
handmatig / statisch
-
Length
lengte van de snaar in meters
statisch
-
Tension
mate van luchtelasticiteit in m /kg
dynamisch
snelheid
Density
dichtheid van de lucht kg/m
handmatig / statisch
-
Radius
straal in meters aan een kant van de snaar
handmatig / statisch
-
Young
straal in meters aan de andere kant van de buis
handmatig / statisch
-
Freq-loss
coëfficiënten welke beschrijven hoe de snaar dynamisch energy verliest
relatieve sturing
Const-loss
modus van de snaar verliest energie in proportie met de volgende formule: const-loss + freq-loss (f/1000)2 f = de frequentie van de modus
snelheid
2
3
dynamisch
Tabel 4: Omschrijving van de bij het ‘MonoString’ object behorende fysische parameters. Aanduiding van de status van de aansturing (dynamisch/statisch). Aanduiding van het type bewegingsparameter dat is gebruikt voor de aansturing.
Zoals uit tabel 4 is af te lezen wordt de Tension parameter aangestuurd met de snelheid van een bewegend object. Een hogere snelheid resulteert in hogere Tension waarde, dit wordt perceptueel waargenomen als hogere pitch. De posities van de boven- en ondergrens waarbinnen de snelheid invloed heeft worden bepaald door een waarschijnlijkheidsmasker. De Freq-loss parameter wordt aangestuurd door de relatieve sturing van een bewegend object.
Wanneer het bewegende object zich in toenemende mate wegdraait van de
denkbeeldige lijn die het met het waarnemingspunt verbindt dan worden de frequentie componenten sneller gedempt.
De Const-loss parameter wordt eveneens gemoduleerd aan de hand van de snelheid.
Dit resulteert in een kortere uitklank van de snaar wanneer een relatief hogere snelheid wordt behaald door een object.
54
5.6.3.2 Klankmodel 2
Figuur 27: Subpatch met daarin 7 onafhankelijk van elkaar geëciteerde klankmodellen.
Dit klankmodel bestaat uit zeven onafhankelijk van elkaar te exciteren gesloten buizen. De fysisch gerelateerde parameters van het hiervoor gebruikte ClosedClosedTube object zijn in realtime aan te sturen. Een aantal van de parameters worden dynamisch aangestuurd door de data uit de bewegingsanalyse en een aantal worden statisch gedefinieerd. In de tabel onder is de organisatie van dit systeem af te lezen. parameter
omschrijving
status
status
Modes
Aantal modes van vibraties die berekent worden bij de simulatie van het object. Hoe meer modes deste meer hoge partiale worden toegevoegd.
handmatig / statisch
-
Length
lengte van de buis in meters
handmatig / statisch
-
Air-Elast.
mate van luchtelasticiteit in m2/kg
dynamisch
snelheid
Air-Dens.
dichtheid van de lucht kg/m
handmatig / statisch
-
Radius0
straal in meters aan een kant van de buis
handmatig / statisch
-
Radius1
straal in meters aan de andere kant van de buis
handmatig / statisch
-
Freq-loss
coëfficiënten welke beschrijven hoe de buis energy verliest
dynamisch
relatieve sturing
Const-loss
Modus van de plaat verliest energie in proportie met de volgende formule: const-loss + freq-loss (f/1000)2 f = de frequentie van de modus
dynamisch
snelheid
3
Tabel 5: Omschrijving van de bij het ‘ClosedClosedTube’ object behorende fysische parameters. Aanduiding van de status van de aansturing (dynamisch/statisch). Aanduiding van het type bewegingsparameter dat is gebruikt voor de aansturing.
55
Zoals in tabel 5 is af te lezen wordt de waarde van de Air-Elast. parameter gemoduleerd door de snelheid van een bewegend object. Dit resulteert bij een relatief lagere snelheid in de perceptie van een lagere pitch. De waargenomen klankkleur wordt hier eveneens door beïnvloed.
Net als bij het hiervoor besproken model wordt de Freq-loss parameter aangestuurd
door de relatieve sturing van een bewegend object. Wanneer het bewegende object zich in toenemende mate wegdraait van de denkbeeldige lijn die het met het waarnemingspunt verbindt dan worden de frequentie componenten sneller gedempt. De Const-loss parameter word net als bij het MonoString object gekoppeld aan de snelheid. Dit resulteert in een kortere uitklank van de buis wanneer een relatief hogere snelheid wordt behaald door een object. 5.6.3.3 Klankmodel 3
Figuur 28: Subpatch met daarin 1 klankmodel met 7 onafhankelijke outputs
Dit klankproducerend object is één simulatie van een vrij zwevende plaat. Er is één toeganspunt is verbonden met een snelheid verbinding. De plaat wordt door alle zeven impulsgeneratoren op dit punt geëxciteerd. De zeven Output objecten zijn aan verschillende toegangspunten verbonden. Het klankresultaat van dit model levert hier door in de GoL GVS omgeving vanuit meerde verschillende invalshoeken verschillende percepties.
56
parameter
omschrijving
status
type
Modes
Aantal modes van vibraties die berekent worden bij de simulatie van het object. Hoe meer modes deste meer hoge partiale worden toegevoegd.
handmatig / statisch
-
Radius
straal in meters van de plaat
handmatig / statisch
-
Thickness
dikte van de plaat in meters
handmatig / statisch
-
Radius
Dichtheid van de plaat in kg/m
handmatig / statisch
-
Young
Young’s modulus in N/m2
handmatig / statisch
-
Freq-loss
Coëfficiënten welke beschrijven hoe de plaat energy verliest
dynamisch
relatieve sturing
Const-loss
modus van de plaat verliest energie in proportie met de volgende formule: const-loss + freq-loss (f/1000)2 f = de frequentie van de modus wanneer beide waarden 0 zijn zal de plaat eeuwig resoneren
dynamisch
snelheid
3
Tabel 6: Omschrijving van de bij het ‘ClosedClosedTube’ object behorende fysische parameters. Aanduiding van de status van de aansturing (dynamisch/statisch). Aanduiding van het type bewegingsparameter dat is gebruikt voor de aansturing.
Net als bij de hiervoor besproken modellen wordt de Freq-loss parameter aangestuurd door de relatieve sturing van een bewegend object. Wanneer het bewegende object zich in toenemende mate wegdraait van de denkbeeldige lijn die het met het waarnemingspunt verbindt dan worden de frequentie componenten sneller gedempt. De hoge frequentie componenten sterven daarbij sneller uit dan de lage.
De Const-loss parameter word net als bij het MonoString en het ClosedClosedTube
object gekoppeld aan de snelheid. Dit resulteert in een kortere uitklank van de buis wanneer een relatief hogere snelheid wordt behaald door een object. Compositorisch gezien wordt hierdoor voorkomen dat het bewegingstraject van het object dichtslibt met overbodig klanken.
57
6. Conclusie Uit deze scriptie is gebleken dat een in de fysieke werkelijkheid voorkomend fenomeen als zwermgedrag een vruchtbare bron van inspiratie kan zijn. Het stimuleerde tot een reflectie op impulsen als kleinste elementen binnen de elektronische muziek en op bewegingsprocessen als basis voor ruimtelijk componeren. Het stimuleerde tevens tot nadenken over de ontwikkeling van compositiesoftware die bruikbaar is binnen het golfveldsynthese systeem van de Game of Life stichting. In de afgelopen jaren beschikbaar gekomen software werd geexploreerd op mogelijkheden daartoe. Het bleek zinvol om daar op voort te bouwen. De ontwikkelde software biedt de mogelijkheid om objecten ‘zwermachtige’ bewegingen te laten doorlopen, de ontstane bewegingen discreet te beschrijven en op basis daarvan impulsen te genereren. Er is duidelijk gemaakt hoe ontworpen fysieke klankmodellen met deze impulsen kunnen worden geexciteerd waardoor ‘klanklandschappen’ ontstaan. Met het concept ‘zwermgedrag’ als uitgangspunt blijkt aan dergelijke klanklandschappen een fascinerende steeds wisselende coherente samenhang gegeven te kunnen worden. Tevens is uiteengezet hoe de grafische gebruikers-interface voor GVS van de GoL in staat stelt om de gegenereerde bewegingstrajecten te kunnen reproduceren binnen grote ruimtes.
Uit hoofdstuk vijf is gebleken dat de beschikbare hardware en software nog wel
beperkingen opleveren. Dat impliceert dat er voor de toekomst nog het nodige te wensen over blijft. De uiteenzettingen in deze scriptie beperken zich bijvoorbeeld vooralsnog tot het tweedimensionale luistervlak binnen het GVS-systeem, terwijl in theorie natuurlijk ook driedimensionale toepassingen denkbaar zijn. Maar de belangrijkste implicatie van de geboden theoretische en praktische doordenking van zwermbewegingen is dat een ‘tool’ bleek te kunnen worden ontwikkeld met rijke en dynamische klankmogelijkheden. Deze scriptie en de daarin besproken software hebben een aanzet willen bieden voor de verdere ontwikkeling van een fysieke driedimensionale vormgeving van elektronische muziek.
58
Geraadpleegde literatuur
Berge ten F.B.S., De reproductie van de ruimtelijkheid van geluid Ma. Thesis European Media Master of Arts (Audio Design) Hilversum 2007
Berkhout G.,
Journal of the Audio Engineering Society 36 No. 12, Delft 1988
Castine P., Litter Power Package Documentation 2002
Eisenman P., Diagram Diaries Universe Publishing Ney York 1999
Henry C., Physical Modeling for Pure Data (PMPD) and real time interaction with an audio synthesis Hofmann J.J., Towards spatial music
Earshot- the Journal of the UK&Ireland Soundscape community 2002
Liu Y. and Passino K.M. Swarm Intelligence: Literature Overview Dept. of Electrical Engineering, The Ohio State University 2000 Ohio
Morrison J. and Waxman D., Modalys Reference IRCAM Centre Georges Pompidou 1996 Paris
Pfeil J., Swarm Intelligence
Comunication and Operating systems group, Berlin University of Technology 2006 Berlin
Raaijmakers D., De kunst van het machine lezen Arjen Mulder en Joke Brouwer, Monografie V2 instituut voor onstabile media/NAi Uitgevers Rotterdam 2007
Raaijmakers D., Cahier <<M>> Kleine Morfologie van de elektrische klank Orpheus Instituut, Universitaire Pers Leuven 2000
Reynolds, C.W., Flocks, herds and schools: A distributed behavioral model. 14th annual conference on Computer Graphics and Interactive Techniques 1987
Stockhausen K., Stockhausen on Music
Lectures & Interviews compiled by Robin Maconie Marion Boyars Publishers London / New York 1989
Tazelaar K., Het stuk is grijs
Arjen Mulder en Joke Brouwer, Monografie V2 instituut voor onstabile media/NAi Uitgevers Rotterdam 2007
Xenakis I., Formalized Music: Thought and Mathematics in Music Pendragon Press New York 1992
59