Upload
antoninogabrielemartinico
View
221
Download
1
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
4
5
(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