Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

Embed Size (px)

Citation preview

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    1/70

    UNIVERSITÀ DEGLI STUDI DI TORINO

    Corso di laurea in Informatica

    Anno accademico 2004/2005

    ANALISI E IMPLEMENTAZIONE DI UN SISTEMA FORMALE PER LA

    COMPOSIZIONE MUSICALE

    Relatore Candidato

    Prof. Vincenzo Lombardo Stefano Dobrilla

    Matricola n. 177725

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    2/70

    INDICE

    1INTRODUZIONE................................................................................................................................................................... 1

    1.1ORIGINI DELLA SINTESI GRANULARE......................................................................................................................................... 11.2 LA COMPOSIZIONE BASATA SULLA SINTESI GRANULARE............................................................................................................. 1

    1.3POSSIBILI APPROCCI ALLA SINTESI GRANULARE.......................................................................................................................... 2

    1.4GEOGRAPHY......................................................................................................................................................................... 4

    1.5SCOPO DELLA TESI................................................................................................................................................................. 6

    2ANALISI DI GEOGRAPHY................................................................................................................................................ 7

    2.1IL LIVELLO-1........................................................................................................................................................................ 7

    2.1.1Definizione 1: Evento............................................................................................................................................... 7 2.1.2Definizione 2: Track ................................................................................................................................................. 8 2.1.3Definizione 3: Grain Generator .............................................................................................................................. 8 2.1.4Definizione 4: Vertice.............................................................................................................................................. 92.1.5Definizione 5: Arco.................................................................................................................................................. 92.1.6Definizione 6: Peso di un arco................................................................................................................................ 92.1.7Definizione 7: Graph Actant ................................................................................................................................. 102.1.8Esempio di Grain Generator ................................................................................................................................. 102.1.9Processo di generazione di track .......................................................................................................................... 102.1.10Conclusioni........................................................................................................................................................... 12

    2.2IL LIVELLO-2...................................................................................................................................................................... 122.2.1Definizione 8: Control Space................................................................................................................................ 122.2.2Definizione 10: Traiettoria.................................................................................................................................... 122.2.3Definizione 11: Space Actant ................................................................................................................................ 122.2.4Definizione 12: Angolo di orientamento di sa..................................................................................................... 132.2.5Esempi di control space......................................................................................................................................... 14

    2.3LA GENERAZIONE DELLO SCORE............................................................................................................................................ 152.3.1Definizione 13: Grano........................................................................................................................................... 16 2.3.2Definizione 14: Score............................................................................................................................................. 17 

    2.3.3Esecuzione del control space................................................................................................................................ 17 2.3.4Esempio di score.................................................................................................................................................... 192.3.5Conclusioni............................................................................................................................................................. 20

    2.4CONCLUSIONI GENERALI....................................................................................................................................................... 20

    3OBJECT ORIENTED ANALYSIS (OBJECT MODELING)...................................................................................... 21

    3.1LIVELLO-1.......................................................................................................................................................................... 21

    3.1.1Oggetti..................................................................................................................................................................... 213.1.2Strutture.................................................................................................................................................................. 213.1.3Attributi................................................................................................................................................................... 213.1.4Associazioni............................................................................................................................................................ 223.1.5Servizi...................................................................................................................................................................... 22

    3.2LIVELLO-2.......................................................................................................................................................................... 22

    3.2.1Oggetti..................................................................................................................................................................... 223.2.2Strutture.................................................................................................................................................................. 233.2.3Attributi................................................................................................................................................................... 233.2.4Associazioni............................................................................................................................................................ 243.2.5Servizi...................................................................................................................................................................... 24

    4REQUIREMENTS SPECIFICATION DOCUMENT................................................................................................... 27

    4.1 INTRODUCTION................................................................................................................................................................... 27

    4.1.1Purpose................................................................................................................................................................... 27 4.1.2Definitions, Acronyms, Abbreviations.................................................................................................................. 27 4.1.3Notational Conventions......................................................................................................................................... 27 

    4.2OVERALL DESCRIPTION........................................................................................................................................................ 27

    4.2.1Product Perspective............................................................................................................................................... 27 4.2.2Product Functions Overview................................................................................................................................. 28 

    4.3SPECIFIC REQUIREMENTS...................................................................................................................................................... 28

    4.3.1Inputs and Outputs................................................................................................................................................. 28 4.3.2Functional Requirements....................................................................................................................................... 37 

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    3/70

    4.3.3External Interface Requirements.......................................................................................................................... 37 4.3.4Design Contraints.................................................................................................................................................. 37 

    5OBJECT ORIENTED DESIGN......................................................................................................................................... 38

    5.1OBJECT MODELING.............................................................................................................................................................. 38

    5.2DYNAMIC MODELING.......................................................................................................................................................... 38

    5.3FUNCTIONAL MODELING...................................................................................................................................................... 38

    5.4IMPLEMENTATION CONCERNS................................................................................................................................................ 40

    5.5DETAILED DESIGN............................................................................................................................................................... 40

    5.5.1GAct ......................................................................................................................................................................... 415.5.2Shifting Vector ........................................................................................................................................................ 415.5.3Trajectory................................................................................................................................................................ 46 5.5.4Vertex...................................................................................................................................................................... 495.6CONCLUSIONI...................................................................................................................................................................... 49

    6CONCLUSIONI.................................................................................................................................................................... 50

    7BIBLIOGRAFIA.................................................................................................................................................................. 51

    8APPENDICE.......................................................................................................................................................................... 53

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    4/70

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    5/70

    1Introduzione

    1.1 Origini della sintesi granulare

    È noto che la luce è caratterizzata da una  natura duale, cioè può essere descritta in termini diproprietà ondulatorie o in termini di proprietà particellari: nel primo caso, la luce è vista comeun’onda, nel secondo caso, viene vista come un insieme di particelle (fotoni).

    Oggi sappiamo che il suono non è caratterizzato da una tale natura duale (il suono è un’onda); inpassato, però, sono state avanzate visioni atomistiche del suono come particelle sonore: lo studiosoolandese I. Beekman (1588-1637) nel 1616 propose una teoria “corpuscolare” del suono (vedi [3], e[7]), secondo la quale qualunque oggetto in grado di vibrare e di emettere un suono (ad esempiouna corda) taglierebbe l’aria circostante in corpuscoli sferici di aria proiettati in tutte le direzioni;sempre secondo Beekman, quando questi corpuscoli urtano contro il timpano, si percepisce ilsuono.

    Sebbene questa teoria delle particelle sonore non abbia attualmente valenza scientifica, essa èimportante perché pone le basi per la definizione e la comprensione della sintesi granulare.

    La nozione di un approccio granulare (o quantistico) al suono compare per la prima volta nel1946-47 in due articoli del fisico britannico D. Gabor (vedi [10], [11]), nei quali viene avanzata unanuova teoria, ispirata dalla fisica quantistica, secondo la quale qualunque suono può essere descrittoda una rappresentazione granulare, ovvero da un’appropriata sequenza di “unità di informazioneacustica” di durata quasi istantanea. Questa ipotesi fu verificata matematicamente da M. Bastiaansnegli anni Ottanta (vedi [1], [2]).

    Negli anni Sessanta, anche l’inventore della cibernetica N. Wiener [31], e il teoricodell’informazione A. Moles [19] hanno avanzato non solo rappresentazioni granulari del suono, ma

    anche ipotesi sulla natura discreta della percezione e del campo sonoro.Ad un’origine teorica della sintesi granulare, si affianca un’origine estetica: nel 1960, I. Xenakis fuil primo a definire una teoria per la composizione basata sui grani, che nasceva dal seguente lemma:“Qualunque suono, anche una variazione musicale continua, è concepito come un assemblaggio diun gran numero di suoni elementari adeguatamente disposti nel tempo. Nell’attacco, sostegno edecadimento di un suono complesso, appaiono migliaia di suoni puri in un più o meno breveintervallo di tempo   ∆t” [32]. Nonostante Xenakis fosse riuscito a riprodurre suoni granulari permezzo di generatori di tono analogici (si ascolti la composizione “Analogique A-B” per orchestrad’archi e nastro magnetico), la sua visione non potè attuarsi per la mancanza della tecnologianecessaria.

    Solo più tardi, nel 1974, il ricercatore e compositore C. Roads sviluppa la prima implementazioneper calcolatore della sintesi granulare [21], in cui il metodo di lavoro composizionale può essereparagonato alla tecnica pittorica   pointilliste, dove ai puntini di colore corrispondono i grani (disuono).Roads usa questa implementazione in molte sue composizioni, tra le quali citiamo “nscore”(1980), “Field” (1981), e “Clang-tint” (1993). In seguito, sono state proposte diverseimplementazioni della sintesi granulare: oltre a Roads, è importante citare il compositore canadeseB. Truax, per il contributo dato per la definizione di tecniche alternative per il controllo della sintesigranulare. Le tecniche proposte da Xenakis, Roads e Truax saranno descritte nel paragrafo 1.3.

    1.2 La composizione basata sulla sintesi granulare

    La sintesi del suono è un processo di generazione di flussi di campioni in modo algoritmico.La sintesi granulare è un termine generale che include vari tipi di tecniche di sintesi basate su unarappresentazione granulare del suono. In generale, gli eventi sonori sono costruiti partendo da

    1

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    6/70

    elementi sonori elementari, i grani, di durata molto breve (tipicamente dai 5 ai 150 millisecondi).Le ristrette dimensioni di un grano lo rendono appena percepibile all’orecchio umano: diventadifficile catturare e distinguere le caratteristiche di durata, frequenza, ampiezza e forma d’onda diun grano.

    Per comprendere in che cosa consiste una composizione musicale basata sulla sintesi granulare, è

    utile ricorrere ad una metafora, immaginando una tela pointilliste, dove ciascun puntino di colorerappresenta un singolo grano della composizione. Quando la fruizione di un quadro siffatto avviene

    ad una opportuna distanza, l’osservatore percepisce la composizione nel suo insieme, dimenticandola struttura puntiforme; analogamente, nella composizione musicale basata sulla sintesi granulare,quando i grani si susseguono a breve distanza temporale, l’ascoltatore percepisce un suonocontinuo.

    D’altro canto, in entrambi i casi, sia in campo pittorico, sia in campo musicale, il risultato finalerisente della particolare tecnica usata: un quadro puntinista mantiene pur sempre un certo effetto dirarefazione dell’immagine, mentre una composizione musicale basata sulla sintesi granulare, ingenerale dà origine a materiali sonori molto densi e pulviscolari (si pensi ad un rullo di tamburo).

    Continuando la metafora, è chiaro che il pittore puntinista, oltre a concentrarsi sul singolo puntinodi colore, deve soprattutto concentrarsi sulla composizione nel suo insieme.

    Nell’ambito della sintesi granulare, questa difficoltà del muoversi dal livello del singolo grano (lamicrostruttura   della composizione), al livello composizionale (la   macrostruttura   dellacomposizione), possibilmente passando attraverso il livello delle note (la   ministruttura   dellacomposizione) e il livello del ritmo (la  mesostruttura della composizione), è una delle principalidifficoltà che incontra il compositore [32].

    Infatti, la complessità del suono generato dalla sintesi granulare deriva dalla quantità di datinecessari per descrivere i singoli grani di cui il suono stesso è composto: se  n  è il numero diparametri per ciascun grano, e d  il numero medio di grani al secondo (densità media), occorrono

    d ·

    n   valori di parametro per specificare un secondo di musica [23]. Dal momento che d  tipicamentevaria dall’ordine della decina all’ordine della migliaia, è chiaro che per lo scopo di controllo sullamacrostruttura della composizione, diventa necessaria un’unità di alto livello per l’organizzazionedei grani (cioè, un’unità di controllo che va oltre i dettagli microstrutturali dalla composizione), conlo scopo di aiutare il compositore a comporre in modo intuitivo e relativamente immediato grandiquantità di grani, e ad avere una visione d’insieme del prodotto compositivo.

    Ciascuna di tali unità di controllo implementa quindi una particolare tecnica/metodo diorganizzazione del processo compositivo basato sulla sintesi granulare. Nel prossimo paragrafodescriveremo brevente le principali tecniche proposte.

    1.3 Possibili approcci alla sintesi granulareNegli ultimi trent’anni (dalle prime esperienze di I. Xenakis in poi) sono state sviluppate diversetecniche, ciascuna delle quali porta a risultati composizionali e timbrici completamente diversirispetto alle altre. In generale, si distinguono due principali approcci: un cosiddetto “approccionotale” ( note approach) ed un approccio stocastico (stochastic approach) [30].

    Il primo di tali approcci è orientato alle note, ovvero il suo principio è che la microstruttura (illivello dei grani) è incorporata nella ministruttura (il livello delle note) della composizione: inquesto modo la granularità (la microstruttura) va a incidere soltanto sul timbro di ogni nota (omeglio, sul timbro di ogni oggetto sonoro a livello ministrutturale), mentre non ha alcuna rilevanzaa livello composizionale (macrostrutturale). Questo fa sì che permanga la separazione logica,

    propria della composizione tradizionale, tra suono (o meglio, timbro) e struttura [29] (si pensi allamusica tonale, cioè alla teoria su cui si basa tutta la produzione musicale occidentale che va dallaseconda metà del Seicento alla seconda metà dell’Ottocento e oltre). L’approccio notale trova

    2

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    7/70

    quindi spazio in tutte quelle applicazioni che si limitano a “granularizzare” oggetti sonoripreesistenti, come i moduli grain-based di applicazioni DSP [23].

    Contrariamente all’approccio notale, l’approccio stocastico alla sintesi granulare fa sì che nelprocesso di sintesi sia già insita una propria valenza formale a livello compositivo: il principio ditale approccio sta nell’“unire suono e struttura” ([29]: 120), annullando la netta linea di confine tra

    microstruttura e macrostruttura. Diverse sono le metodologie stocastiche per il controllo dellasintesi granulare proposte da autori come Xenakis, Truax e Roads; al fine di dare una visione

    d’insieme di tali metodologie, utile per comprendere più a fondo il caso di studio di questa tesi,introduciamo in modo intuitivo le tecniche proposte da tali autori.

    La tecnica di Xenakis, descritta in [32], si basa sul concetto di screen: uno screen è una griglia chemodella il campo dell’udibile in modo simile al diagramma di Fletcher-Munson (vedi la Figura 1).In uno screen ogni colonna rappresenta un intervallo di frequenza, e ogni riga indica un’intensitàsonora: in questo caso, un grano risulta essere una singola cella dello screen. In uno screen vengonoquindi “disseminati” i grani. Una sequenza di screen (detta  book ), in cui ciascuno screen ha unadurata di tempo fissa, forma l’evoluzione di un suono complesso. In generale, per riempire gli

    screen con i grani possono essere usati algoritmi generativi di ogni tipo; la tecnica di Xenakisprevede che i grani siano sparsi in modo casuale all’interno di ciascuno screen, e che nuovi screenpossano essere costruiti attraverso operazioni simili alle operazioni insiemistiche (intersezione,unione, complemento, ecc.).

    La tecnica proposta da Truax (vedi [28] e [29]), rientra in ciò che in letteratura viene definita Quasi-Synchronous Granular Synthesis (QSGS, [22], [23], [24]), secondo la quale una composizione èformata da uno o più  flussi di grani, in cui i grani sono separati da un intervallo di tempo variabile,irregolare. I parametri di ogni flusso di grani sono controllati mediante maschere di tendenza, chespecificano l’andamento qualitativo dei parametri nello scorrere del tempo: ad esempio, l’intervallodi frequenza o ampiezza in cui rientrano i grani del flusso, la densità dei grani nel flusso (numero di

    grani nell’unità di tempo), l’insieme di forme d’onda dei grani nel flusso, ecc. La forza di questatecnica sta nel fatto che il controllo viene definito a livello dei flussi (non dei grani), rendendo ilprocesso compositivo semplice ed intuitivo: analogamente a quanto viene tradizionalmente fatto

    3

    Figura 1: il grafico a sinistra è il diagramma di Fletcher-Munson, detto anche delle curve isofone, in cui le ascisse sonole frequenze (in Hz), le ordinate sono le intensità (in dB). Considerando convenzionalmente con valore 0 dB la pressionenecessaria per raggiungere la soglia di udibilità per la frequenza di 1000 HZ, il diagramma esprime come l’intensità

    della sensazione uditiva (soggettiva) per le diverse frequenze vari in modo non lineare rispetto al variare della pressioneacustica (da [23]:1057). A destra è mostrato come uno screen modella il campo dell’udibile all’interno del diagramma diFletcher-Munson: le celle nere di tale screen sono grani, ciascuno dei quali rientra in un certo intervallo di frequenza(“F”) e di intensità (“G”) (da [32]).

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    8/70

    sulle composizioni polifoniche, il compositore può ragionare sia in termini “contrappuntistici”,valutando lo svilupparsi simultaneo nel tempo dei flussi di grani (delle “voci”, come in polifonia),sia in termini “armonici”, valutando quanto risulta dall’emissione contemporanea dei flussi di grani.

    La tecnica di Roads, detta Asynchronous Granular Synthesis (AGS, [22], [23], [24]), vieneintrodotta da Roads stesso attraverso la seguente metafora: “La AGS dà al compositore un getto

    spray di precisione per il suono, dove ogni punto nello spray è un grano sonico”. Secondo talemetodologia, i grani vengono sparsi in modo probabilistico lungo una specifica durata di tempo

    all’interno di regioni piane frequency-versus-time, dette   cloud . Un cloud viene specificato dalcompositore dai seguenti sette parametri: istante di inizio e durata del cloud, durata di grano (chepuò essere costante, random, derivare da una curva, o variare in funzione della frequenza delgrano), densità dei grani nel cloud (numero di grani nell’unità di tempo), le bande di frequenzeentro le quali sono comprese le frequenze dei grani, l’inviluppo d’ampiezza del cloud (non deigrani), le forme d’onda dei grani, la dispersione spaziale dei grani nel cloud. Il cloud diventa ciòche per la musica tonale è la nota: la nuova unità con cui il compositore lavora.

    Avendo preso visione delle principali tecniche di composizione basate sulla sintesi granulare, nel

    prossimo paragrafo introduciamo un nuovo metodo di organizzazione del processo compositivobasato sulla sintesi granulare, che ha lo scopo di definire uno strumento di controllo di facileutilizzo, e che non richiede una quantità di dati ingestibile.

    1.4 GeoGraphy

    GeoGraphy  (o  GeoGrafia) è un sistema formale per il controllo algoritmico della composizioneelettroacustica basata sulla sintesi granulare. Esso è stato definito da A. Valle e V. Lombardo in

    [30].

    GeoGraphy presenta due livelli: un primo livello (livello-1), che prevede una rappresentazione ingrafi nei quali i vertici rappresentano i grani e gli archi relazioni temporali tra gli stessi, ed un

    secondo livello (livello-2) che distribuisce i grafi del primo livello in uno spazio di controllo.

    Una composizione è una traiettoria nello spazio di controllo, opportunamente interpretata percontrollare un insieme di parametri di rilevanza acustica e musicale.

    Per dare una descrizione concettuale e immediata del sistema, è utile ricorrere alla “metafora deipercussionisti”: un grafo può essere pensato come set di percussioni in cui ciascuna percussionecorrisponde ad un vertice del grafo stesso. Su ciascun set di percussioni (grafo) possono suonarecontemporaneamente più percussionisti; l’ordine seguito dai batteristi nel suonare le percussionidella batteria corrisponde ad un determinato percorso seguito attraverso gli archi del grafo.Immaginiamo ora di porre un ascoltatore e diversi set di percussioni (grafi), e relativi percussionisti,in una sala relativamente grande (spazio di controllo). L’ascoltatore inizierà a muoversi ad una certa

    velocità, percorrendo una data traiettoria all’interno della sala mentre i percussionisti stannosuonando. La composizione risultante può essere pensata come quanto ascoltato dall’attante nelpercorrere la traiettoria.

    Questa strutturazione del sistema nei due livelli permette al compositore di concentrarsi, prima,sulla microstruttura della composizione (sui singoli grani) e sulle relazioni tra i tempi di attacco digruppi di grani, definendo i grafi nel primo livello, e in un secondo tempo sulla macrostruttura dellastessa composizione, andando a distribuire i grafi e definendo una traiettoria nello spazio dicontrollo.

    Nel costruire i grafi, il compositore definisce quindi il materiale sonoro, anche complesso, che verràutilizzato nella composizione. La disposizione dei grafi e la definizione di una traiettoria in uno

    spazio è sostanzialmente un’operazione di orchestrazione: il materiale sonoro di base generato daigrafi viene filtrato, controllato e organizzato dal sistema sulla base della traiettoria definita e delladisposizione dei grafi nello spazio di controllo.

    4

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    9/70

    In Figura 2 è data una rappresentazione grafica di una possibile configurazione:

    La struttura dei grafi in Figura 2 dà immediatamente un’informazione sul tipo di materiale sonorogenerato dai grafi stessi: ad esempio, se consideriamo a livello-1 il primo grafo incontratodall’attante nel percorrere la traiettoria (G1) siamo in grado di dire che esso genererà un suonoripetitivo, costituito da una sequenza di grani identici tra loro (si pensi ad un martello pneumatico, oad una erre tenuta), perché generati sempre e solo dallo stesso vertice “1”. Se consideriamo invecelo stesso grafo a livello-2, cioè nel contesto della configurazione rappresentata in Figura 2, il suonoda esso generato non è più del tutto ripetitivo: infatti, sebbene il suono mantenga una base uniformee costante, la traiettoria produce un controllo diretto sui parametri dei grani costituenti il suonostesso.

    Se immaginiamo ad esempio che l’intensità dei grani generati sia inversamente proporzionale alladistanza tra il vertice e l’ascoltatore che percorre la traiettoria, allora risulta evidente che, a mano amano che l’ascoltatore prosegue nella navigazione della traiettoria, il suono va via via scemando,dal momento che, in generale, l’ascoltatore si allontana dal vertice del grafo in questione.

    Come da una configurazione è possibile ricavare informazioni sia sul materiale sonoro di basescelto (sulla microstruttura della composizione), sia sull’organizzazione di tale materiale all’internodella composizione (sulla macrostruttura della composizione), così da un’idea musicale più o menoprecisa è possibile dedurre una configurazione (seppur approssimativa) che meglio delle altrerealizzi quell’idea. Questa sorta di relazione biunivoca tra idea musicale e configurazioneall’interno dello spazio di controllo, non solo raggiunge l’obbiettivo di facilitare il processocompositivo basato sulla sintesi granulare, ma rappresenta per il compositore motivo di ispirazione

    musicale.

    Questa nuova tecnica di composizione basata sulla sintesi granulare possiede quindi unainteressante forza compositiva, e costituisce uno strumento di controllo di facile utilizzo.

    5

    Figura 2:   rappresentazione grafica di una possibile configurazione all’interno dello spazio dicontrollo. In tale spazio sono stati disposti quattro grafi (G1, G2, G3, G4), i cui vertici sono statietichettati con numeri interi successivi. La traiettoria è la sequenza di frecce che va dal punto “Inizio”al punto “Fine”; essa viene percorsa dall’ascoltatore.

    1

    2

    3

    4

    5

    1

    2

    3 4

    5

    1

    1

    3

    2

    Inizio

    Fine

    Ascoltatore

    G1

    G2

    G4

    G3

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    10/70

    1.5 Scopo della tesi

    Lo scopo di questa tesi consiste nella realizzazione di un prototipo che implementi il sistemaGeoGraphy: tale prototipo dovrà realizzare tutta la parte relativa al controllo, ovvero deve essere ingrado di generare uno score che contenga tutti i parametri dei singoli grani generati dal sistema. Lo

    score generato andrà in pasto ad un interprete, che si preoccuperà di adattarlo rispetto alle esigenzedel modulo di sintesi adottato per l’esecuzione della composizione generata. Il prototipo dovràessere in grado anche di generare uno score adatto per Csound (linguaggio per la sintesi edelaborazione del suono), evitando così l’interpretazione dello score da parte di un interprete speficoper Csound. La Figura 3 dà una rappresentazione intuitiva del processo di elaborazione che subiscelo spazio di controllo definito dall’utente.

    L’attività di sviluppo seguirà il modello a cascata di processo software: il motivo di questa sceltarisiede sia nella semplicità e linearità proprie di tale modello, sia nella caratteristica di abbondanteproduzione di documentazione di cui gode il processo a cascata.

    I successivi capitoli sono i documenti prodotti nelle seguenti attività del processo software: analisidel problema, object modeling, specifica del problema, progettazione orientata agli oggetti,progettazione di dettaglio.

    6

    GeoGraphy InterpreteModulo di

    SintesiScore Score interpretatoControl

    SpaceAudio

    Figura 3:  Rappresentazione del processo di elaborazione dello spazio di controllo (Control Space):GeoGraphy  traduce il  Control Space  in uno  Score  (una partitura, sotto forma di sequenza di eventisonori); un Interprete si preoccupa di tradurre lo Score nella forma specifica per il Modulo di Sintesi, cheeseguirà lo Score Interpretato, producendo il suono (Audio).

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    11/70

    2Analisi di GeoGraphyIn questo capitolo definiamo tutte le entità coinvolte nel sistema GeoGraphy. Le definizioni datesono frutto di un’analisi dettagliata di [30]. Ogni definizione è accompagnata da un’introduzioneintuitiva, al fine di rendere più facile comprensione la trattazione.

    Useremo i seguenti insiemi numerici: l’insieme N = {0, 1, 2, …} dei numeri naturali; l’insieme dei

    numeri reali non strettamente positivi R+ = [0, + ) . Indicheremo con ∅ l’insieme vuoto,

    con d(A, B) la distanza √[(x1-x2)2 + (y1-y2)2] tra i due punti A = (x1, y1), B = (x2, y2)∈R2,

    con |I| la cardinalità di I, dove I è un qualche insieme, e con J \ I l’insieme complementare di J in I

    {x∈J: x∉I}, dove I e J sono due insiemi. Il tempo sarà dato in secondi, e lo spazio in metri.

    Come già accennato nel precedente capitolo introduttivo, GeoGraphy è un sistema a due livelli peril controllo algoritmico della composizione elettroacustica basata sulla sintesi granulare.

    Nei seguenti paragrafi affrontiamo separatamente i due livelli del sistema.

    2.1 Il Livello-1

    Il  Livello-1 fornisce il materiale sonoro di base al processo compositivo. Per rendere più chiaral’idea, possiamo ricorrere al linguaggio metaforico, considerando una composizione comeuna torta; il Livello-1 fornisce gli ingredienti necessari per cucinare la torta.

    Ogni “ingrediente sonoro” fornito dal Livello-1 è detto track , e presenta una struttura granulare: ècioè una sequenza di grani, o meglio di eventi, cioè unità di informazione acustica.

    Anche se la distinzione tra grani ed eventi sarà più chiara quando si andrà ad analizzare il secondolivello, cerchiamo comunque di capire che tipo di differenza c’è tra grani ed eventi, e nel

    contempo cerchiamo di chiarire la relazione tra track ed eventi. A questo scopo, riprendendola metafora culinaria, possiamo pensare alle track come ingredienti “pulviscolari” crudi(zucchero, sale, farina, pepe, ecc); un evento è come un singolo granello dell’ingrediente (ungranello di zucchero, di sale, di pepe, ecc.). Al secondo livello avverrà la cottura e la misturadi tali ingredienti (l’esecuzione della ricetta). La cottura modifica gli ingredienti, rendendolicommestibili. Analogamente, la generazione di una composizione a Livello-2 trasforma glieventi in grani: a differenza degli eventi, i grani contengono tutte le informazioni prodotte dalsistema, sia a Livello-1, sia a Livello-2.

    Un evento è descritto da un certo insieme di informazioni, di  parametri di rilevanza acustica emusicale; il minimo insieme di parametri necessario per definire un evento è composto dalleseguenti quattro informazioni: il tempo di attacco dell’evento (l’istante in cui l’evento viene

    emesso), la durata dell’evento, l’ampiezza d’onda dell’evento, e la posizione stereofonicadell’evento.

    In realtà, quest’ultimo parametro (detto anche “pan”) non è necessario per definire un evento (adesempio, se si lavora con un unico speaker), ma dal momento che, come sarà più chiaroquando presenteremo il Livello-2, concettualmente GeoGraphy organizza il materiale sonorofornito dal Livello-1 in uno spazio bidimensionale, risulta naturale aggiungere agli eventil’informazione relativa alla posizione stereofonica degli stessi.

    Diamo quindi le definizioni di evento e track.

    2.1.1 Definizione 1: Evento

    Sia m∈N, m≥4. Un evento e è una tupla (p1, p2, …, pm), dove:

    7

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    12/70

    tempoT

    1={… , , … }

    di+1

    ti+1

    ei+1

    ei

    ti

    di

    tempoT

    2={… , , … }

    di+1

    ei+1

    ei

    ti / t

    i+1

    di

     

    p1∈R+ è il tempo di attacco di e;

     

    p2∈(0,+ ) è la durata di e; 

    p3∈[0,1] è l’ampiezza di e; 

    p4∈[-1,1] è il pan di e; 

    p5, …, p m∈[0,1] .

    2.1.2 Definizione 2: Track

    Sia n∈N. Una track  T è una sequenza di n eventi tale che:

      se 0 < i < j ≤ n ⇒  ti ≤ t j ,dove ti , t j è il tempo di attacco dell’evento ei , e j , rispettivamente.

    La Figura 4 illustra due esempi di track che rispettano la definizione data sopra.

    Vediamo ora come il Livello-1 genera le track. Per fare questo, tale livello si serve di grafi, dettigrain generator , in cui, intuitivamente, i vertici possono essere definiti come dei generatori

    di eventi, mentre gli archi definiscono le relazioni temporali tra gli eventi generati daivertici.

    Sui grain generator sono posti dei cosiddetti   graph actant  (“attanti di grafo”), che possiamoimmaginare come degli esserini che, quando raggiungono un vertice (attraversando un arco),si preoccupano di attivare il vertice raggiunto, affinchè quest’ultimo generi un evento.

    Nel suo navigare, un graph actant genera una track: quindi, il numero di track generate da un graingenerator è pari al numero di graph actant posti nello stesso grain generator.

    Definiamo ora tutte le entità contemplate in questa breve descrizione intuitiva del processo digenerazione delle track attuato a Livello-1; in seguito daremo una specifica formale di taleprocesso.

    2.1.3 Definizione 3: Grain GeneratorUn grain generator  G è un (multi)grafo orientato, pesato e non necessariamente connesso, ovvero G

    è una quadrupla (V, E, w, A), dove:

    8

    Figura 4: Descrizione intuitiva di due track T1 , T2: nella prima l’evento ei+1 attacca (al tempo ti+1)prima che l’evento ei abbia terminato la propria emissione. In T2 l’evento  ei+1 attacca (al tempo ti+1)nello stesso tempo di attacco (ti) dell’evento ei. di e di+1 sono la durata di ei, ei+1, rispettivamente.

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    13/70

     

    V è l’insieme dei vertici di G; 

    E è l’insieme degli archi di G; 

    w è la funzione peso di G; 

    A è l’insieme dei graph actant di G.

    2.1.4 Definizione 4: Vertice

    Sia G = (V, E, w, A) un grain generator.

    Un vertice v∈V di G è una coppia (m, ev-gen), dove: 

    m∈N, m≥4, è il numero di parametri di v; 

    ev-gen è il generatore di eventi di v: esso è una funzione che ha come codominio l’insieme degli

    eventi con m parametri, e sul cui dominio non sono poste restrizioni.

    Per comodità identifichiamo i vertici con etichette intere positive.

    2.1.5 Definizione 5: Arco

    Sia G = (V, E, w, A) un grain generator.

    Un arco µ i∈E di G è una coppia indiciata (u,v)i, dove u,v∈V , e i∈N è l’indice di µ i, in modo tale che

    (u,v)i = (u,v) j  ⇔  i = j.

    Se (u,v)i è un arco di un grain genertor G, diciamo che (u,v)i è orientato da u a v, che (u,v)i esce dalvertice u ed entra nel vertice v; in generale diciamo che (u,v)i è incidente su entrambi ivertici u e v.

    Diciamo che due archi (u, v)i e (w, t) j sono archi multipli tra loro ⇔  u = w ∧  v = t, ovvero quandoi due archi sono incidenti su due stessi vertici e hanno medesimo orientamento.

    Per definizione, un grain generator ammette quindi archi multipli tra i suoi vertici; in tal senso ungrain generator è definibile come multigrafo.

    Chiamiamo cappio qualunque arco del tipo (z,z)i, ovvero che esce ed entra in uno stesso vertice(vedi il vertice 5 in Figura 5).

    Ometteremo l’indice i di un arco (u,v)i o quando si parla di un generico arco di G, o quando (u,v)i èl’unico arco uscente da u ed entrante in v.

    2.1.6 Definizione 6: Peso di un arco

    Sia G = (V, E, w, A) un grain generator.La funzione peso w di G è una funzione w: (u, v)∈E ( , ρ), dove:

     

      è una qualche funzione che restituisce l’ intervallo di  percorrenza t∈R+ dell’arco (u, v); 

    ρ∈[0, 1] è la probabilità di percorrenza dell’arco (u, v) dal vertice u;

    in quanto probabilità, ρ soddisfa la seguente condizione:

    2.1.6.2.1 la somma delle probabilità di percorrenza degli archi uscenti da uno stessovertice è uguale a 1.

    2.1.6.2.2 Chiameremo w((u, v)) peso dell’arco (u, v).

    Intuitivamente, il peso di un arco definisce due aspetti dell’arco stesso: il tempo impiegato da ungraph actant (l’”esserino” già introdotto) nell’attraversare l’arco (lo stesso aspetto può

    9

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    14/70

    essere pensato come la lunghezza dell’arco, posto che tutti i graph actant circolino neigrain generator ad una data velocità costante fissata); la distribuzione di probabilità tra gliarchi uscenti da uno stesso vertice, usata dai graph actant per la selezione del prossimoarco da attraversare.

    Andando a incidere sulla navigazione dei graph actant, il peso degli archi incide in modo diretto sul

    processo di generazione di track, dal momento che quest’ultimo è realizzato dal moto deigraph actant all’interno dei grain generator: la topologia dei grain generator e il peso

    degli archi degli stessi determina quindi il tipo di materiale sonoro che il compositore haa disposizione.

    2.1.7 Definizione 7: Graph ActantSia G = (V, E, w, A) un grain generator.

    Un graph actant  gai∈A è un elemento indiciato (v0)i, dove: 

    v0∈V è il vertice di partenza di gai; 

    i∈N è l’indice di gai, in modo tale che (v0)i  = (v0) j  ⇔  i = j.

    Intuitivamente, v0 definisce il vertice su cui è inizialmente posto il graph actant, e dal qualequest’ultimo inizia a muoversi attraversando gli archi del grain generator a cui appartiene v 0.

    E’ chiaro che, secondo quanto fin qua definito, i graph actant non sono ancora in grado di muoversiall’interno di un grain generator: affinchè questo sia supportato dalla nostra definizione formale delsistema, occorrerà introdurre una  funzione di transizione, che definiremo quando andremo adanalizzare il processo di generazione di track.

    Analogamente a quanto detto per gli archi, ometteremo l’indice i di un graph actant(v0)i o quando si parla di un generico graph actant, o quando esso è l’unico ad avere v0 come verticedi partenza.

    Prima di analizzare il processo di generazione di track, diamo un esempio di grain generator.

    2.1.8 Esempio di Grain Generator

    La Figura 5 è una rappresentazione grafica di un grain generator G = (V, E, w, A) con:

    insieme di vertici V = {1, 2, 3, 4, 5} (i numeri sono le etichette dei vertici);

    insieme di archi E = {(1, 2)0, (1, 2)1, (2, 2)0, (2, 2)1, (1, 3), (4, 3), (4, 4), (5, 5)};

    funzione peso w, che diamo di seguito in formato tabellare:

    (le funzioni sono costanti in secondi);

    insieme di graph actant A = {10, 11, 4, 5}.

    2.1.9 Processo di generazione di track

    Come già accennato, a Livello-1 ogni grain generator genera un insieme di track.Sia quindi G = (V, E, w, A) un grain generator, e l’insieme di track da esso generato.

    µi∈E (1, 2)0 (1, 2)1 (1, 3) (2, 2)0 (2, 2)1 (4, 3) (4, 4) (5, 5)

    ( , ρ)(.02, .2) (.021, .7) (0, .1) (.0001, .01) (.001, .99) (0, .5) (1, .5) (.02, 1)

    10

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    15/70

    Ogni graph actant ga∈A, nel suo circolare all’interno di G, genera una ed una sola track: si ha

    quindi che | | = |A|, ovvero verranno generate tante track quanti sono i graph actant definitiin G.

    Affinchè i graph actant siano in grado di navigare dentro il grafo, definiamo la seguente funzione di

    transizione:

    La funzione   next : A×V×R+   V determina le transizioni dei graph actant all’interno dei grain

    generator: next (ga, v, t ) restituisce il successivo vertice raggiunto dal graph actant ga∈A, che

    al tempo t ∈R+ è posto nel vertice v∈V.next (ga, v,   t ) seleziona in A uno tra gli archi uscenti da v, secondo la distribuzione di probabilità

    definita dalle probabilità di percorrenza di tali archi (  ).

    Possiamo ora descrivere il processo di generazione di track nel seguente modo:

    Sia una track in , e ga∈A il corrispondente graph actant generatore della track;si ha che:

    e1 è l’evento sonoro generato dal vertice v 0 (il vertice di partenza di ga) al tempo 0.

    ei (2 ≤i ≤n) è l’evento sonoro generato dal vertice v i = next (ga, vi-1, t i-1) al tempot i = t i-1 + tempo di percorrenza ( ) tra v i-1 e vi sull’arco scelto,

    dove: vi-1 è il vertice generatore di ei-1;t i-1 è il tempo di attacco di ei-1.

    Intuitivamente, durante il processo di generazione delle track di un grain generator G, ciascun graphactant in G naviga tra i vertici di G (attraverso gli archi di G) iniziando il suo percorso dal vertice sucui è inizialmente posto (v0); il successivo vertice raggiunto è determinato dalla funzione ditransizione  next . Ogni vertice raggiunto da un graph actant genera un evento nello stesso istante incui esso è raggiunto dal graph actant. La sequenza degli eventi generati dai vertici raggiunti da unostesso graph actant è la track risultante dalla navigazione di G da parte del graph actant.

    11

    Figura 5: rappresentazione grafica del grain-generator G sopra introdotto. Le etichette dei vertici sono poste ingrande all’esterno dei vertici stessi. I graph actant sono rappresentati dai cerchiolini all’interno dei vertici:quando necessario, in essi sono indicati gli indici degli stessi graph actant. Le coppie che etichettano gli archisono il peso degli archi stessi. I numeri in piccolo in prossimità dei punti da cui gli archi escono dai vertici

    rappresentano l’indice degli archi, e sono specificati solo se necessario. Si noti infine che il grain generator quirappresentato è il grafo G3 in Figura 2.

    1

    (0.02, 0.2)

    (0.021, 0.7)

    (0.02, 1)

    (0, 0.5)

    (0, 0.1)

    (1, 0.5)

    (0.0001, 0.01)

    (0.001, 0.99)

    5

    2

    1

    3 4

    1

    0

    0

    1

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    16/70

    2.1.10 ConclusioniDalle definizioni date in questo paragrafo possiamo concludere che il Livello-1 è un generatore

    graph-based di track: esso fornisce il materiale sonoro di base al processo compositivo,permettendo di definire i dettagli microstrutturali della composizione finale.

    2.2 Il Livello-2

    Il Livello-2 realizza il controllo dei parametri degli eventi generati a Livello-1, ovvero è un sistemache determina la definizione dei generatori di eventi dei vertici dei grain generator definiti aLivello-1.

    Di seguito definiamo tutte le entità appartenenti a tale livello, e infine descriveremo GeoGraphy alivello operativo.

    2.2.1 Definizione 8: Control Space

    2.2.1.1 Un control space CS è una quintupla (G, , ,  sa, T), dove:  

    G è un insieme di grain generator ; 

      è la  funzione  posizione  : V → ( R+)2, dove V è l’insieme dei vertici dei grain generator in G.

     (v) = (x, y)∈(R+)2 definisce la posizione (x, y) di v in CS, ∀v∈V;

      è la  funzione di avvio : A →  R+, dove A è l’insieme dei graph actant dei grain generator in G.

     (ga) = t∈R+ definisce il tempo di avvio t di ga in CS, ∀ga∈A;

    sa è lo space actant  di CS;

    T è la traiettoria di CS.

    Intuitivamente, un control space può essere pensato come un piano nel quale vengono posti i graingenerator definiti a Livello-1, e nel quale può essere definita una traiettoria (vedi le figure 7, 8 e9).

    2.2.2 Definizione 10: Traiettoria

    Sia CS = (G, , ,  a, T) un control space. Sia n∈N.

    Data una sequenza di n+1 punti , la traiettoria T di CS è

    l’insieme dei punti { ( x i + t(xi+1-x0), yi + t(yi+1-yi) )∈(R+)2: 0 ≤i ≤n-1, t∈[0, 1] }.

    2.2.2.1 Intuitivamente, ponendo n   ≥ 1, presa una sequenza di n+1 punti in unpiano (il control space), la corrispondente traiettoria è il tracciato descritto dai segmenti

    compresi tra i punti Pi e Pi+1.2.2.2.2 Se n = 0, la traiettoria T è composta dal solo punto (x0, y0): in tal caso T è detta traiettoria

    nulla.

    Dal momento che, data una sequenza di punti, è identificata una ed una sola traiettoria, percomodità indicheremo una traiettoria con la corrispondente sequenza di punti.

    2.2.3 Definizione 11: Space Actant

    Sia CS = (G, , ,  sa, T) un control space. Sia T = , n∈N.

    Lo space actant  sa di CS è una quadrupla (q0, v, q(t , v, T), r ), dove:

    12

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    17/70

    q0∈(R+)2 è la posizione iniziale di sa: q0  (x0, y0), cioè la posizione iniziale dello space actant

    coincide con il primo punto della traiettoria T.

    v∈R+ è la velocità di navigazione (o semplicemente velocità) di sa; v rispetta la seguente

    condizione:

    2.2.3.2.1 se T è una traiettoria nulla ⇒  v = 0.

    q(t , T)∈(R+)2 è la posizione attuale di sa, che dipende dall’istante t ∈R+, e da T, ed è definita da:

      q0 , se T è una traiettoria nulla;

    q(t , T) = (x, y)∈T, punto raggiunto da sa, all’istante t  e a velocità v, lungo la traiettoria T a distanza v·t  da (x0, y0), se un tale (x, y) esiste;

      indef., altrimenti;

    r∈[0,+ ) è il raggio di udibilità di sa.

    Intuitivamente, nel control space, che immaginiamo come un piano, insieme ai grain generator e ad

    una traiettoria, è presente un ulteriore attante (oltre agli “attanti di grafo” presenti nei graingenerator posizionati nel control space): lo space actant, che possiamo immaginare come unesserino in grado di muoversi lungo la traiettoria solo a velocità costante (v), e dotato di orecchie ingrado di sentire entro un certo raggio di udibilità (r).

    2.2.4 Definizione 12: Angolo di orientamento di sa

    Sia CS = (G, Ω, Φ,  sa, T) un control space.

    Supponiamo T = non nulla, e consideriamo un istante di tempo t  per cui la posizione

    attuale q(t , T) di sa è un punto del segmento Pi Pi+1, 0 ≤ i < n. (Per comodità indichiamo q(t ,

    T) con q, omettendo le variabili t  e T)

    Preso un qualunque vertice v di un qualche grain generator in G, l’angolo di orientamento di sa èl’angolo positivo α(t , Ω(v)), che dipende dall’istante di tempo t e dalla posizione Ω(v) di v,descritto dalla rotazione in senso antiorario del segmento q Pi+1, intorno a q, fino asovrapporsi al segmento q Ω(v).

    Se T è una traiettoria nulla ∨ q(t , T) = Ω(v), l’angolo di orientamento di sa è α(t , Ω(v)) = 0, ∀t ∈R+.

    La Figura 6 mostra il significato geometrico dell’angolo di orientamento di sa, mostrando comeesso varia rispetto al verso del vettore spostamento t.

    Analogamente a quanto fatto nella precedente trattazione del Livello-1, facciamo qualche esempiodi grain generator, al fine di fissare parte delle definizioni fin qua date.

    13

    P0

    P1

    Pi+1

    (v)

    q

    α

    Pi

    Figura 6: Significato geometrico dell’angolo di orientamento di

    sa.

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    18/70

    2.2.5 Esempi di control spaceDi seguito sono dati tre esempi di control space. Ricordiamo che tutte le lunghezze sono date in

    metri, e che il tempo è dato in secondi.

    La Figura 7 è una rappresentazione grafica di un control space CS1 = (G, , ,  a, T) con:

    insieme di grain generator G = {G}, dove G è stato definito nell’esempio di grain generator espostonel precedente paragrafo;

    funzione posizione , che diamo di seguito in formato tabellare:

    (abbiamo identificato i vertici con le loro etichette);

    funzione di avvio , che diamo di seguito in formato tabellare:

    space actant a = (q0 = (4.5, 2), v = 1 m/sec, q(t , T), r  = 1)

    traiettoria T = < (4.5, 2), (3.5, 1.5), (0.5, 1), (1.5, 2.5), (3, 3) >.

    La Figura 8 è una rappresentazione grafica di un control space CS2 = (G, , ,  a, T) con:

    insieme di grain generator G = {G}, dove G è stato definito nell’esempio di grain generator

    esposto nel precedente paragrafo;funzione posizione , che diamo di seguito in formato tabellare:

    v∈V 1 2 3 4 5

     (v) (1.5, 2) (3, 2) (1.5, 1) (3, 1) (4.5, 1.5)

    a∈A 10 11 4 5

     (a) 2 2.1 1.5 0

    14

    Figura 7: Rappresentazione grafica del control space CS1 sopra introdotto. La traiettoria viene percorsa dallo space actant sa, la cui posizione attuale è q(t ,T) = (3.25, 1.375). Il raggio di udibilità di saè rappresentato dalla circonferenza in rosso.

    0.5   1 1.5 2 2.5 3   3.5 4   4.5

    0.5

    1

    1.5

    2

    2.5

    3

    0

    ( (4.5, 2), 1 m/s, q(t , T)=(3.25,1.375), r =1 )

    q0

     = (4.5, 2)

    4

    3

    12

    5

    q1 = (3.5, 1.5)

    q2 = (0.5, 1)

    q3 = (1.5, 1.5)

    q4 = (3, 3)

    sa

    (1, 0.5)

    (0.0001, 0.01)

    (0.001, 0.99)

    (0, 0.5)

    (0, 0.1)

    (0.02, 0.2)

    (0.021, 0.7) (0.02, 1)

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    19/70

    (abbiamo identificato ivertici con le loro etichette);

    funzione di avvio costante a 0.

    space actant a = (q0 = (0, 1), v = .045 m/sec, q(t , T), r  = 0)

    traiettoria T = < (0, 1), (4.5, 1) >.

    La Figura 9 è una rappresentazione grafica di un control space C3 = (G, , ,  a, T) con:

    insieme di grain generator G = {G}, dove G è stato definito nell’esempio di grain generatoresposto nel precedente paragrafo;

    funzione posizione , che diamo di seguito in formato tabellare:

    (abbiamo identificato i vertici con le loro etichette);

    funzione di avvio costante a 0.

    space actant a = (q0 = (1, 1), v = 0 m/sec, q(t , T) = q0, r  =1)

    traiettoria T = ∅.

    2.3 La generazione dello score

    Prima di esporre l’esecuzione del sistema, occorre definire il prodotto finale generato da taleesecuzione: lo score. Lo score è per il Livello-2 ciò che la track è per il Livello-1; come la track, loscore presenta una struttura granulare: è cioè una sequenza di grani. Un grano è essenzialmente unevento e al quale vengono aggiunte due informazioni: la distanza tra la posizione attuale dello space

    actant all’istante   t e la posizione del vertice generante e, e l’angolo   α(t , 

    (v)) di orientamento di saall’istante t , dove t  è il tempo di attacco di e.

    v∈V 1 2 3 4 5

     (v) (0.5, 1) (1.5, 1) (2.5, 1) (3.5, 1) (4.5, 1)

    v∈V 1 2 3 4 5

     (v) (0.5, 1) (1, 1.5) (1, 0.5) (1.5, 1) (2.5, 1)

    15

    Figura 8: Rappresentazione grafica del control space CS2 sopra introdotto. La traiettoria è composta da un

    unico segmento di estremi q0=(2, 4.5), q1=(4.5, 1); essa viene percorsa dallo space actant sa, la cuiposizione attuale è q(t ,T) = (3, 1), e il cui raggio di udibilità è nullo (r =0).

    0.5   1 1.5 2 2.5 3   3.5 4   4.5

    0.5

    1

    1.5

    2

    0

    ((0,1), 0.045 m/s, q(t ,v , T)=(3,1), r =0)

    q0 = (2, 4.5)

    sa

    q1 = (4.5, 1)4

    3 5

    2

    1

    (1, 0.5)

    (0, 0.5)

    (0.001, 0.99)

    (0.0001, 0.01)

    (0, 0.1)

    (0.02, 1)

    (0.02, 0.2)

    (0.021, 0.7)

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    20/70

    G∈G

    2.3.1 Definizione 13: Grano

    Sia CS = (G, , ,  a = (q0, v, q(t , v, T), r ), T) un control space.

    Sia V = VG , dove VG è l’insieme dei vertici del grain generator G. Sia un vertice v∈V.

    Sia un istante di tempo t ∈R+.

    Sia m∈N, m≥6.

    Un grano g è una tupla (p1, p2, …, p m), dove:

    16

    Figura 9: Rappresentazione grafica del control space CS3 sopra introdotto. La traiettoria ènulla, pertanto lo space actant sa è immobile. Il raggio di udibilità è rappresentato dallacirconferenza in rosso con centro in q0 = (1,1), e di raggio   r  = 1. Si noti che il vertice 5 èposizionato al di fuori del raggio di udibilità.

    0.5   1 1.5 2

    0.5

    1

    1.5

    2

    0

    (q 0(1,1), v  = 0, q(t,v, T)=(1,1), r=1)

    SAct4

    3

    51

    2

    (1, 0.5)

      (   0 ,    0 .

       5   ) (   0   

     ,  0   . 1    )   

      (   0 .  0  2 , 

       0 .  2   )

      (   0 .  0  2  1

     ,    0 .   7   )

    (0.0001, 0.01)

    (0.001, 0.99)

    2.5

    (0.02, 1)

    sa

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    21/70

    G∈G

    G∈G

    p1∈R+ è il tempo di attacco di g;

    p2∈(0,+ ) è la durata di g;

    p3∈[0,1] è l’ampiezza di g;

    p4∈[-1,1] è il pan di g;

    p5 = d(q(t , v, T), (v)) è la distanza tra la posizione attuale di sa e la posizione del vertice v, che

    ha generato il grano g;

    p6 = α(t , (v)) è l’angolo di orientamento di sa;

    p5, …, p m∈[0,1] .

    2.3.2 Definizione 14: Score

    Sia n∈N. Uno score S è una sequenza di n grani tale che:

      se 0 < i < j ≤ n ⇒  ti ≤ t j ,

    dove ti , t j è il tempo di attacco del grano gi, g j, rispettivamente.

    Vediamo ora intuitivamente come l’esecuzione di un control space genera uno score.

    Come già detto, possiamo pensare un control space come un piano nel quale vengono distribuiti deigrain generator e nel quale viene definita una traiettoria e uno space actant.

    La configurazione scelta all’interno del control space determina per ogni istante di esecuzione unoed un solo controllo sui singoli parametri di ciascun evento (o meglio, grano) generato nellostesso istante dal corrispondente vertice posizionato nel control space.

    E’ chiaro che tale controllo sui parametri degli eventi determina gli stessi eventi: possiamo quindiaffermare che la configurazione scelta all’interno del control space determina univocamente

    un generatore di eventi per ogni vertice posizionato nello stesso control space.

    In questo senso il control space (ovvero il Livello-2) altro non è che un contesto in cui vengonoimmersi i grain generator che permette di definire in modo intuitivo e contestuale ungeneratore di grani per ogni vertice in esso schierato.

    2.3.3 Esecuzione del control space

    Sia CS = (G, , Φ,  a, T) un control space.

    Sia A = AG , dove AG è l’insieme dei graph actant del grain generator G.

    Sia V = VG , dove VG è l’insieme dei vertici del grain generator G.

    Sia S uno score vuoto (S =∅

    ).L’esecuzione di CS, avviata al tempo t 0 = 0, avvia, a Livello-1, il processo di generazione di track,

    ovvero ogni graph actant ga∈A, al tempo Φ(ga), inizia a navigare sul grain generator a cui

    appartiene; a Livello-2, lo space actant sa, ovvero sa = (q0, v, q(t , T), r ), al tempo t 0 = 0,

    inizia a percorre la traiettoria T a velocità v, se T non è una traiettoria nulla; se T è una

    traiettoria nulla, sa resta immobile in q0.

    Il raggio di udibilità r  di sa viene usato per attivare/disattivare il generatore di eventi ev-gen dei

    vertici posizionati in CS: se ad un certo istante t un vertice v è posizionato in CS in modo

    tale che esso rientri nel raggio di udibilità r  di sa (vedi il vertice 2 in Figura 7), allora ilgeneratore di eventi  ev-gen di v è   attivo, cioè, se allo stesso istante   t  il vertice v viene

    attraversato da un qualche graph actant ga, v è in grado di generare (via ev-gen) un evento.Al contrario, se in un certo istante t un vertice v è posizionato in modo tale che esso sia fuori

    dal raggio di udibilità r di sa (vedi il vertice 1 in Figura 7), allora il generatore di eventi ev-

    17

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    22/70

    gen di v è inattivo, ovvero, se allo stesso istante t  il vertice v viene attraversato da unqualche graph actant ga, v non può generare alcun evento.

    Per ogni istante di esecuzio t , possiamo quindi distinquere le seguenti due classi di vertici in V:

      t  = {v∈V | d(q(t , T), (v)) > r } l’insieme dei vertici inattivi all’istante t ;

     

    t  = V \ t  = {v∈V | d(q(t , T), (v)) ≤ r } l’insieme dei vertici attivi all’istante t ;

    2.3.3.3 Se v∈  t , chiameremo t  istante di attivazione di v, e v vertice attivo all’istante t .

    Inoltre, se un vertice v è attivo in un certo intervallo di tempo, chiameremo intervallo di attivazionedi v tale intervallo.

    2.3.3.4 Per mettere subito in pratica quanto fin qua detto, diciamo che se la traiettoria T è nulla e

    il punto in cui è posizionato un certo vertice v∈V rientra nel raggio di udibilità r di sa(cioè,d(q0,  (v))  ≤ r ) (vedi il vertice 1 in Figura 9), allora v è sempre attivo durante l’esecuzione

    del control space, ovvero, ∀t ∈[0, + ), v∈ 

    t , e [0, + ) è intervallo di attivazione di v.

    Ma, se ad un certo istante t  un vertice v è attivo, come fa il generatore di eventi di v a generare unevento? Questo equivale a chiedersi come sia effettivamente definita la funzione ev-gen.

    ev-gen è definita in termini di sotto-funzioni, dette generatori di parametro; ciascun generatore diparametro si preoccupa di generare il valore di un singolo parametro dell’evento dagenerare.

    ev-gen di un qualunque vertice v è quindi così definita:

    ev-gen( ) = ( p1-gen( ), p2-gen( ), …,  pm-gen( ) ), dove m è il numero di parametri di v.

    Vediamo ora di definire i vari generatori di parametro:

    Il generatore di parametro  p1-gen( ), che genera il tempo di attacco dell’evento da generare, èsempre la funzione identità id(t ), dove t è l’istante in cui ev-gen è stata invocata da parte diun graph actant, ovvero l’istante in cui il vertice a cui appartiene ev-gen viene attraversatoda un graph actant.

    I generatori dei restanti parametri possono essere una tra le seguenti funzioni:

    la funzione costante const ( ) = c, dove c è una costante appartenente al dominio del parametro

    da gerare;

    la funzione rand ( ), detta  funzione random che seleziona casualmente un valore all’interno del

    dominio (che si suppone essere chiuso e limitato) del parametro da generare; dal momento che ilparametro di durata ha dominio illimitato (0, + ), per tale parametro occorre poter restringere ildominio ad un intervallo chiuso e limitato;

    la funzione pan( ) = map -sin( α(t , (v)) ), detta  funzione pan, dove:

    α(t , (v)) è l’angolo di orientamento di sa (vedi def. 12);

    map(x) = min + [(max – min) / 2] (x + 1) è la funzione che mappa x∈[-1, 1] nel dominiochiuso e limitato del parametro da generare (anche qui, dal momento che il parametro didurata ha dominio illimitato (0, + ), per tale parametro occorre poter restringere ildominio ad un intervallo chiuso e limitato);

    la funzione dist-funct ( d(q(t , T), (v)) ), detta  funzione della distanza, una qualche funzione della

    distanza tra la posizione attuale q(t , T) dell’sa e la posizione (v) del vertice v su cui è stata

    invocata ev-gen.

    18

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    23/70

    Adesso però, come già detto, il Livello-2 “vede” grani, non eventi: che fine fanno dunque glieventi generati a Livello-1 durante l’esecuzione del control space?

    Ad ogni evento e generato a Livello-1 viene applicata la funzione m(e) = ge, che trasforma e nelcorrispondente grano ge aggiungendo ad e le seguenti due informazioni:

    la distanza d(q(t , T), (v)) tra la posizione attuale di sa e la posizione del vertice v che hagenerato e;

    l’angolo α(t , (v)) di orientamento di sa.

    La funzione composta m  ev-gen( ) è detta generatore di grani del vertice v.

    A mano a mano che, durante l’esecuzione di CS, vengono generati i grani, essi vengono inseriti

    nello score S, che è l’output dell’esecuzione di CS.

    L’esecuzione di CS termina o quando viene interrotta dall’esterno, o quando sa ha percorso tutta la

    traiettoria T, se T è una traiettoria nulla.

    2.3.4 Esempio di scoreLa Figura 10 raffigura uno score generato dal control space CS1 (vedi il primo esempio di control

    space del paragrafo 2.2, e la Figura 7): in tale figura la freccia orizzontale rappresenta iltempo, e per ciascun graph actant (indicato con l’etichetta del vertice di partenza) èrappresentata la corrispondente track, in cui ciascun evento è un pallino al cui interno èindicata l’etichetta del vertice che ha generato l’evento stesso.

    Ogni numero tra due eventi (pallini) successivi indica l’intervallo di tempo che separa tali eventi.

    Quando viene avviata l’esecuzione del control space CS1, l’unico graph actant che al primo istantedi esecuzione inizia il processo di generazione di track (cioè a navigare nel grafo) è quello

    inizialmente posto nel vertice 5: dal momento che lo space actant sa ha raggio di udibilita r = 1, per tutto il periodo di tempo in cui il vertice 5 rientra in tale raggio di udibilità (cioè, il

    tempo necessario a sa per percorrere il primo segmento della traiettoria), che va

    19

    Figura 10: Rappresentazione di uno score: la freccia orizzontale rappresenta il tempo; per ciascun graph actant èspecificata la track (rappresentata dalla corrispondente sequenza di pallini) generata durante l’esecuzione del controlspace CS1 in Figura 6; i grani dello score sono i pallini rossi, al cui interno è specificata l’etichetta del vertice che hagenerato il grano. I pallini grigi sono i “grani mancati”, cioè quelli “scartati” via raggio di udibilità. I grani posti su diuna stessa linea verticale (cioè, sovrapposti verticalmente) sono generati nel medesimo istante (si vedano i grani “1” e“3” della track relativa al graph actant 1 1, e i grani “4” e “3” (emessi all’istante 3.5) della track relativa al graph actant 4.

    time

    10

    11

     4

    5   5

    1

    5 5 5 5 5 5

    1 1.120 1.5

    4

    .02

    2

    2

    .02 .02

    .021

    2

    2.1

    2

    2.3

    .001

    2 2

    .0001

    2.5

    2

    .001

    2

    41 1

    3.5

    4

    3

    1

    3

    2 2

    .001

    2

    .001

    6.66

    2

    7.56

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    24/70

    approssimativamente dall’istante 0 all’istante 1.12, tale vertice è attivo, cioè in grado digenerare grani, che in Figura 10 sono rappresentati dai pallini rossi. Anche se il graph actant5 continua a navigare, non appena il vertice 5 esce dal raggio di udibilità (dall’istante 1.12 inpoi), esso diventa inattivo, cioè non può generare grani: tutti i pallini grigi in Figura 10rappresentano gli eventi non generati al passsaggio di un graph actant sul vertice la cui

    etichetta è all’interno degli stessi pallini.Senza entrare nel dettaglio dei percorsi seguiti dai singoli graph actant, lo score generato

    dall’esecuzione del control space   CS1 è l’insieme dei grani (i pallini rossi in Figura 10)generati durante la navigazione del grafo da parte di tutti graph actant.

    2.3.5 Conclusioni

    Dall’analisi svolta possiamo concludere che il Livello-2 è un control space, cioè un contesto nelquale vengono immersi i grain generator definiti a Livello-1 che permette di definire inmodo intuitivo e contestuale un generatore di grani per ogni vertice in esso schierato.

    2.4   Conclusioni generali

    L’analisi compiuta nel corso di questo capitolo ci ha permesso di capire il funzionamento delsistema GeoGraphy entrando nel dettaglio delle singole entità coinvolte nei due livelli delsistema stesso. Su quest’analisi poggierà tutto il successivo lavoro, a cominciare dall’attivitàdi modellazione orientata agli oggetti, esposta nel capitolo che segue.

    20

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    25/70

    3Object Oriented Analysis (Object Modeling)In questo capitolo vengono identificate le classi nel dominio del problema, le loro relazioni, i loroattributi, e i principali servizi che emergono dalla precedente analisi del problema, al fine di creareun primo object model del sistema.

    Di qui in avanti ogni object class identificata sarà scritta in  Arial, ogni attributo identificato saràscritto in corsivo, ogni servizio identificato sarà scritto in Garamond.

    La notazione usata per gli object diagram in Figura 11 e Figura 12 è data in [15]:98-107.

    3.1 Livello-1

    Dal momento che il generatore di eventi dei vertici viene definito precisamente solo a Livello-2,ignoreremo la possibilità di generare track a Livello-1, e ci preoccuperemo del processo digenerazione di track nel prossimo paragrafo, quando andremo a modellare il Livello-2.

    Identifichiamo nell’ordine gli oggetti, le strutture, gli attributi, le associazioni, i servizi.

    3.1.1 OggettiDall’analisi svolta nel precedente capitolo, a Livello-1 identifichiamo immediatamente le se guenti

    object class: Level_1, GGen, Vertex, Edge, GAct, che modellano, rispettivamente, le seguentientità: Livello-1, grain generator, vertice, arco, e graph actant.

    3.1.2 Strutture

    Level_1 è un’aggregazione di più GGen.

    GGen è un’aggregazione di più Vertex e GAct.

    Vertex è un’aggregazione di zero o più Edge, che sono gli Edge uscenti dal Vertex.

    Edge contiene il Vertex in cui entra l’Edge stesso.

    GAct contiene il Vertex sul quale è posto inizialmente il GAct stesso.

    La struttura che intercorre tra le classi è rappresentata dall’object diagram in Figura 8.

    3.1.3 Attributi

    Dal momento che occorre identificare i  GGen, introduciamo l’attributo   name, che è identificatoreunivoco per i GGen contenuti in Level_1.

    I Vertex sono invece identificati dalla loro etichetta label.

    L’attributo   numberOfOthersParams di  Vertex mantiene il numero   m-4, dove   m è il numero diparametri del vertice, ovvero il numero di parametri esclusi il parametro di durata,ampiezza, tempo di attacco, e pan.

    Di qui in avanti chiameremo “altro parametro” un parametro che non sia la durata, l’ampiezza, iltempo di attacco, o il pan.

    Gli attributi identificati per Edge sono:

    temporalDistance, che mantiene il tempo di percorrenza in secondi dell’Edge, nel caso in cuila funzione che restituisce l’intervallo di  percorrenza sia una funzione costante.

    routeProbability, che mantiene la probabilità di percorrenza dell’Edge.

    Non identifichiamo alcun attributo per GAct e Level_1.

    21

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    26/70

    3.1.4 Associazioni

    Oltre alle relazioni già identificate, a Livello-1 non vi sono relazioni particolari tra le object classfin qua identificate.

    3.1.5 Servizi

    Dal momento che, come già detto, a Livello-1 ignoriamo la possibilità di generare track, gli uniciservizi fin qua identificabili sono quelli “occur”, cioè quelli per creare, distruggere emantenere gli oggetti e i loro attributi, che diamo per impliciti.

    Il modello fin qua identificato è rappresentato dall’object diagram mostrato in Figura 11.

    3.2 Livello-2

    Chiaramente, il modello costruito nel precedente paragrafo forma la base per il modello da costruire

    per il Livello-2: modificheremo quindi l’object model identificato a Livello-1, in modo taleche esso supporti l’esecuzione del control space.

    Identifichiamo nell’ordine gli oggetti, le strutture, gli attributi, le associazioni, i servizi.

    3.2.1 Oggetti

    Dalla precedente analisi svolta nel secondo capitolo, a Livello-2 identifichiamo immediatamente leseguenti object class: ControlSpace, Trajectory, Grain, Score, e ActivationInterval, chemodellano, rispettivamente, le seguenti entità: control space, traiettoria, grano, score, eintervallo di attivazione.

    ControlSpace  ingloba l’object class Level_1: infatti, dal momento che ignoriamo la possibilità digenerare track a Livello-1, definire un GGen a Livello-1 ha senso soltanto nel momento incui esso viene “posto” nel ControlSpace. Level_1 è quindi eliminata dall’object model.

    Dal momento che c’è uno stretto rapporto tra la traiettoria e lo space actant, Trajectory modellaentrambe tali due entità.

    Modelliamo inoltre ciascun segmento della traiettoria con la classe ShiftingVector, che fornirà tutte le

    operazioni da compiere a livello di segmento (mentre Trajectory fornirà tutte le operazioni dacompiere a livello di traiettoria e space actant).

    22

     GAct 

    Level_1

     

    Vertex label numberOfOthersParams

     

    Edge temporalDistance routeProbability

     GGen name

     

    Figura 11: Object diagram che rappresenta l’object-model del sistema a Livello-1.

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    27/70

    Dalle definizioni di generatore di eventi ev-gen e di generatore di parametro, è chiaro che per ogniparametro pi (ad esclusione del tempo di attacco) degli eventi generati da un qualunqueVertex, occorre poter definire il corrispondente generatore di parametro: affinchè il modellosupporti i quattro tipi di generatori di parametro (  const ( ),  rand ( ),  pan( ), e   dist-funct ( ) ),introduciamo le seguenti object class:

    Parameter, che modella il generico parametro degli eventi generati dal Vertex;

    Duration, Amplitude, e Pan, che modellano, rispettivamente, i parametri di durata, ampiezza, e

    pan.

    OtherParam, che modella un “altro parametro” (come già detto, un parametro che non sia ladurata, l’ampiezza, il tempo di attacco, o il pan);

    ParamGenerator, che modella il generico generatore di parametro;

    RandFunct,   PanFunct e   DistFunct, che modellano, rispettivamente, i seguenti tre tipi digeneratore di parametro:   rand ( ),  pan( ), e   dist-funct ( ); il tipo di generatore di parametrocostante ( const( ) ) verrà modellato con un attributo (constantValue, vedi oltre);

    Dal momento che al parametro tempo di attacco può essere associata soltanto la funzione diidentità, risulta inutile per i nostri scopi modellare tale parametro con un’object class.

    3.2.2 Strutture

    ControlSpace è un’aggregazione di uno o più GGen e una sola Trajectory.

    Trajectory è un’aggregazione di zero o più ShiftingVector.

    Score è un’aggregazione di zero o più Grain.

    Parameter è superclass per Duration, Amplitude, Pan, e OtherParam.

    Vertex è un’aggregazione dei parametri degli eventi da esso generati, cioè: Duration, Amplitude, Pan, ezero o più OtherParam.Inoltre, Vertex è un’aggregazione di zero o più ActivationInterval.

    ParamGenerator è superclass per RandFunct, PanFunct e DistFunct.

    Parameter contiene un ParamGenerator.

    La struttura che intercorre tra le classi è rappresentata dall’object diagram in Figura 12.

    3.2.3 Attributi

    Dal momento che, come già detto, l’object class Trajectory modella entrambe le entità traiettoria eSAct, Trajectory ha gli attributi:

    initialPoint , che mantiene la posizione iniziale dell’SAct;

    speed , che mantiene la velocità di navigazione dell’SAct;

    audibilityRadius, che mantiene il raggio di udibilità dell’SAct;

    ShiftingVector ha gli attributi head e tail, che mantengono, rispettivamente, il primo e l’ultimo puntoesterno del segmento di traittoria modellato, rispetto all’ordine in cui tali punti sono contenuti nellatraiettoria.

    Un attributo da aggiungere a  Vertex a Livello-2 è   vertexPosition, che mantiene la posizione delVertex nel ControlSpace.

    Al fine di supportare il tipo di generatore di parametro costante, introduciamo l’attributo

    constantValue nell’object class Parameter.

    Come espresso dalla definizione di funzione   rand ( ) e di funzione   pan( ), occorre restringere ildominio (0,+ ) del parametro durata in un intervallo chiuso e limitato I, nel caso in cui tale

    23

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    28/70

    parametro sia generato dalla funzione random o pan, appunto. Introduciamo quindi l’attributodomainRestriction alla classe Duration, che mantiene tale intervallo I.

    Gli attributi di   ActivationInterval   sono   firstInstant ,   lastInstant , rispettivamente per il minimo e ilmassimo istante di attivazione dell’ActivationInterval.

    Affinchè il modello supporti il caso cui il vertice è attivo per ogni istante di esecuzione,introduciamo l’attributo   alwaysActive  a   Vertex, un booleano che, se vero, indica che il   Vertex  èsempre attivo.

    Aggiungiamo a   GAct l’attributo   startTime che rappresenta il tempo di avvio dello stesso  GAct apartire dall’inizio.

    Ciascun  Grain deve mantenere tutte le informazioni che definiscono un grano: aggiungiamo quindi iseguenti attributi all’object-class   Grain:   attackInstant ,   durationValue,   amplitudeValue,   panValue,distance,   angle, e   otherParamValues, che mantengono, rispettivamente, il tempo di attacco, ladurata, l’ampiezza, il pan, la distanza tra la posizione attuale dello space actant e la posizione delvertice generante il grano, l’angolo e l’angolo di orientamento dello space actant (vedi la def. 12 apag. 13), i valori dei restanti parametri.

    3.2.4 Associazioni

    I vertici generano grani, quindi tra le istanze delle classi   Vertex   e   Grain  esiste una relazione,un’associazione zero a molti, dal momento che un vertice può generare zero o più granidurante l’esecuzione del control space.

    Inoltre, lo stato di attività di un vertice dipende dalla traiettoria: esiste perciò una relazione tra leistanze della classe  Vertex e la  Trajectory: tale associazione è chiaramente uno a molti, dalmomento che ogni vertice è in relazione con la traiettoria.

    Altre associazioni potranno essere identificate durante l’identificazione dei servizi, che segue.

    3.2.5 Servizi

    Eviteremo di specificare i servizi “occur”, cioè quelli per creare, distruggere e mantenere gli oggettie i loro attributi, che saranno considerati impliciti.

    L’object class  ControlSpace  deve fornire un servizio per avviare l’esecuzione del control space:introciamo quindi il servizio   startPerformance( )  a  ControlSpace, che realizza appunto talefunzionalità.

    Affinchè per ogni vertice di un grain generator caricato nel control space possano essere calcolatitutti gli intervalli di attivazione, introduciamo il servizio computeVxActivationIntervals( ) allaclasse  GGen. E’ chiaro che tale funzione dipende dallo stato della Trajectory. C’è quindi una

    relazione tra le istanze della classe   GGen  e l’oggetto   Trajectory: aggiungiamo al modelloun’associazione uno a molti (1:N) tra tali oggetti.

    Il calcolo vero e proprio degli   ActivationInterval   dovrà essere svolto dai singoli   Vertex;

    computeVxActivationIntervals( ) ha solo il compito di “chiedere” ad ogni  Vertex di svolgeretale calcolo: introduciamo quindi   computeActivationIntervals( )   all’interfaccia della classe

    Vertex, servizio che si preoccupa di calcolare tutti gli   ActivationInterval   del   Vertex.Ovviamente anche computeActivationIntervals( ) dipende dalla  Trajectory, e tale relazione è giàstata modellata con l’associazione tra le istanze delle object class Vertex e Trajectory.

    Affinchè  computeActivationIntervals( ) possa calcolare tutti gli intervalli di attivazione di un  Vertex,occorre:

    sapere se lo space actant ha velocità di navigazione speed  = 0: tale servizio, che chiamiamoisImmovableSAct( ), è chiaramente offerto da Trajectory;

    24

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    29/70

    verificare se un vertice è sempre attivo o meno, nel caso in cui lo space actant abbia velocitàdi navigazione   speed    = 0: anche tale servizio, che chiamiamoisAudiblePointFromInitialPosition( ), è offerto da Trajectory;

    ottenere l’istante di tempo in cui lo space actant si trova in un dato punto della traiettoria(altro non è, che la funzione inversa della posizione attuale dello space actant): tale servizio,

    che chiamiamo getInstantToPoint( ), è offerto da Trajectory;

    verificare se il Vertex  è attivo rispetto almeno uno dei punti di uno ShiftingVector   (unsegmento della traiettoria): tale servizio, che chiamiamo  isAudiblePoint( ), è chiaramenteofferto dalla classe ShiftingVector;

    ottenere i punti estremi del segmento appartenente ad uno ShiftingVector in cui il Vertex èattivo, se tale segmento esiste: tale servizio, che chiamiamo  getActivationPoints( ), è offertoda ShiftingVector.

    Una volta calcolati tutti gli ActivationInterval associati ad un Vertex, occorre poter verificare se in undato istante il Vertex è attivo o meno: il servizio  isActive( )  dell’object class Vertex  fornisce taleinformazione.

    Modelliamo il processo di generazione di track con il servizio startTrackGenerationProcess( ), fornitodalla classe GAct. Durante tale processo occorre poter scegliere casualmente uno tra gli Edge uscentidal Vertex in cui si trova il GAct: tale operazione è realizzata dal servizio chooseEdge( ), fornito dallaclasse Vertex.

    Modelliamo il generatore di grani di un vertice con il servizio grainGenerator( ), fornito ovviamentedalla classe Vertex. grainGenerator( ) si serve del servizio getValue( ), fornito da ParamGenerator, pergenerare i singoli parametri del grano da generare.

    Altri servizi che deve fornire Trajectory   sono   getDistance( )   e   getAngle( ), che restituisconorispettivamente la distanza tra la posizione attuale dell’SAct e la   vertexPosition di un Vertex (si

    ricordi che Trajectory modella anche l’SAct), e l’angolo α (per quest’ultimo, vedi la definizione 12).Di uno ShiftingVector occorre sapere la lunghezza, e se un dato punto appartiene o meno allo stessoShiftingVector: introduciamo quindi i servizi getLength( ) e isMyPoint( ) a ShiftingVector, che realizzanoqueste due funzionalità.

    Infine, lo Score deve effrire un servizio per inserire in esso un Grain, e un servizio per scrivere iGrain in esso contenuti in un file. Tali servizi li chiamiamo insertGrain( ), e writeInTheScoreFile( ).

    L’object model risultante dall’object modeling è in Figura 12.

    25

     ControlSpace startPerformance ( )

     GAct startTime startTrackGeneratorProcess ( )

     GGenname

     Trajectory

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    30/70

    26

     Vertex label numberOfOthersParams vertexPosition alwaysActive computeActivationIntervals ( ) isActive ( ) chooseEdge ( ) grainGenerator ( ) 

    Edge  temporalDistance routeProbability

     Pan 

    Duration domainRestriction 

    OtherParam 

    Parameter constantValue getParamValue ( )

     ParamGenerator getValue ( )

     DistFunct 

    PanFunct 

    ActivationInterval f irstInstant lastInstant 

    i ili i isImmovableSAct ( ) isAudiblePointFromInitialPosition ( ) getInstantToPoint ( ) getDistance ( ) getAngle ( ) 

    ShiftingVector head tail isAudiblePoint ( ) getActivationPoints ( ) getLength ( ) isMyPoint ( )

     RandFunct 

    Amplitude 

    Grain attackInstant durationValue amplitudeValue panValue distance angle otherParamValues

    Score insertGrain ( ) writeInTheScoreFile ( )

    Figura 12: Object-diagram che rappresenta l’object-model del sistema GeoGraphy.

  • 8/16/2019 Analisi e Implementazione Di Un Sistema Formale Per La Composizione Musicale

    31/70

    4Requirements Specification DocumentQuesto capitolo contiene il documento di specifica dei requisiti per il caso di studio proposto daquesta tesi.

    Seguiremo lo standard IEEE per un documento di specifica dei requisiti (vedi [13] e [14], seppurcon qualche modifica.

    4.1 Introduction

    4.1.1 Purpose

    Lo scopo di questo documento è di descrivere i requisiti di un sistema per il controllo algoritmicodella composizione elettroacustica basata sulla sintesi granulare.

    4.1.2 Definitions, Acronyms, Abbreviations

    Chiamiamo GeoGraphy il suddetto sistema. Inoltre, vengono considerate tutte le definizioni datenel capitolo.

    4.1.3 Notational Conventions

    Tutti i requisiti specificati in questo documento sono descritti in prosa, in una Backus Naur Form(BNF) estesa, specificata in [4]:8-10 (adottiamo quella usata nell’RFC 1945), o con Data FlowDiagram (DFD), secondo la notazione data in [15]:88.

    4.2 Overall Description

    4.2.1