Tesi di laurea in
ACUSTICA MUSICALE
Relatore Presentata da
Prof. Gianni ZANARINI Fabio SELVAFIORITA
SESSIONE III
Anno Accademico 2004-2005
PREMESSA
Prima Parte
CAPITOLO 1 - INTRODUZIONE
Seconda Parte
3.1 Introduzione
Nota sull’analisi degli algoritmi
3.1.1 Trasposizione di un accordo
3.1.2 Inversione di un intervallo
3.1.3 Costruzione di una successione combinata di altezze
3.1.4 Quattro operazioni su una serie di dodici suoni
3.1.5 Espansione e compressione di una sequenza di note I
3.1.6 Costruzione di uno spettro armonico
3.1.7 Costruzione di uno spettro con N parziali
3.1.8 Espansione e contrazione di una sequenza di note II
3.1.9 Sei operazioni su una serie di dodici suoni
3.1.10 Costruzione random di una sequenza I – introduzione a om-random
3.1.11 Costruzione random di una sequenza II – introduzione alle durate e alle dinamiche
5.4 La MAQUETTE
CONCLUSIONI
BIBLIOGRAFIA
Prima Parte
PREMESSA
Oggetto di studio della dissertazione è l’analisi del rapporto tra composizione musicale e
strumenti informatici.
All’inizio del XXI°secolo è possibile sostenere che l’insieme delle tecnologie informatiche
ha ricontestualizzato paradigmaticamente1 il complesso di tutte quelle attività musicali e
musicologiche che beneficiano del supporto della tecnologia2.
Questa dissertazione analizza le potenzialità di un nuovo artigianato compositivo che è il
risultato dell’incontro delle conoscenze e delle strategie della composizione musicale
con i paradigmi dell’informatica.
In questo contesto si limita l’indagine al rapporto tra composizione e software con
particolare riferimento al fenomeno storico conosciuto in letteratura con il nome di
Composizione Musicale Assistita dal Computer (CMAC).3 Per la definizione di questo
nuovo artigianato si fa riferimento all’analisi dell’ambiente di programmazione software
per la composizione musicale assistita, OpenMusic.
1
In tutta la dissertazione, il termine paradigma fa riferimento alla teoria sviluppata da Thomas Kuhn in La
struttura delle rivoluzioni scientifiche, Einaudi 1978: “Con la scelta di questo termine ho voluto far presente
che alcuni esempi di effettiva prassi scientifica riconosciuti come validi…leggi, teorie, applicazioni e
strumenti, forniscono modelli che danno origine a particolari tradizioni di ricerca scientifica con una loro
coerenza.”.
2
Il beneficio non è scontato per tutti i contesti culturali dove si dà ancora musica senza tecnologia
elettronica e mediante forme di organizzazione performativa e sociale alternative a modelli tecnoscientifici
dominanti.
3
La composizione musicale assistita è oggi conosciuta nell’ambito della letteratura critica anche con il solo
utilizzo degli acronimi CAO per la Francia (Composition assistée par Ordinateur), CAC nei paesi di lingua
anglosassone (Computer Aided Composition), CMAC o CAC in Italia.
CAPITOLO 1 INTRODUZIONE
4
Ambiente di programmazione per la composizione assistita orientata al linguaggio MIDI. Si veda (Winkler
1999), (Elsea e tutorial http://www.sfu.ca/sca/Manuals/247/Max/Max.html#articles) (Rowe 2001), (Essl
www.essl.at ), www.cycling74.com.
5
www.codamusic.com
6
PWGL rappresenta una grande innovazione nel campo degli ambienti software per la composizione
assistita. Esso tende all’integrazione in un unico ambiente di lavoro delle principali tecnologie di riferimento
per il compositore che si interessi all’informatica musicale, dall’elaborazione del suono, alle tecniche di
sintesi e alla formalizzazione dei processi compositivi. Il software è attualmente infase di beta-testing.
A partire da PatchWork sono numerosi i compositori che hanno utilizzato l’ambiente di
lavoro e contribuito allo sviluppo del software fino alla nascita di OpenMusic: Jean-
Baptiste Barrière, Antoine Bonnet, Marc-André Dalbavie, Michel Fano, Brian
Ferneyhough, Gérard Grisey, Paavo Heininen, Magnus Lindberg, Claudy Malherbe,
Tristan Murail, Kaija Saariaho, Jacopo Baboni Schilingi, Marco Stroppa e molti altri.
Una caratteristica particolare degli ambienti software utilizzati dai compositori è il loro
configurarsi come sistemi aperti, modulari e modellabili secondo le particolare esigenze
di ogni singola tecnica del compositore.
Il sistema deve essere in grado di descrivere, interpretare e risolvere, ogni problema
compositivo musicale formalizzabile. Per questo motivo i compositori si sono
principalmente rivolti ad “ambienti di programmazione” musicale; questi permettono al
compositore di interagire con il sistema da loro formalizzato mediante l’uso dei più
opportuni e flessibili linguaggi di programmazione, dotati possibilmente di un’interfaccia
grafica in cui definire il pensiero musicale mediante algoritmi definiti da oggetti.
OpenMusic è l’interfaccia visiva musicale di un linguaggio di programmazione completo
chiamato CommonLisp/CLOS. Indipendentemente da finalità musicali è possible quindi
utilizzare il sistema per differenti scopi, incluso l’insegnamento della Programmazione
Funzionale (cfr. Capitolo 1 § 2.1.1-2.1.2), Orientata agli Oggetti (cfr. Capitolo 1 § 2.1.3),
e delle tecnologie di riferimento per la Programmazione Logica per Vincoli7.
Nella prassi della composizione musicale, il metodo per la definizione di modelli musicali
al computer si è identificato con la formalizzazione di procedure compositive. La
formalizzazione, come vedremo, non è elemento esclusivo delle prassi di composizione
al computer, ma anche di quelle tradizionali esperienze di composizione che hanno
utilizzato il numero come principio ordinatore dell’artigianato compositivo (dal metodo
per la composizione con i dodici suoni a Donatoni, dalle matrici seriali alla proliferazione
del materiale in Boulez, fino ai processi generativi di Alessandro Solbiati, Ivan Fedele,
Luca Francesconi).
Il fine della formalizzazione non è quindi la produzione di una sterile “musica algoritmica
dove le ragioni di una composizione risiedono nella logica che definisce un calcolo o un
algoritmo…ma una tecnica che permette una interazione tra compositore e sistema”
7
Data la complessità delle tecnologie si farà solo accenno a quest’ultima. Come introduzione all’argomento
si rimanda di seguito alla descrizione della libreria per OpenMusic OMRC.
(Baboni Schilingi 2005) in cui il compositore orienta le scelte in un campo di possibilità
da valutare artigianalmente ed esteticamente.
Questo è il senso ultimo di un sistema musicale artificiale che “assista” il compositore e
ne garantisca la “libertà espressiva”.
Per introdurre all’ambiente di lavoro OpenMusic, capire cosa fa e quali sono le sue
possibili applicazioni, si riporta di seguito la libera traduzione (con opportune integrazioni
nella descrizione delle librerie) della descrizione divulgativa del software così come
fornita del dipartimento marketing dell’IRCAM.
OpenMusic
Caratteristiche principali
8
Editors
9
Common Music Notation è una particolare implementazione di un sistema di
notazione musicale che permette l’elaborazione e la visualizzazione di semplici
oggetti musicali (note, ritmo, accordi ecc.) o complesse polifonie.
10 11
MIDI piano-roll con l’utilizzo di MidiShare (GRAME France).
8
Gli editors ampliano il concetto di notazione musicale a nuove possibilità di rappresentazione musicali
fornite dalla tecnologia informatica.
9
Common Music Notation è un sofware sviluppato al CCRMA, USA per la rappresentazione del sistema di
notazione musicale tradizionale.
10
MIDI è l’acronimo di Musical Instrument Digital Interface. Protocollo finalizzato alla comunicazione tra
strumenti digitali. Il primo protocollo (Standard 1.0) risale al 1982 e fu concordato tra le case costruttrici di
strumenti musicali Seq.Circuits, Roland, Korg, Kawai. Il protocollo, mediante un linguaggio, definisce un tipo
di rappresentazione musicale (Lombardo, Valle 2002). Per esempio la codifica dell’altezza della nota (pitch)
avviene assegnando ad ogni nota del sistema temperato un valore compreso tra 0 e 127 chiamato MIDI
La visualizzazione di file sonori mediante la visualizzazione della forma d’onda.
note. (cfr. Appendice 1) l’editor definito come PianoRoll nei software MIDI rappresenta le note come linee
orizzontali con una lunghezza che ne definisce la durata. La rappresentazione è corredata da un piccolo
disegno di una tastiera di pianoforte. (cfr.Cap.2 §2.1.5.4)
11
Permette la comunicazione del software con i componenti MIDI installati sul computer.
1.1.2 Le Librerie di Open Music
12
OMSDIF per leggere e scrivere file nel formato SDIF .
16
OM2Csound generazione di partiture per Csound .
oMChroma per il controllo dei processi di sintesi del suono (Stroppa, 2000)
12
www.ircam.fr/sdif
13
Center for New Music and Audio Technologies www.cnmat.berkeley.edu
14
www.iua.upf.es
15
La documentazione relativa all’implementazione dell’interfaccia grafica è disponibile sul sito
http://recherche.ircam.fr/equipes/repmus/bresson/stage.html.
16
Software per la sintesi e l’elaborazione sonora. www.csounds.com e cfr.§ 1.4.2.
OM2Modalys per la costruzione di strumenti virtuali per Modalys.
Modalys è un linguaggio software dell’Ircam per lo studio della sintesi del suono
per modelli fisici mediante cioè la simulazione di oggetti fisici come corde,
membrane, tubi, plettri, superfici di metallo, ecc. La libreria OM2Modalys
permette di interfacciarsi, in OpenMusic, direttamente con il linguaggio di
Modalys.
Profile per la manipolazione del profilo e del contorno delle altezze (Baboni
Schilingi Malt 1998).
17
Uno dei più noti e utilizzati sistemi di montaggio audio-midi disponibili nel mercato dell’informatica
musicale www.digidesign.com.
OMTrees elaborazione di alberi ritmici.
18
OMZN formalizzazione algebrica delle strutture musicali.
Libreria per l’analisi e la composizione legata alla descrizione algebrica delle strutture
musicali: comprende l’ars combinatoria di Babbit, Vieru, Benjamin, Carter; la Set Theory
classica di Forte e trasformazionale di Lewin, tecniche del serialismo integrale, Babbit,
Boulez, la teoria dei ‘setacci’ e della musique symbolique di Xenakis; analisi di canoni
ritmici e imparità ritmica.
18
Tutta la documentazione relativa allo sviluppo e alla contestualizzazione teorica di questa libreria è
possibile trovarla sul sito di Moreno Andreatta recherche.ircam.fr/equipes/repmus/moreno
La precedente presentazione delle librerie software di OpenMusic ha evidenziato come
sia possibile “muoversi” all’interno di questi differenti livelli di rappresentazione, diremmo
di “notazione/scrittura”, per articolarne le potenzialità morfogenetiche. Strutture di dati e
algoritmi, analisi sonore e rappresentazioni di queste mediante forme d’onda o
sonogrammi, i protocolli MIDI o SDIF, rappresentano una ulteriore possibilità della
“scrittura”19 nelle mani del compositore.
La presente introduzione fornisce un quadro generale del concetto di composizione
assistita. Non si escludono dalla definizione i processi di sintesi del suono per i quali,
storicamente, è stato possibile definire differenti strategie di articolazione del materiale
sonoro. Una teoria generale che voglia definire la composizione assistita dal computer
non può, oggi, non tenere conto dei molteplici livelli di rappresentazione del continuum
sonoro: dalle strategie di articolazione del singolo campione audio (Iannis Xenakis,
Herbert Brün), alla complessità delle strutture ritmiche in notazione tradizionale
(Ferneyhough) all’elaborazione di oggetti sonori (Hans Tutschku).
Tuttavia, si ribadisce quanto il controllo di alto livello sui microprocessi di sintesi ed
elaborazione sonora abbia rappresentato storicamente “a very delicate issue” (Stroppa
2000) rappresentando una vexata quaestio che non può essere affrontata in questa
dissertazione. Nella storia di questa disciplina essa è stata affrontata nei modi più diversi
con risultati estetici, implicazioni teoriche e tecnologie software particolari per le quali si
rimanda per una esauriente descrizione a (Roads 2001 e Vaggione 1999).
In questo contesto introduttivo faremo riferimento ad alcune semplici strategie di
composizione di sintesi definite nelle prime prassi di composizione al computer (Tenney
1976), alla descrizione della sintassi di un linguaggio per la sintesi del suono con
l’identificazione di un livello minimo di articolazione sonora (Csound).
Nel Capitolo 3, con lo studio di applicazioni pratiche nell’ambiente di programmazione
OpenMusic, si concentra l’analisi solo sulla realizzazione di algoritmi per la generazione
e l’elaborazione di partiture visualizzabili mediante il sistema di notazione musicale
tradizionale.
19
Scrittura quindi come tecnologia, che ha sempre rappresentato, per la musica d’arte occidentale, “un atto
creativo originale solo dal momento in cui ha sottoposto l’orecchio all’influenza dell’occhio” (Dufourt 1997).
Mathews. Successivamente si è sviluppato, con una forte evoluzione a partire dalla fine
degli anni 60, parallelamente alla nascita della musicologia computazionale.
La composizione musicale assistita dal computer può essere definita come “la creazione
di ambienti software che aiutino la formalizzazione delle rappresentazioni e delle
conoscenze musicali, parallelamente alla ricerca di sistemi che permettano
l’esplorazione di nuove idee” (Agon 1997)
La definizione può apparire generica ma ci aiuta a introdurre e contestualizzare una
disciplina che è stata definita in numerosi modi:, “algorithmich composition, automatic
composition, composition pre-processing, computer-aided composition (CAC), computer
composing, computer music, procedural composition…score synthesis…computer aided
algorithmic composition”, (Ariza 2005) computer aided score synthesis, computer aided
interactive composition.
Diremo inizialmente che la composizione musicale assistita è un fenomeno
caratterizzato “dall’esistenza di strumenti software che aiutino il compositore nella
creazione e nella manipolazione degli oggetti e nei processi musicali.” (Roads 1987)
In questo senso essa si distingue dal più ampio contesto della composizione al
computer per una caratteristica fondamentale: le modalità dell’assistenza. Se tutti i
sistemi software per la composizione convergono nel definire l’oggetto e il processo
della composizione non tutti implementano le modalità dell’assistenza.
20
Paul E.Ceruzzi, A history of modern computing, MIT press
21
Si riscontra, in particolare per l’architettura e le arti legate alla visione, una considerevole produzione di
letteratura divulgativa sulle relazioni tra il computer e i problemi di progettazione/composizione. In
particolare, per importanza e notorietà, si ricorda l’opera dell’architetto Frank O’Ghery, la produzione teorica
degli architetti Peter Eisenmann, Marcos Novak, Greg Lynn e Karl Chu. Si ricordano a tale proposito le
parole di Pierre Boulez a proposito di Paul Klee (le cui lezioni al Bauhaus gli furono regalate da
Stockhausen come “manuale di composizione”) il quale evidenziava molteplici analogie tra i processi
compositivi di differenti discipline; nel nome di un osmosi comune ad una data epoca le implicazioni e le
In che cosa consiste, praticamente, l’assistenza?
Le modalità dell’assistenza si sono definite, parallelamente all’evoluzione della
tecnologia informatica, con l’uso di differenti tecniche di programmazione di un
computer. Queste tecniche sono il risultato di un lungo confronto della tecnologia
informatica con le possibilità di rappresentazione di modelli matematici e gli studi
sull’Intelligenza Artificiale.
Definiremo l’insieme di queste procedure, distinguendo successivamente tra tecniche di
programmazione deterministiche e tecniche non-deterministiche (Anders 2003 –Truchet
2004). Per ora, definiamo l’insieme di queste tecniche, come il tratto caratteristico
dell’assistenza dal computer.22
Il complesso delle attività artigianali del compositore al computer può essere così
descritto mediante le seguenti caratteristiche principali:
conseguenze sulla morfogenesi della composizione in campo architettonico e visivo sono comuni a quelle
considerate in questa dissertazione.
22
In sintesi: l’insieme delle tecniche deterministiche è definito dalla possibilità di “traduzione” di un qualsiasi
modello matematico ad un processo compositivo. Tra questi, metodi stocastici, modelli del caos e di auto-
organizzazione, mapping di dati verso partiture ecc. le tecniche non deterministiche sono quelle derivate da
quelle tecniche di programmazione “which define restrictions or mutual dependecies with multiple solution
…the restrictions are called constraints” (Anders 2003) definita in italiano come programmazione logica per
vincoli. In questa dissertazione si farà principalmente riferimento a tecniche di programmazione
deterministiche.
23
Non sono cioè implementate nella maggior parte dei software per fare musica al computer.
- La definizione di differenti scale temporali è derivata dalla scelta del livello di
rappresentazione dell’oggetto.
24
www.audiosynth.com
Nella seguente introduzione si definiscono i rapporti tra tecnologia, tecnica e musica
nella prassi della composizione del XX° secolo. Contestualmente all’evoluzione
dell’informatica, dell’informatica musicale e della musicologia computazionale, si
definisce lo sviluppo dei processi compositivi che hanno visto nel numero una guida per
l’ideazione formale. Conclude l’introduzione una descrizione delle pionieristiche
esperienze della composizione musicale al computer.
25
“Al servizio delle mutevoli strategie che li oppongono e li rendono simili, gli esseri umani utilizzano in
effetti, in tutti i modi possibili, entità e forze non umane: animali, piante, lieviti, pigmenti, montagne, fiumi,
correnti marine, vento, carbone, elettroni, macchine, ecc. E in circostanze infinitamente diverse.
Ripetiamolo: la tecnica non è che la dimensione delle strategie che passano attraverso attori non umani”
(Lévy 2000).
26
Da un’intervista di Karlheinz Stockhausen con Richard Buffalo dell’8 aprile del 1987. Questa ed altre
interviste al compositore sono disponibili sul sito Internet www.stockhausen.org
Arnold Schönberg: “Non si può rifiutare l’idea che il piacere mentale dato dalla bellezza
delle struttura possa equivalere al piacere che proviene dalle qualità emotive.” O “il
metodo con cui viene ristabilito un equilibrio è, secondo me, la vera idea della
composizione” (Schönberg 1960) identificando nel metodo dodecafonico una strategia
per la genesi del materiale musicale.27
Dalla fine del XIX° secolo metodi e tecniche della composizione si incaricano di
riorganizzare il pensiero musicale occidentale mediante la costruzione di nuovi spazi
sonori; con il progressivo abbandono delle logiche funzionali tonali o di una loro
reinterpretazione (come, “illusionismi erano le dominanti di Strawinsky e i suoi falsi Do
maggiore”28) ovvero per sostituzione di queste con nuovi sistemi di riferimento sonoro.
Da Varèse a Debussy, da Cage a Schönberg e Stravinsky, con differenti tecniche al
servizio di strateghi del caso e della necessità, interpreti del colore e pionieri della
musica elettroacustica.
Viceversa, il metodo scientifico ha identificato nella musica un modello ideale per lo
studio e l’analisi dei processi creativi. Dapprima con la fondazione di una
Musikwissenschaft, successivamente, in epoca cibernetica, con lo studio della musica
come modello esemplare e problematico della conoscenza.
La tecnica diventa quindi interprete di quell’ “osmosi più o meno cosciente che
conferisce un profilo comune a una data epoca, grazie alla sotterranea coincidenza dei
mezzi utilizzati; coincidenza che, anche se non è possibile constatare sistematicamente,
si presenta di continuo, ora sfumata, ora con una precisione stupefacente.” (Boulez
1990)
Più esplicito, a proposito, è Hugues Dufourt: “la produzione musicale, che ne sia stata
consapevole o no, ha lavorato sulle basi della rivoluzione scientifica e tecnica la cui
dinamica ha condizionato la stessa produzione. La storia delle categorie del pensiero
scientifico sottende, a mio avviso, la storia delle categorie del pensiero musicale”.
(Dufourt 1997)
27
Genesi che, in Schönberg, è direttamente correlata all’emergenza tematica, in quanto “connessione della
Grundgestalt (figura-base) con le sue ripetizioni più o meno varie” (Epstein 1998). Nella prospettiva
delineata in Epstein anche “il serialismo totale affonda le sue radici non solo nel metodo schoenberghiano di
serializzazione dell’altezza, ma , in senso più generale, nel concetto di Grundgestalt da cui nacque la teoria
dodecafonica”. Sarà sempre il concetto di “figura” a farsi portavoce del rinnovamento del linguaggio post-
seriale (si vedano i saggi di Donatoni, Ferneyhough, Sciarrino, Gentilucci, Lombardi, Maggi, Melchiorre, e
altri in “I quaderni della Civica Scuola di Musica” Anno 6, numero 13, 1986). Dal punto di vista analitico si
rimanda anche all’analisi del periodo “atonale” di Schönberg in (Mastropasqua 2004): fondamentale il
concetto di “variazione evolutiva come manifestazione della logica musicale” e di svelamento del modo di
condurre l’idea.
28
Citazione tratta dalle note di copertina di Luca Francesconi al libretto del CD “Luca Francesconi, cobalt
scarlet – rest” Stradivarius
Ben presto, nel mondo occidentale, i migliori intepreti della razionalità tecnica divennero
le macchine, gli artefatti della tecnologia scientifica, giungendo ad un importante
crocevia storico proprio negli anni 50, con la nascita della cibernetica e con
l’affermazione del calcolatore come “del prodotto più complesso e ricco di
comportamenti possibili sviluppato dalla tecnologia.” (Serra Zanarini 1986)
Nel 1956, negli Stati Uniti, gli scienziati John McCarthy e Marvin Minsky tennero a
battesimo la nascita dell’Intelligenza Artificiale. Esattamente un anno dopo, nel 1957, gli
scienzati e musicisti Max Mathews e Lejaren Hiller cominciarono a far “suonare” i primi
calcolatori dell’era contemporanea.
Questa interpretazione della tecnologia ci aiuta a evidenziare alcuni aspetti peculiari del
concetto quando relazionato alla storia della composizione nella musica del Novecento.
Così definisce questo rapporto il musicologo e compositore Agostino DiScipio:
29
Tradizionali, elettroacustici, elettronici, informatici.
ma si è spesso anche assunta la responsabilità delle proprie
tecnologie…sembra indicare che uno degli aspetti essenziali
dell’esperienza dell’arte, nel contesto storico generale, consiste nel
definire le condizioni della propria esistenza in un contesto di sempre
crescente razionalità tecnica….” (ibidem)
Nel momento in cui la razionalità, nel vibrare tra intuito e ragione, rivendica delle priorità
sull’artigianato compositivo (per mezzo della tecnica), emerge la tipica complessità
formale della musica del Novecento.
La razionalità, tuttavia, rimane un concetto di difficile intepretazione. Essa è
interpretabile dinamicamente, cioè contestualizzabile a ciò che del razionale abbiamo
conosciuto relativamente all’insieme delle conoscenze scientifiche di una data epoca.
Nel XX°secolo l’evoluzione di tale concetto è profondamente legato all’evoluzione delle
scienze dell’Intelligenza Artificiale e dell’Informatica. L’affascinanante percorso storico
dell’Informatica ha inizialmente identificato la razionalità con il calcolo, l’algoritmico. I
primi programmi di Intelligenza Artificiale, elaborando algoritmicamente strutture di
simboli “simulano almeno i prodromi di una capacità ritenuta peculiare dell’intelligenza
umana: quella di scegliere…”. (Cordeschi e Tamburrini, L’Intelligenza Artificiale: la storia
e le idee30)
La tecnologia della musica, come dimensione relativa alla comprensione della prassi
compositiva tout-court fin qui descritta31, non può prescindere dal considerare
l’evoluzione storica della razionalità tecnica. Una prima conseguenza riguarda quindi
l’adozione di un preciso criterio analitico che consideri la tecnologia come parte
integrante delle tecniche della composizione musicale.
DiScipio, a proposito dell’analisi della musica elettroacustica-informatica, ribadisce come
sia necessario porre la techné32 come dominio di analisi del repertorio: “…per giudicare i
risultati percepiti occorre avere nozioni precisi su come tali risultati sono
ottenuti…impossibile cogliere la portata estetica della produzione elettroacustica di
30
www.mosac.com/ia/index.php?name=introduzione.html
31
La tecnica cioè come dimensione strategica della composizione.
32
Il concetto di techné è centrale in tutta l’esperienza, oltrechè analitica, anche poetica e poietica del
compositore Agostino DiScipio. Un concetto, derivato da Heidegger, attraverso cui descrivere il ruolo della
poiesi artistica in relazione all’egemonia tecnologica: “To transform musical concepts into audible constructs,
musicians either apply inherited methods and techniques or they themselves invent new methods. What
they do with those methods and techniques is to model experience – both perceprual and conceptual. In a
composer’s work, this modeling is mainly an activity of design in which s/he follows particular strategies and
technical procedures, no matter whether s/he proceeds from a moment of romantic inspiration or a more
structuralistic standpoint. This is to say that the possibility for a composer to speak any language comes with
the making and using of specially designed strategies and techniques. The knowledge by which s/he can
challenge language and, to use Heideggerian terms, make language tell, is condensed in her/his techné.”
(Di Scipio 1998)
Xenakis senza analizzarne la specifica techné…o si puo parlare a lungo della centralità
della percezione nella musica di Risset ma al momento dell’analisi non se ne puo
cogliere come l’atto percettivo riesca a diventare progetto se non si analizzano i processi
di sintesi e di elaborazione del suono” (DiScipio, 1995)
In questo contesto, si ribadisce l’importanza e la necessità di un analisi approfondita dei
paradigmi scientifici e dei costrutti tecnologici che di tali paradigmi sono la diretta
conseguenza.
Una conoscenza non fine a se stessa ma volta alla comprensione di una concezione
della composizione che accoglie la dimensione della technè e và sempre sempre più
configurando l’atto percettivo come progetto33.
1.3.1.1 L’informatica
L’informatica, nella sua accezione più generale, può essere definita come l’insieme delle
tecnologie fisiche hardware e delle istruzioni software necessarie al loro funzionamento.
L’informatica nasce intorno agli anni 40, come disciplina con-fusa con lo studio e l’uso
degli elaboratori elettronici in quanto macchine per manipolare numeri.
A questa visione calcolatrice si è “progressivamente sostituita una visione più generale”
(Natali 1999-2000) che ha indotto nuove definizioni come quella comunemente accettata
che vede l’informatica come “scienza teorica e pratica della rappresentazione e
dell’elaborazione automatizzata dell’informazione” (ibidem). Automatizzata significa che
per le operazioni di elaborazione dell’informazione si incarica un automa, cioè un
esecutore che possiede capacità specifiche come quella di confrontare valori o sapere
33
Con “atto percettivo come progetto” ci si riferisce genericamente al “cambiamento” di una sensibilità
estetica “post-seriale” che trasforma le strategie della tecnica e che arriva ad includere non solo il timbro
come parametro portatore di forma (Barrière Bourgois 1991), prassi influenzata dagli studi di psico acustica,
ma anche tutte quelle esperienze compositive che identificano nel timbro un parametro da strutturare
indipendentemente da logiche cognitive come nelle musiche di Giacinto Scelsi, Helmuth Lachenmann,
Salvatore Sciarrino (“Il compositore indaga la morfologia del proprio percepire” Sciarrino 2001 e Sciarrino
1998) o la matericità di certa improvvisazione sperimentale.
34
Il termine informatica è la contrazione di INFORMAzione autoMATICA.
contare e che “esegue in maniera precisa una sequenza di istruzioni che richiedono la
prestazione delle sue abilità”. (Saccà35)
La vera rivoluzione si ebbe in particolare a partire dagli anni 80, quando il mondo
dell’informatica ha subito radicali trasformazioni sia nelle componenti dell’hardware che
del software.
La progressiva diffusione dei personal computer dalla metà degli anni 80, seguita negli
anni 90 dalle tecnologie portatili e dalla diffusione della rete Internet, ha ridefinito il modo
di interpretare l’informatica; da pura disciplina dell’elaborazione dell’informazione a
disciplina che “inizia a studiare in modo sistematico l’interazione e la coordinazione
creando un nuovo spazio di lavoro in cui l’elaborazione è solo una delle dimensioni”
(Natali 1999-2000) E’esperienza comune, nell’utilizzo della rete Internet, di quanto non
sia del tutto necessario una conoscenza strutturale dei protocolli di comunicazione per
utilizzare la rete per le finalità come il reperimento e la condivisione di informazioni.
Tutto ciò, quindi, a favore di un accrescimento della produttività individuale e di una
radicale riorganizzazione dei metodi del lavoro e di comunicazione sociale. E’importante
tuttavia sottolineare che, soprattutto nei settori della ricerca scientifica e artistica, “gli
oggetti della tecnologia non hanno condotto a un semplice esonero di attività, ma hanno
trasformato la loro competenza”. (Marchesini 2002)
Uno dei contributi più importanti all’evoluzione della scienza informatica è la ridefinizione
del concetto di algoritmo da semplice procedura statica per la trasformazione di valori
input in valori output, ad un definizione di algoritmo dinamico e interattivo. Questo
passaggio capitale, iniziato verso la fine degli anni 60, ha permesso, parallelamente
all’evoluzione dell’hardware, lo sviluppo delle tecnologie informatiche così come oggi le
conosciamo.
La storia della composizione musicale al computer è parallela alla storia dell’evoluzione
dell’informatica di cui reinterpreta o assimila i realtivi paradigmi. La seguente
introduzione alla tecnologia informatica software esplicita alcuni concetti ritenuti
fondamentali per una corretta comprensione del rapporto tra composizione musicale e
tecnologia software così come descritta nei capitoli successivi.
In questo contesto una particolare rilevanza assume l’evoluzione del concetto di
algoritmo e di linguaggio di programmazione.
L’algoritmo ci aiuta a definire le istanze paradigmatiche della tecnologia, quindi i suoi
“limiti” in relazione all’uso dei linguaggi di programmazione per la composizione
musicale.
E’ solo dall’elaborazione di un algoritmo in un determinato linguaggio di
programmazione che il compositore risce a definire le proprie tecniche e strategie
compositive. E’ questo il livello di analisi della techné in cui si situa il cuore delle
esperienze poietiche di tutte le prassi compositive mediante il computer qui considerate.
35
www.icar.cnr.it/fonda/upload/lezioni
“The gaining of some competence at programming can be rewarding to a composer as
it is the key to a general understanding of computer systems. Although systems are
composed of programs of great complexity and written using techniques not easily
learned by nonspecialists, programming ability enables the composer to understand the
overall workings of a system to the extent required for its effective use.” (Roads 1996)
Secondo lo storico della matematica Carl Boyer (Boyer 1980) il termine algoritmo deriva
dal nome del matematico e astronomo Mohammed ibn-Musa al-Khuwarizmi vissuto nel
IX°d.C. Con la diffusione della traduzione latina De numero indorum alla particolare
descrizione del sistema di numerazione indiano fu attribuito il termine algorismo o
algoritmo, cioè la latinizzazione di al-Khuwarizmi. Successivamente, a tale termine,
venne attribuito il significato di “qualsiasi particolare regola di procedimento o di
operazione, quale per esempio il metodo euclideo per trovare il massimo comune
divisore”. (Boyer 1980)
Nel passaggio capitale tra sistema di numerazione e regola di procedimento, si situa lo
sviluppo del concetto di computo, (lo si intenda sempre come sinonimo di algoritmo e di
calcolo) così come concretizzatosi nella tecnologia informatica. In questo complesso
passaggio (cui accenneremo con argomenti ampiamente trattati dalla divulgazione
scientifica, cfr.Cap.2 lambda calcolo) tra astrazioni logiche e matematiche e tecnologia si
situa il cuore della procedura informatica.
In informatica l’algoritmo è la rappresentazione logica di un modello della conoscenza;
dove per logica, formalmente interpretata, si intenda “con Church36 lo studio sistematico
delle strutture enunciative e delle condizioni generali di validità delle inferenze, mediante
un procedimento che astrae dal contenuto o dalla materia dei giudizi e tratta solo della
forma logica; in termini corrispondenti, il Quine sostiene che l’inferenza logica porta da
premesse (proposizioni che vengono ammesse o credute per qualsivoglia ragione) a
conclusioni che sono dimostrabili come vere in base a considerazioni puramente
logiche, se le premesse sono vere”. (Pasquinelli 1970)
L’insieme delle conoscenze logiche e formali per la definizione teorica di algoritmo si è
andata assestando nella prima metà del XX°secolo, ma fu solo con la diffusione dei
calcolatori che le tecniche per progettare e implementare algoritmi si sono evolute.
E’ possibile quindi sostenere che fu solo con il computer che la definizione di calcolo
(cfr. Cap.2 § 2.1.2.1) trovò la sua applicazione pratica.
Riassumendo:
“Ovunque si impieghi un calcolatore elettronico occorrono algoritmi corretti ed efficienti
che ne utilizzino al massimo le possibilità. Algoritmi sofisticati e veloci sono usati per
controllare il volo di aerei, regolare reazioni nucleari, smistare comunicazioni telefoniche,
giocare a scacchi…progettare nuovi calcolatori, riconoscere immagini, elaborare testi
letterari, comporre musica. Gli algoritmi vengono comunemente descritti tramite
programmi, che si avvalgono di istruzioni e costrutti dei linguaggi di programmazione e
che devono essere eseguiti da calcolatori elettronici. Le proprietà degli algoritmi sono
però talmente fondamentali, generali e robuste da essere virtualmente indipendenti dalle
caratteristiche di specifici linguaggi di programmazione o di particolari calcolatori
elettronici. La nozione di algoritmo è inscindibilmente legata a quella di dato. Infatti, per
risolvere un problema computazionale, occorre organizzare ed elaborare dati.
L’algoritmo può essere interpretato come un manipolatore di dati che, a fronte di dati in
ingresso che descrivono il problema da risolvere, produce altri dati di uscita come
risultato del problema.” (Cormen, Leiserson, Rivest 2005)
generazione nata dalla fine degli anni 50, 60 per i quali vi è una maggiore “confidenza” con lo strumento
informatico e compositori dei loro algoritmi e programmi (compositori del gruppo PRISMA come Jacopo
Baboni Schilingi, Michele Tadini, Paolo Aralla, Giacomo Platini, Hans Tutschku ecc.); per i quali gli strumenti
informatici hardware e software diventano parte integrante di una nuova grammatica musicale.
38
Cioè prescindendo dalle conseguenze pratiche della definizione logica di algoritmo definita
precedentemente con (Pasquinelli 2000). Le strutture di controllo definite di seguito forniranno una prima
descrizione formale di algoritmo.
La programmazione cosiddetta strutturata è un metodo di enunciazione algoritmica
indipendente dai linguaggi e finalizzato alla chiara definizione del processo di astrazione.
Esso esige due regole principali:
39
vs.bottom-up
40
Tutti i linguaggi di programmazione rendono disponibile “espressioni primitive (entità semplici che il
linguaggio consente di esprimere), meccanismi di combinazione (con cui si possono costruire entità
composte a partire da entità semplici) e meccanismi di astrazione (mediante i quali oggetti linguistici
composti possono essere dotati di nome e manipolati come entità atomiche)”. (Natali 1999-2000)
Diramazione semplice:
Diramazione multipla:
Diramazione multipla semplificata:
- iterazione a contatore
Una volta implementati nei rispettivi linguaggi di programmazione, gli algoritmi possono
essere analizzati in questi linguaggi. Viceversa è possibile anche l’analisi del progetto
algoritmico a partire dalla sola strutturazione dei diagrammi di flusso o dalla deduzioni di
questi dall’analisi di un programma.
Generalmente l’analisi di un algoritmo richiede procedure complesse che non verranno
qui considerate. E’necessario quindi sapere che l’analisi “può risultare complessa anche
se l’algoritmo è semplice” (Cormen 2005) e che gli strumenti matematici che occorrono
possono essere anche molto complessi.
Per analisi di un algoritmo qui si intende l’interpretazione di un programma (chiamato
Patch) in OpenMusic strutturato come nel Capitolo 3 mediante:
41
Dalla teoria della musica definita in Azzaroni (1997), o alla comparazione con i sistemi teorici dei
compositori. Il modello teorico di riferimento del gruppo di Representation Musicale dell’IRCAM è un modello
essenzialmente matematico, si veda recherche.ircam.fr/equipes/repmus/moreno . Si confronti inoltre con la
teoria della musica ipersistemica di Jacopo Baboni Schilingi 2005.
1.3.1.1.2 I linguaggi di programmazione
C++ JAVA
ADA PROLOG
VISICALC SMALLTALK
FORTRAN77 LISP
PASCAL
SIMULA67
LISP
APL
ALGOL
COBOL LISP
ALGOL
LISP
FORTRAN
C
Linguaggi macchina
PlanKalcul
Paradigma imperativo riunisce la famiglia dei linguaggi Fortran, Cobol, Algol, Pascal,
Ada, C, rappresentano quelli di uso comune nel settore industriale.
Paradigma funzionale (Lisp e suoi dialetti cfr. Cap.2§ 2.1.2) e linguaggi logici (Prolog e
dialetti). Sono utilizzati per applicazioni di intelligenza artificiale.
Paradigma orientato agli oggetti E’ il più recente tra i tutti i paradigmi. Include
linguaggi come C++. Java. Il suo elevato livello di astrazione può includere la
rappresentazione di altri livelli paradigmatici (funzionale e imperativo) dando vita a
linguaggi “ibridi” come CommonLisp/CLOS (Common Lisp Object System) il linguaggio
su cui è basata la progettazione dell’interfaccia visiva di OpenMusic.
“I linguaggi ad oggetti costituiscono la cerniera di collegamento tra computazione e
interazione…un lungo percorso di ricerca e sviluppo, non ancora concluso, ispirato al
concetto di componente sofware”. (ibidem)
42
Condivide, con il concetto di paradigma in Kuhn (cfr.nota 2) il medesimo significato relativamente alla
tecnologia informatica.
sofware sono genericamente denotati con il termine interfaccia…dotata di una precisa
unità concettuale e/o funzionale” (ibidem)
Nel contesto di questa dissertazione si consideri OM come l’interfaccia visiva con cui il
compositore interagisce per definire i suoi algoritmi sintatticamente e semanticamente
definiti dal paradigma funzionale e orientato agli oggetti.
43
“Proprietà di rendere inaccessibile la rappresentazione concreta dei dati e di permetterne la
manipolazione solo attraverso le operazioni di un insieme di operazioni di interfaccia.”
44
Per interfaccia non si intende ancora interfaccia grafica dove un oggetto è rappresentato da un’icona. Con
una metafora un oggetto può essere paragonato ai vocaboli di un vocabolario il cui significato preciso può
essere più o meno noto all’utente (il programmatore).
per cui sarebbero necessari oggetti che rappresentano il segnale audio. Di questo
segnale quali elementi è possibile nascondere? Quali processi applica il compositore al
segnale audio? E se il compositore desidera lavorare con il modello di rappresentazione
musicale fornito dal sistema di notazione tradizionale, quali oggetti per rappresentare
tale sistema?
A tutte queste domande abbiamo detto che la storia dell’informatica musicale ha cercato
di rispondere con l’evoluzione dei software per la composizione al computer e per la
composizione assistita.
Tuttavia è necessario innanzitutto comprendere a fondo il perché il compositore
dovrebbe occuparsi di programmazione per fare computer music, che equivale a
domandarsi dove si situi lo specifico informatico, e quale “valore aggiunto” questo
rappresenti per la composizione musicale.
Il compositore David Cope, noto per i suoi studi sulla simulazione di stili musicali al
calcolatore, sostiene che il termine computer non definisce un particolare prerequisito
per la definizione di musica algoritmica; cioè di una musica la cui struttura formale sia
dedotta da particolari procedimenti logico-numerici.
Il calcolo, il numero e la proporzione, sono stati elementi sempre più o meno importanti
nella storia della composizione musicale. In alcuni periodi (in particolare dalla nascita
della scrittura musicale fino al rinascimento e nel XX° secolo) sono diventati parte
integrante di quel lavoro razionale a cui si è fatto riferimento agli inizi di questa
dissertazione.
A partire dalle leggende legate alla figura del filosofo Pitagora, la musica, in occidente, si
è sempre fornita di intepretazioni formali del materiale sonoro. (Gozza 1989)
Il monocordo, “macchina calcolatrice” dei pitagorici, fu lo strumento prescientifico per la
verifica sperimentale del rapporto tra sensazione uditiva e astrazione numerica. Esso ha
rappresentato uno strumento fondamentale per la valutazione dei sistemi di riferimento
sonoro sia del discorso, o della speculazione filosofica, intorno ad essi. Stabilite le
relative proporzioni, divenne possibile la comparazione delle misure, per l’auscultazione
e l’intonazione degli intervalli; cosa che attribuiva al semplice artefatto tecnologico un
valore simbolico e metafisico, un valore che ri-conosce “nel suono, “a priori”, una sintesi
fra oggetto e valore, materia e spirito, fuori e dentro, il mondo e l’io”. (Kaiser)
Nel XIII° secolo Johannes De Garlandia, erede della tradizione pitagorica, definiva la
musica come scienza del numero in relazione al suono, definizione che sanciva la
relazione con il Quadrivium boeziano cioè con quell’ambito di studi sulle arti liberali che
vedeva l’ars musica a fianco dell’aritmetica, della geometria e dell’astronomia. (Meyer
1992)
La scienza del numero, quella definita da Boezio nel De Institutione Arithmetica, fu
reinterpretata dai teorici della musica medioevali e coincise con la teoria delle
proportiones. Una teoria che traeva origine dalla tradizione dei pitagorici, di Platone e di
Aristotele per poi fissarsi “nel Canone di Policleto e nell’esposizione che ne aveva fatto
successivamente Galeno…divenne gradatamente documento di estetica dogmatica. Da
questi testi nacque dunque il gusto di una formula elementare e polivalente, di una
definizione della bellezza che esprima numericamente la perfezione formale…” (Eco
1987). In che senso musica come scienza del numero?
Nelle menti dei musici e musicisti medioevali la teoria delle proportiones governa il
momento speculativo teorico quanto quello compositivo micro e macroformale. Si pensi
alle proportiones come “sistema che regola la diminuzione o l’aumento dei valori di
durata secondo determinati rapporti numerici” (Azzaroni 1997) oppure all’utilizzo del
complesso sistema di proporzioni dei mottetti arsnovisti o nel celebre mottetto Nuper
Rosarum Flores di Guillaume Dufay, la cui nascosta numerologia rimanderebbe al
simbolismo ecclesiologico e alle proporzioni con cui era stato edificato il tempio di
Salomone (Carozzo Cimagalli 2001).
Nella storia della musica occidentale il numero assume cioè una vera e propria rilevanza
strutturale, o meglio, una rilevanza finalizzata all’emergenza ed al controllo delle diverse
fasi di strutturazione della forma musicale.
In particolare ciò è avvenuto nel XX°secolo, a partire dalla nascita del metodo per la
composizione dei dodici suoni fino alla pubblicazione delle “profetiche” teorie di
Schillinger nel 194645, dalle tecniche del serialismo integrale fino alle tecniche
automatiche aleatorie di John Cage legate all’I-Ching. Infine, con l’informatica musicale
e la composizione assistita non solo si chiama in causa il numero (come elemento
astratto e ordinatore) ma anche l’automazione del processo di organizzazione numerica.
Indipendentemente dall’evoluzione della tecnologia informatica si sono poi succedute
diverse critiche alla rigida interpretazione dei sistemi generativi artificiali (come le matrici
seriali, le permutazioni, calcoli probabilistici) per cui divenne necessario piegare il
numero alla volontà estetica per inaugurare la rinascita, come sostiene Alessandro
Solbiati, “delle possibilità espressive di un pensiero compositivo cosciente” (Solbiati
2000), dell’atto percettivo come progetto (“L’automatismo si è contaminato di
invenzione” sostenne ancora Donatoni).
Possibilità che non precludono affatto l’utilizzo del numerico o dell’algoritmico. A tale
proposito (Solbiati 2005) e i saggi contenuti in (Solbiati 2000) rappresentano una
preziosa testimonianza della poietica di un compositore che utilizza il numerico per
guidare l’emergenza di materiale e di figure. Le osservazioni sono di particolare
importanza perchè stabiliscono criteri generali e condivisi circa la relazione di un
compositore con il materiale ottenuto attraverso processi automatici; nell’artigianato di
Solbiati ottenuti in un ambito che non contempla l’utilizzo del computer.
Una prima constatazione di Solbiati nasce dalla seguente osservazione:
45
Vale in questo contesto la definizione di Schillinger (1895-1943) secondo cui ogni struttura matematica
può definire una relativa articolazione di un materiale musicale. Le teorie di Schillinger sono esplicitamente
criticate dai maggiori esponenti dell’attuale teoria matematica della musica. Si veda a questo proposito la
recensione del libro di Luigi Verdi “L’organizzazione delle altezze nello spazio temperato” da parte di
Moreno Andreatta (membro dell’equipe di representation musicales dell’ircam, sviluppatore della libreria
OMZN per OpenMusic).
46
E’necessario ricordare come anche all’interno delle prassi seriali aleatorie e probabilistiche si sono
sviluppate differenti interpretazioni del modello generativo con il quale tuttavia si instaurava diversi vincoli.
lo stupore: guardare un materiale nato in questo modo, coglierne alcuni nessi
imprevisti, portarli a sé e trasformarli, è il primo passo per un recupero della
fiducia in una necessità interna del portato inventivo e immaginativo
dell’artista. Infatti, il materiale autogeneratosi agisce nei confronti del
compositore come uno specchio in cui egli crede di vedere inevitabilmente
alcune relazioni, senza neppure accorgersi che è il suo inconscio creativo a
indirizzarlo verso alcune relazioni e non verso altre.” (Solbiati 2000)
47
Si intende qui conoscenza come sinonimo di scienza nel senso più lato del termine.
48
Agostino DiScipio, 2005 comunicazione personale.
generare del materiale…una critica della “composizione automatica”
non implica in alcun caso un rifiuto di qualunque tipo di
indeterminismo: vi sono innumerevoli imprevisti del caso in ogni
recesso dello spazio-tempo…questi imprevisti dovrebbero essere i
benvenuti, poiché sono potenzialmente “morfoforici” (portatori di
forme). Per le stesse ragioni non si tratta nemmeno di rifiutare
qualunque tipo di automatismo. Ciò di cui si tratta è piuttosto il
tentativo di mettere in prospettiva questi modi ontologici, al fine di
evitare qualunque tipo di reificazione del “meccanico” e qualunque
vassallaggio della musica a quest’ultimo. Non si tratta di individuare
il luogo dell’aleatorio o del formale nei processi di composizione,
bensì sia gli approcci lineari nei quali il concetto d’interazione non
ha alcun ruolo, che tutti i tentativi di reificazione del meccanico
come modo ontologico fondatore dell’azione compositiva.”.
(Vaggione 2002)
Vaggione evidenzia il ruolo attivo (critico) del compositore, non solo in quanto
“interprete” dei possibili risultati forniti dal sistemi artificiali, ma proprio in quanto
elemento centrale (osservatore e ri-organizzatore) di una nuova rete di possibili
configurazioni formali emergenti.
Si delinea, innanzitutto, una concezione della composizione che rivendica a sé il dominio
del libero arbitrio. “La problematica delle tecnologie musicali riguarda quindi la nozione
più generale per cui l’esperienza dell’arte si dà come misura dell’invenzione: all’esigenza
“espressiva” (cioè all’ambito delle istanze rappresentative, estetiche), essa affianca un
elemento che implica sempre un superamento, uno sconfinamento delle tecniche
costruttive date. É in tal senso che quello dell’arte in generale è un lavoro che riguarda
la libertà – la libertà “di azione” come presupposto per quella “di espressione”, dunque
come elemento decisivo e fondante.” (Di Scipio 2000) Sulle conseguenze di questo e
relativamente alla composizione assistita ancora Vaggione: “Venendo al significato di
una assistenza informatica nel campo della creazione musicale…occorre far piazza
pulita, nella nostra prospettiva, di qualche equivoco possibile…non si tratta di concepire
il computer come un sostituto del compositore, e questo a qualunque tipo di livello. La
libertà di scelta del compositore deve esercitarsi ovunque e in qualunque momento…”
(ibidem)
49
Solbiati identifica in Maderna l’inizio di questo cambiamento. Significativa, a questo proposito, la presenza
di un saggio di Mario Baroni dedicato analisi della composizione Duo pour Bruno di Franco Donatoni, nel
volume Bruno Maderna Studi e testimonianze a cura di Rossana Dalmonte e Marco Russo. Significativa
anche la presenza, nella biblioteca di Bruno Maderna, del volume di Italo Ghersi, Matematica dilettevole e
curiosa, Milano Hoepli 1988 (cfr. nota 42 Veniero Rizzardi “La nuova scuola veneziana 1948-1951” in Le
musiche degli anni Cinquanta, Archivio Luigi Nono Studi II 2003 Leo S.Olschki 2004)
50
Ci si è spesso riferiti a questo approccio come ad un approccio etico alla tecnologia.
51
Per la definizione di tecniche non-deterministiche è necessario introdurre concetti derivati dall’Intelligenza
artificiale (cfr.§ 1.4.4)
- è una macchina la cui struttura si ispira a quella del cervello e si propone
come suo modello
…E’importante rilevare che l’uso dei calcolatori consente non solo di
eseguire in modo più efficiente compiti già eseguiti a mano, ma consente
di svolgerli in modi diversi e di eseguirne di nuovi inediti. Inoltre il
calcolatore consente di (e obbliga a) scendere nei minuti particolari di
un’operazione e di osservare in filigrana i meccanismi e le strutture
soggiacenti altrimenti invisibili. L’esecuzione passo passo ci mette così di
fronte ai problemi che costituiscono quel “mare” che sta in mezzo tra il
“dire” e il “fare”.
“l’algoritmo costituisce la differenza fondamentale tra l’impostazione
informatica e quella tradizionale (filosofica e scientifica) della conoscenza.
Più simile all’attività pratica, passo passo, degli artigiani che a quella
teorica e speculativa dei pensatori, l’informatica consente di articolare con
precisione potenzialmente arbitraria i passaggi che portano dal concetto
primo o dall’intuizione al suo dispiegamento analitico e
all’attuazione….più sorprendente è l’influenza che l’informatica esercita
sui costrutti teorici…” (Longo 1998)
MODELLI
I modelli possono essere fisici, matematici, musicali, dedotti dagli studi sull’Intelligenza
Artificiale, dalla teoria dell’Informazione o da modelli teorici della psicoacustica.
Qualsiasi costrutto mentale, grazie al principio della simulazione, è passibile di essere
trasformato al computer in un modello di se stesso.
Secondo la definizione di Gérard Assayag un modello è “un dispositif formel qui, rendant
compte, au moins partiellement, des caratéristiques d’un processus matériel, en autorise
experimentalement la simulation aux fins de vérification, d’observation ou encore de
production de processus similaires”. (Assayag 1993) L’utilizzo di un particolare modello
implica differenti punti di vista che sembrano convergere poiché “l’informatica tende ad
unificare sia le istanze esplicative che quelle generative del modello” (ibidem)
avvicinando così prassi analitica e composizione musicale. Tuttavia, continua Assayag,
la ricerca analitica elabora i propri strumenti mediante il continuo affinamento di un
modello, mentre il compositore costruisce ed esplora creativamente i modelli.
Avere a disposizione un modello vuol dire poter sottoporre questo a strumenti di
elaborazione e trasformazione prima inimmaginabili. Un modello, per la composizione
musicale, può essere qualsiasi procedimento descrivibile nei termini di una sua
implementazione algoritmica: è possibile formalizzare una teoria delle proportiones, di
procedimenti isoritmici, di costruzioni armoniche funzionali o contrappuntistico modali e
far interagire questi modelli tra loro. Un modello può anche essere l’evoluzione di un
profilo melodico, decritto secondo funzioni matematiche caotiche (cfr. librerie per
OpenMusic di Mikhail Malt OMChaos e OMAlea).
Un’analisi generale di questi modelli ha permesso una radicale riconsiderazione dei
processi di generazione del materiale e di trasformazione degli stessi. In particolare con
il processo di trasformazione; esso trova un’ adeguata contestualizzazione poietica nella
teoria di Guerino Mazzola (Mazzola 2002), nella teoria della musica ipersistemica di
Baboni Schilingi (Baboni Schilingi 2005) e nella prospettiva analitica delineata da Luigi
Verdi (Verdi 1998).
INTERAZIONE
Complessità e strutture
La composizione musicale assistita ha relazioni molto strette con la scienza dei sistemi
complessi. In particolare per quello che riguarda le condizioni che rendono possibile la
genesi (generazione) del materiale. Facciamo qui riferimento al concetto di automatismo
derivato da quello di emergenza e di auto-organizzazione (Serra-Zanarini 1990).
In considerazione della definizione di informatica data all’inizio di questo capitolo
possiamo considerare l’automatismo come caratteristica peculiare del sistema
informatico.
54
Una tassonomia per la definizione degli ambiti disciplinari inerenti alla computer music (o informatica
musicale) è stata proposta da Stephen Travis Pope nell’ambito di un’ampia ricerca documentaria,
bibliografica e discografica. La proposta (disponibile a partire dalla homepage del Computer Music Journal
mitpress2.mit.edu/e-journals/Computer-Music-Journal), che teneva conto di precedenti tentativi
classificatori, individua sette macro aree a loro volta suddivise nei rispettivi settori di ricerca della computer
music. Se la tassonomia rispecchia fedelmente gli ambiti della ricerca attuale in informatica musicale tuttavia
sono state avanzate delle critiche relativamente al ruolo della composizione in tale sistema classificatorio.
La classificazione tende ad evidenziare una forte componente tecnologica che ha subito profonde
modificazioni nel corso degli anni. Parallelamente queste definizioni sottointendono complesse modalità di
interpretazioni estetiche di tali tecnologie da parte dei compositori. In particolare Eric Lyon, pur riconoscendo
come l’organizzazione gerarchica di questa tassonomia rappresenti un ottimo punto di partenza per
l’identificazione di aree in cui è necessaria un maggiore impegno della ricerca, così commenta: “One area
which I am not yet convinced is best served by this taxonomiy is the composition aspect of computer music.
I have developed numerous taxonomies and systematic organizations of various aspects of the field, and
have always been overwhelmed by the complexity of possible interrelationship, often quite idiosyncratic,
such that I ultimately find myself mapping out my own intuitions – an act which is accomplished much more
efficiently and gratifyingly through the compositional act itself; This is no more than my personal
experience…”
software di Mathews sarà necessario aspettare le esperienze “deboli” di composizione di
Tenney), entrambi non precludono la possibilità di un controllo deterministico della forma
musicale.
55
Per una biografia completa www.csounds.com/mathews
56
R.Pierce, John “Recollections by John Pierce” in The historical cd of digital sound synthesis
“COMPUTER MUSIC CURRENTS 13” WERGO 1995
57
Si consideri la volontà esplicita da parte di Mathews di fare musica attraverso l’utilizzo del computer, non
da confondersi con le ricerche già in atto presso i Bell Laboratories sul suono e sulla voce; in particolare ciò
avveniva attraverso l’utilizzo di un IBM650 già predisposto all’utilizzo e alla sperimentazione di tecniche di
speech processing. Oppure con le prime esperienze di hacking del suono di un computer testimoniate
presso l’MIT durante gli stessi anni (cfr.nota 90). Quel che interessa è come il contesto tuttavia rese
possibile l’incontro con la musica, in un ambito altamente sperimentale e di ricerca. E’importante evidenziare
comunque che la ricerca sul suono sia in ambito ingegneristico pre-informatico che musicale precede di
molti anni gli eventi di cui si parla.
58
Per una storia dei sistemi computazionali Paul E. Ceruzzi A history of modern computing MIT press 1998,
2003 o The first computers – History and architectures edited by Raul Rojas and Ulf Hashagen MIT press
2000.
potente dell’IBM704 quindi in grado di risolvere algoritmi di sintesi più complessi. Music
II era in grado di gestire una polifonia di “quattro voci, con la possibilità di scelta tra
sedici forme d’onda”.(Roads 1996)
In queste prime versioni del software l’intervento del compositore è piuttosto limitato
tanto da far sostenere allo stesso Mathews: “…using this program, the composer does
not denote more than he does in conventional musical notation”.59
Nello stesso articolo emergono le prime indicazioni sulle prospettive future di un nuovo
linguaggio per la sintesi del suono al computer, a favore di una maggiore libertà
compositiva, quindi timbrica, con precise indicazioni circa la modifica di parametri del
suono nel tempo, come l’alterazione dell’inviluppo d’attacco e di rilascio del suono.
La versione più importante del compilatore di questa prima fase della storia dei software
per la sintesi del suono fu MUSIC III programmato da Mathews e dal suo collega Joan
Miller nel 1960 (Roads 1996). Il programma fa proprio il concetto di Unit Generators
(UGs) tassello fondamentale dei linguaggi per la computer music al fine di generare o
processare un segnale audio.
59
M.Mathews – N.Guttman “Generation of music by a digital computer” in The historical cd of digital sound
synthesis “COMPUTER MUSIC CURRENTS 13” WERGO 1995, pag.30
60
Con i celebri sintetizzatori modulari.
flessibilità di applicazioni dei mezzi…Una buona parte dell’antica attrezzatura solida, di
quella che si chiama di solito “hardware”…è qui rimpiazzata da “software”…Per esempio
la parola “generatore” o “oscillatore”…non rappresenta più un apparecchio elettronico in
“carne ed ossa”, ma un programma di elaborazione, un insieme di algoritmi, capace di
stabilire tutti dati particolari di un processo ondulatorio…” (Pousseur 1976)
Con la nascita dei componenti software delle UGs si stabilisce quindi un codice comune
tra compositori elettroacustici e i programmatori informatici. Infatti, fino a quel momento,
non poche furono le difficoltà dei compositori che si volevano avvicinare alla nascente
informatica musicale.
Music V fu senza dubbio la versione del software piu diffusa tra studiosi e compositori
prima dello sviluppo di Csound; a contribuire alla diffusione del software fu anche il testo
di Mathews, The Technology of Computer Music del 1969 pubblicato da MIT press, un
vero e proprio manuale per l’utilizzo di MusicV. Un ulteriore documento importante per la
diffusione di MusicV fu il testo “An Introductory Catalogue of Computer Synthesized
Sounds” del compositore Jean Claude Risset; 25 esempi di suoni compilati con Music V
per un’immediata valutazione da parte dell’utente del potenziale musicale. L’utente infatti
poteva liberamente ascoltare i timbri generati per poi studiare direttamente il codice
generativo del relativo suono e sperimentare su di esso.61 Viceversa dall’analisi del
codice era possible (per algoritmi semplici) intuirne il possibile risultato sonoro.62
La diffusione del software si estese ben presto presso tutta la comunità dei compositori
di musica interressati all’informatica; soprattutto presso tutti i compositori in cui era già
ben delineata “una traiettoria che aveva posto al centro del problema musicale, come
stavano facendo gran parte dei compositori che operavano in quegli anni negli studi di
fonologia delle emittenti radiofoniche, il problema del suono. Dell’organizzazione del
suono”.
Per il compositore musicale informatico la struttura dei programmi di Max Mathews
(riconducibile sempre al modello strumento/partitura) e di quelli da essi derivati
rappresenteranno, per molti anni, l’interfaccia attraverso cui costruire il suono. “Il
programma determina attraverso i suoi strumenti e nella medesima struttura sia
l’ambiente compositivo, la partitura espressa come una lista di azioni nel dominio del
tempo dei singoli eventi acustici che include i parametri fondamentali che definiscono
l’evento sonoro sul piano qualitativo, sia la definizione dello ‘strumento’ di sintesi o di
61
Notevole fu la diffusione del catalogo di J.C.Risset; successivamente fu adattato anche per Csound.
Questo avvenne a partire dal lavoro di Steven Held e Judy Klein dello studio di musica elettronica
dell’università di New York. Fu poi grazie a John Philip Gather che il catalogo venne esteso e denominato
come“Amsterdam Catalogue of Csound Computer Instrument”, (v. bibliografia ACCCI 2000) strumento
didattico fondamentale per lo studio del software.
62
Non sarebbe inopportuno a questo proposito di parlare di vero e proprio solfeggio sonoro del codice nel
senso schafferiano del termine.
elaborazione che viene sottoposto al controllo della partitura”. (Galante Sani 2000) Cioè
oggetto e processo nel medesimo ambiente di programmazione.
“Con le unità generatrici, il compositore può costruire, con una procedura piuttosto
semplice, il suo particolare programma di sintesi. In Music5 esso è chiamato “orchestra”,
e contiene una grande quantità di sottoprogrammi chiamati “strumenti”. Le unità
generatrici dispongono di funzioni che l’esperienza ha dimostrato essere le più utili. Per
esempio vi sono oscillatori, sommatori, generatori di rumore e generatori di attacco.
Molte delle unità generatrici hanno funzioni concettualmente simili a quelle delle
apparecchiature elettroniche utilizzate per la sintesi sonora. All’interno di un dato
strumento il compositore può collegare insieme quante unità generatrici
desidera…L’ultimo principio mediante il quale vengono specificate le sequenze di suoni
è il concetto di nota. Il suono esiste come funzione continua del tempo che parte
all’inizio di un pezzo e prosegue fino alla fine. Abbiamo deciso, per motivi pratici, di
spezzettare questo suono continuo in porzioni discrete, chiamate note, ognuna delle
quali è caratterizzata da un tempo di partenza e da una durata. Questa divisione è
senza dubbio una restrizione rispetto alla generalità del processo di sintesi sonora, ma
non abbiamo avuto il coraggio di evitarla. E non c’è bisogno di aggiungere che in fondo
le note hanno costituito un concetto chiave della musica per parecchio tempo. Il concetto
di nota interagisce con lo strumento in modo particolarmente diretto. Gli strumenti sono
stati costruiti per “suonare” delle note…le istruzioni da dare allo strumento in
corrispondenza di ogni nota vengono scritte dal compositore su una partitura (o dal
programma del compositore, se questi preferisce delegare alla macchina questo
compito)…In generale strumenti più complessi richiedono un maggior numero di
istruzioni, ma per contro sono in grado di suonare note più lunghe e più interessanti.
All’interno delle limitazioni create da questi fattori opposti, il compositore può crearsi
l’ambiente di lavoro più adatto ai suoi scopi.” (M.Mathews in Pousseur 1976)
E proprio “il concetto di nota” fu oggetto di controversie (Laske 2005, Vaggione 1999, Di
Scipio 1994). Questo era sentito come un limite all’esplorazione di quella nuova
morfologia del suono resa possibile dalla conoscenza dei suoi aspetti microstrutturali e
dalla proiezione/modellazione di questi fino a coinvolgere, come dice Vaggione,
“un’articolazione dei livelli temporali più diversi.”
In questo senso anche Curtis Roads nota come “the idea of sound morphology63
remains central to the theory of electroacoustic music, in which the musical spotlight is
often shone on the sound objet level. In traditional composition, transitions function on
the mesostructural level through the interplay of notes. In electroacoustic music, the
morphology of an individual sound may play a structural role, and transition can occur
within an individual sound object. This ubiquity of mutation means that every sonic event
is itself a potential trasformation” (Roads 2001)
Ancora Vaggione sottolinea come “non potremmo limitare l’utilizzazione di
“rappresentazioni “simboliche” unicamente al campo macroscopico delle note, poiché
rappresentazioni pertinenti possono essere ormai definite a qalunque livello temporale:
la sintesi e la trasformazione sonora fanno appello ugualmente a delle manipolazioni di
simboli a delle ‘scritture’. La questione che si pone, in queste condizioni, è quella di
trovare delle strategie per articolare questa diversità di rappresentazione”.
Si ribadisce quindi la pertinenza dei processi di sintesi alla composizione assistita dal
computer, la quale però pone problemi non indifferenti per articolare la rappresentazione
dell’oggetto sonoro.
Vaggione approccerà la questione con la definizione di “rete di oggetti numerici”. Più da
vicino, il compositore Marco Stroppa, ha lavorato per molti anni al problema e il risultato
del suo lavoro, oltre ad essere impresso nelle sue composizioni è implementato nella
libreria oMChroma per OpenMusic. Le questioni relative alle definizioni di strategie per
l’artcolazione di oggetti sonori nel dominio temporale microscopico non sono oggetto di
analisi nella presente dissertazione. E’necessario tuttavia ribadire che queste pongono
problemi non indifferenti per i sistemi di assistenza alla composizione; problemi diversi
da quelli che sono considerati in questa dissertazione (cfr.Cap.3 5) i quali fanno
esclusivamente riferimento al livello del sistema di notazione tradizionale. Storicamente,
a partire dalle esperienze di Iannis Xenakis, Herbert Brün e poi con compositori come
Agostino DiScipio si è sentita la necessità di progettare software ad hoc o ex novo, che
rispondessero a particolari esigenze tecnologiche ed estetiche che non era possibile
ritrovare nei programmi di aiuto per la composizione a disposizione.
63
La nozione di morfologia del suono è derivata dal V°libro del Traité des objets musicaux di Pierre Schaffer
del 1977 testo fondamentale per la definizione che egli diede di oggetto sonoro e di morfologia dell’oggetto
sonoro.
another, or to combine a melodic pattern with a foreign rhythmic pattern. These
represents computers aids in the composition of music.” (The historical CD of Digital
Sound Synthesis, Wergo Computer music currents 13)
Tra questi primi esempi sono da ricordare per esempio le esperienze di composizione di
James Tenney dal 1961 al 1964 (Tenney 1976).
“The parameters of the individual notes of the composition are generated as a sequence of
indipendent random numebers by a random number routine”.
Per orientare ai problemi di sintesi del suono, alle importanti questioni estetiche che
esso pone, indispensabili ma complementari al soggetto della presente dissertazione, si
introduce di seguito al linguaggio per la sintesi del suono Csound.
Csound è un potente software per l’analisi, la sintesi e l’elaborazione del suono in tempo
reale o differito attraverso cui è possibile implementare virtualmente ogni tecnica di
sintesi del suono.
Sviluppato da Barry Vercoe del MediaLabMIT, esso è direttamente derivato dalla
famiglia dei software MusicN, in particolare dalle versione Music4B e Music4BF
sviluppate a Princeton.
Di seguito l’evoluzione dei programmi di sintesi MusicN tratto da (Zattra 2003):
Bell Laboratories
(Max Mathews)
MUSIC1 (1957)
MUSIC2 (1958)
MUSIC3 (1960)
MUSIC4 (1962)
Stanford Princeton
MIT
MUSIC11 (1973, B.Vercoe)
Csound (1986, B.Vercoe)
Dall’algoritmo alla musica di sintesi - sintassi del linguaggio come estensione del
concetto di partitura
L’ORCHESTRA
Il file dell’orchestra si compone sempre di due parti: l’intestazione, nota come header del
file, in cui vengono definite: la frequenza di campionamento e di controllo con cui
vengono renderizzati gli strumenti successivamente definiti, e il numero di canali
necessari in uscita: mono, stereo o quadrifonico.
L’header del file fornisce le “quattro informazioni di base che tutti gli strumenti
dell’orchestra adotteranno” (Bianchini-Cipriani, 1998):
Sr=44100
Kr=4410
ksmps=10
nchnls=1
64
Recenti sviluppi di Csound, come CsoundAV permetto l’elaborazione e la sintesi di progetti audio, grafica
e video.
65
Si intende un comune file di testo TXT.
66
In sintesi: il compositore, mediante una particolare sintassi, determina in un file chiamato orchestra quali
strumenti, timbri, devono suonare la “partitura” definita nel file chiamato score.
Il passo successivo è la definizione degli strumenti (instruments)67.
Questa la sintassi:
instr 1
aorcs oscil 10000, 440,1
out aorcs
endin
67
Il termine instruments fa riferimento ad un algoritmo che costituisce un evento sonoro/musicale. Gli
instruments sono costituiti da unità piu piccole chiamate unit generators o UGs. Le unit generators o unità
generatrici sono basati su di algoritmi costruiti per uno specifico problema di DSP (digital signal processing),
come generare una forma d’onda o smussare l’ampiezza di un suono. Le UGs costituiscono così il tassello
fondamentale dei linguaggi per la computer music al fine di generare o processare un segnale.
68
Oltre a variabili audio a esistono anche altre variabili, come le variabili di controllo k calcolate alla
frequenza definita in kr; e le variabili di inizializzazione i.
69
“Le unità elementari (opcode) disponibili in Csound possono essere classificate in base alle loro funzioni e
precisamente: Unità generatrici (oscillatori, generatori di rumore, unità di ingresso da file audio, etc.) Unità
modificatrici (inviluppi, filtri, etc.) Unità di controllo e misura (inseguitori di inviluppo, rilevatori di ampiezza,
analizzatori di spettro etc.) Unità di ingresso e uscita” (Bianchini Cipriani 1998) E’ importante sottolineare
che ogni opcode possiede la propria sintassi.
70
Possiamo pensare ad un oscillatore come ad “una tabella o vettore cioè un insieme ordinato di valori,
accessibili con un indice.” (Cipriani Bianchini 1998)
71
Tabella di conversione da ampiezza assoluta a dB (Cipriani Bianchini 1998):
dB valore dB valore dB valore dB valore
90 31622.78 60 1000.00 30 31.62 0 1.000
88 25118.86 58 794.33 28 25.12
86 19952.62 56 630.96 26 19.95
84 15848.93 54 501.19 24 15.85
82 12589.25 52 398.11 22 12.59
80 10000.00 50 316.23 20 10.00
78 7943.28 48 251.19 18 7.94
76 6309.57 46 199.53 16 6.31
74 5011.87 44 158.49 14 5.01
72 3981.07 42 125.89 15 3.98
70 3162.28 40 100.00 10 3.16
68 2511.89 38 79.43 8 2.51
66 1995.26 36 63.10 6 2.00
Avviata la compilazione (supponendo già definita anche la score) l’opcode out ha il
compito di depositare il risultato nella variabile aorcs in modo da poterlo ascoltare.
Riassumendo, questo è il modo in cui si presenta il nostro file di orchestra:
sr =44100
kr=4410
ksmps=10
nchnls=1
instr 1
aorcs oscil 10000, 440,1
out aorcs
endin
LA PARTITURA
f1 0 4096 10 1
dove
i1 0 7
i1 9 7
avrebbe fatto cominciare la sintesi della sinusoide al nono secondo per poi durare altri
7”. Questo è utile nel caso volessimo sintetizzare piu sinusoidi che partano da differenti
punti nel tempo.
Prima di considerare l’utilizzo specifico per il musicista, riassumiamo l’algoritmo in
Csound per sintetizzare una sinusoide:
sr =44100
kr=4410
ksmps=10
nchnls=1
instr 1
aorcs oscil 10000, 440,1
out aorcs
endin
72
Gli argomenti della GEN10 definiscono sinusoidi in rapporto armonico. Se scrivessimo f1 0 4096 10 1 1 1
1 definiremmo quattro sinusoidi in rapporto armonico (prima seconda…quinta armonica) e con stessa
ampiezza. Se scrivessimo f1 0 4096 10 10 8 5 3 definiremmo sempre quattro sinusoidi in rapporto armonico
(prima seconda…quinta armonica) ma con ampiezza decrescente rispetto ad una fondamentale di ampiezza
massima 10.
;questa la nostra partitura, che prima di essere compilata, va nominata a piacere
;con l’estensione del file .sco, per esempio sinus.sco
f1 0 4096 10 1
i1 0 7
I file di testo ottenuti sono ora pronti per essere compilati da Csound il quale scriverà su
disco, o genererà in tempo reale73, una sinusoide di 440 Hz in mono della durata di 7”.
La dimensione temporale
Come accennato, un passo avanti potrebbe essere sia quello di sfasare temporalmente
la comparsa degli eventi sonori sia l’attribuzione, alla comparsa di ogni singolo evento, di
un differente timbro. Utilizzando questo esempio di partitura tratto da Il suono virtuale di
Bianchini e Cipriani, vedremo come sia possibile, utilizzando le caratteristiche timbriche
della GEN10, lavorare sul timbro e sul tempo:
f1 0 4096 10 10 9 8 7 6 5 4 3
;
;(con questa configurazione otteniamo una fondamentale+armoniche fino alla
;ottava con ordine decrescente d’ampiezza)
;
f1 3 4096 10 10 5 3.3 2.5 2 1.6 1.4 1.25 1.1 1
;
; (con questa configurazione delle ampiezze delle componenti armoniche ;otteniamo
un’onda a dente di sega approssimata)
;
f1 6 4096 10 10 0 3.3 0 2 0 1.4 0 1.1
;
; (con questa configurazione delle ampiezze delle componenti armoniche ;otteniamo
un’onda quadra approssimata)
;
f1 9 4096 10 1 ;(solo fondamentale, sinusoide)
f1 12 4096 10 0 1 ;(solo II arm.)
f1 15 4096 10 0 0 1 ;(soloIII arm.)
f1 18 4096 10 0 0 0 1 ;(soloIV arm.)
f1 21 4096 10 1 1 1 1 1 ;(fond.+II, III, IV armonica)
73
L’utente sceglie per la generazione in tempo reale o per la scrittura del file su disco.
f1 24 4096 10 10 0 0 0 0 0 1 ;(fond.+VII arm.)
f1 27 4096 10 0 0 0 0 0 0 1 ;(solo VII arm.)
i1 0 2
i1 3 2
i1 6 2
i1 9 2
i1 12 2
i1 15 2
i1 18 2
i1 21 2
i1 24 2
i1 27 2
74
Diverse sono le interpretazione per classificare le tecniche di sintesi. Si rimanda alla letteratura relativa.
75
E’possibile parlare di famiglie spettrali quando queste mantegno caratteristiche psicoasutiche tali da
risultare inalterate nel tempo.
numerose GEN routines le quali si incaricano di, sommare suoni sinusoidali, scrivere e
leggere porzioni di suoni campionati, generare segmenti di retta o curve ecc.
Ogni GEN possiede una propria sintassi definita da “f-statement”, il cui numero è
variabile, e può indicare differenti parametri; l’esempio successivo riporta nella seconda
riga una funzione precedentemente definita nell’esempio e nella prima riga gli “f-
statement” ad indicare tutto ciò che viene dopo f :
f p1 p2 p3 p4 p5 p6 p7 p8 p9
f 1 21 4096 10 1 1 1 1 1
Tutti gli statements successivi a p4 sono argomenti relativi alla GEN richiamata.77 Il
manuale di Csound definisce le relative sintassi.
E’ opportuno che il compositore consideri ogni singola tecnica di elaborazione o di
sintesi come una risorsa per la definizione di strategie dinamiche78 di composizione del
suono.
Con il seguente esempio analizziamo come si puo cambiare ampiezza e frequenza ad
ogni nota:
;ORCHESTRA
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
76
Le GEN rappresentano un modo efficiente per definire funzioni che possono, non appena richiamate,
essere necessarie a qualche unit generators per creare o modificare un suono.
77
Si è precedentemente visto come la sintassi della GEN10 richiami per esempio la composizione di uno
spettro armonico nella definizione delle singole ampiezze.
78
Per dinamica si intende la possibilità di variare nel tempo alcuni dei parametri del suono. Il modo
in cui varia è definito dal compositore secondo una strategia o tecnica di composizione.
instr 1
asuoni oscil p4,p5,1
out asuoni
endin
;SCORE
f1 0 4096 10 1
;p1 p2 p3 p4 p5
i1 0 2 20000 110 ;suona una nota a partire da 0 secondi, della durata di due
;secondi con ampiezza 20000 e freq. fondamentale 110 Hz
i1 3 2 8000 110 ;suona una nota a 3 secondi dall'inizio, con durata 2 sec.,
;ampiezza 8000 e freq. fondamentale 110 Hz
i1 6 2 9000 440
i1 9 2 15000 440
In questo esempio si nota: gli argomenti dell’opcode OSCIL non sono più definiti da
valori fissi bensi da variabili (p) relative agli argomenti richiesti dalla sintassi di OSCIL.
Per cui p4 diverrà la variabile relativa all’ampiezza, i cui valori sono definiti nel quarto p-
field delle note specificate nella score.
p5 diverrà la variabile relativa alla frequenza, i cui valori sono definiti nel quinto p-field
della specifica delle note nella score.
Così, nella score, si nota che ai primi parametri obbligatori p1 p2 p3 sono stati aggiunti i
p-fields p4 p5 relativi agli argomenti ampiezza e frequenza dell’opcode OSCIL ma
definiti parametricamente da valori d’ampiezza.
In questo caso si è deciso di far variare l’ampiezza e la frequenza di un’unica forma
d’onda, la sinusoide.
In questo esempio si introdurrà un secondo strumento in modo da cominciare a
differenziare le possibilità di generare timbri differenti.
;2strum.orc
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
instr 1
aprimo oscil p4,p5,1
out aprimo
endin
instr 2
aquadra oscil p4,p5,2
out aquadra
endin
;2strum.sco
f1 0 4096 10 1 ; funzione 1 per sinusoide, strumento 1
f2 0 4096 10 1 0 .33 0 .2 0 .14 0 .11 0 .09 ; funzione 2 per onda quadra,strumento 2
79
La partitura originale è pubblicata dalla Stockhausen-Verlag. La registrazione disponibile su CD N°3 della
Stockhausen Complete Edition della stessa casa editrice. Si segnala una versione dello studio in tempo
reale programmato nell’ambiente MAX/msp da Georg Hajdu. Il patch dello studio è disponibile all’interno
dell’ambiente di programmazione MAX/msp.
Nel sistema superiore delle ordinate sono rappresentate sia le frequenze (da 100 a
17200 Hz) sia le ampiezze (da –40 a 0 dB). L’ ascissa rappresenta il tempo.
Stockhausen rappresenta l’evoluzione di questi parametri con figure geometriche
semplici le quali “occupano” verticalmente gli spazi relativi a frequenze e ampiezze e
orizzontalmente gli spazi relativi al tempo. Quello che interessa notare è la figurazione
dinamica delle ampiezze. Esse sono rappresentate mediante “inviluppi”, cioè, in questo
caso, segmenti di retta80 la cui direzionalità nello spazio cartesiano implica una
modulazione dell’ampiezza. Piu volte definiti nel corso della storia musicale informatico-
elettronica81, gli inviluppi possono descrivere l’andamento nel tempo di qualsiasi
parametro sonoro, di sintesi o di elaborazione.
Torniamo a Csound e alla possibilità di definire inviluppi per la frequenza, dei glissandi, e
inviluppi d’ampiezza.
Per descrivere un inviluppo in Csound ci si avvale delle variabili di controllo. Ricordiamo
come nell’header del file sono state definite le frequenze di campionamento audio sr
(sample rate) e di controllo kr (control rate). La frequenza di campionamento per
descrivere l’evoluzione di una retta, di segmenti di retta o spline, non ha bisogno della
80
L’inviluppo può non essere una linea di rette ma anche di curve.
81
Anche come Tendency mask, maschere di tendenza con cui definire “percorsi” entro parametri particolari
di una tecnica di sintesi o di elaborazione sonora; cfr.(Bianchini e Cipriani 1998) a proposito dell’uso di
maschere tendenziali per il controllo dei processi di sintesi granulare del suono.
stessa frequenza di campionamento dell’audio, la quale per sua natura deve essere
nettamente superiore.
Le variabili di controllo sono definite nell’orchestra da una k e nome della variabile, per
esempio kglis. Come per le variabili audio anche quelle di controllo possono disporre di
codici operativi (opcode). Differenti opcode, quando riferiti a variabili di controllo,
generano differenti traiettorie: per esempio l’opcode line genera un segmento di retta,
l’opcode linseg genera più segmenti di retta, l’opcode expon genera segmenti di
esponenziale.
In questo esempio tratto da Bianchini Cipriani vediamo come è possibile creare dei
glissandi e poi degli inviluppi d’ampiezza.
ORCHESTRA
;gliss.orc
sr = 44100 ; (frequenza di campionamento)
kr = 4410 ; (frequenza di controllo)
ksmps = 10 ; (rapporto sr/kr)
nchnls = 1 ; (numero di canali 1)
instr 1 ; (strumento 1)
kglis line 220,p3,440 ;codice operativo, line, segmento che va da 220 a 440
;nel tempo p3 (durata della nota). I risultati affluiscono
;nella variabile di controllo kglis
a1 oscil p4,kglis,1 ; opcode oscil, ampiezza p4, frequenza espressa dai dati
; di kglis, funzione 1 (che troveremo nella score). I risultati
;affluiscono nella variabile audio a1
SCORE
;gliss.sco
;Intsr1
out a2
endin
Con questi esempi del tutto introduttivi, si è voluto evidenziare come la particolarità della
sintassi di un linguaggio di programmazione può essere reinterpretata nel dominio di un
processo di composizione. La poietica, le strategie di produzione del materiale
compositivo, sono tutte da ricercarsi nelle scelte che guidano il compositore nella
“migliore” formulazione dell’algoritmo. Detto altrimenti, la competenza musicale del
compositore, che si esprime tradizionalmente anche attraverso la padronanza di una
grammatica della scrittura, nel contesto della composizione musicale informatica implica
una ulteriore competenza che riguarda la conoscenza della sintassi dei linguaggi di
programmazione.
E’utile notare come, da un punto di vista storico, le nozioni di Csound fin qui fornite siano
utili ai fini musicali solo per simulare al computer alcune delle composizioni musicali
elettroniche degli anni ’50 come lo Studie II di Stockhausen o The Siliver Scale di
Mathews. La genesi della forma qui coincide con con quello che fu recepito storicamente
come il minimo gesto necessario alla produzione di opere musicali: la varietà nella
dinamica dei timbri.
“The first one (“Monody, Two-Part, and Four Part Writing) programmed 16
different rules in three categories: what is allowable, what is forbidden,
and what is required. These included the rules for simple polyphony.
Within this rule-based structure, individual musical events were
determined by chance procedurese. The results were simple cantus
firmus melodies of varying lenghts.
The second experiment (“Four-Part First Species Counterpoint”) extended
the insight of the first to generate different musical styles.
The third (“Experimental Music”) was programmed with serial structures
and techniques.
The method of the fourth experiment (“Markov Chain Music”) influenced
later works that used computer-aided score synthesis. Hiller and Isaacson
worked here not with rules of composition, but with sequences of
dependent random parameters.” (Supper 2001)
82
Questo era l’algoritmo con cui Hiller stava lavorando per le sue ricerche di chimica con il calcolatore
ILLIAC: in particolare l’utilizzo dell’algoritmo riguardava il calcolo di “conformazioni di polimeri, la cui
simulazione è di grande importanza per la predizione delle proprietà fisiche e per una più approfondita
conoscenza delle relazioni di tali proprietà con la struttura molecolare dei polimeri”. (abstract dell’intervento
di Carl Wamser presso l’Università di Portland Dipartimento di Chimica in occasione della celebrazione della
figura di Hiller: “Lejaren A.Hiller, Jr.(1924-94): computers, chemistry, and music”).
Hilliac sono le regole83, che determinano la validità o meno nell’uso del materiale
musicale. Le regole nella composizione di Hiller sono implementate con la tecnica
probabilistica stocastica, detta delle catene di Markov, dal nome del matematico Andre
Andreevich Markov (1856-1922). Con tale tecnica si indica la probabilità della comparsa
di un particolare parametro musicale (un’altezza per esempio) determinata da quello
immediatamente precedente ad esso.
Si direbbe che l’intervento umano nell’esperienza di Hiller sia pressoché nullo. In questo
consite anche la radicalità della sua esperienza estetica.84
L’esperienza di Hiller, al di là del suo aspetto qualitativo, rimane fondamentale in quanto
segna l’inizio di un’assidua frequentazione del metodo scientifico-cibernetico da parte
dei compositori di musica.
83
Proprio il concetto di regola ad essere una delle caratterisitiche tipiche della modalità dell’assistenza.
Essa infatti è direttamente connessa all’idea di sistema basato su regole (rule-based system) tipiche
dell’Intelligenza Artificiale Simbolica. (cfr.§ 1.4.4)
84
Un’esperienza non estranea alla tradizione musicale: “Là ove il Suono si lanifesta senza i segni dell’uomo,
il Segno non reca suoni umani” (Donatoni 1982). Nei vari modi in cui questo tipo di esperienza si può
manifestare si ricorda che Hiller fu poi chiamato alla collaborazione, non a caso, da John Cage, cioè colui il
quale aveva intriso di misticismo Zen la natura dei processi automatici.
85
“Barbaud opera presso la compagnia Bull General Electric a Parigi dove elabora la prima musica
realizzata in Europa su un calcolatore, che porta il titolo 7!” (Galante Sani 2000).
Si accenna alla composizione del 1956 di Xenakis, Pithoprakta, per quarantasei
strumenti ad arco e un trombone, in cui il comportamento di ciascuna nota è assimilato
al movimento di una molecola di un gas sottoposta a una data temperatura e pressione:
una sorta di sonificazione della teoria cinetica dei gas di Maxwell-Boltzmann. Nel 1962
Xenakis convince i dirigenti francesi di IBM all’utilizzo del calcolatore IBM 7090 con cui
egli realizzerà le sue composizioni stocastiche della serie ST. In particolare si ricorda
ST/10-1,080262 per 10 strumenti.
“Grazie al computer, ovvero tramite i programmi per computer, la materia musicale rivela
aspetti che sembravano impenetrabili, tanto nelle sue forme sonore quanto in quelle
linguistiche; per tale ragione non deve stupire se oggi, proprio con l’aiuto del computer,
un numero sempre maggiore di compositori decide di mettere alla prova i propri sistemi
di disciplina, il potenziale di regole statistiche, l’analisi matematica della musica, in
breve, il proprio spirito d’avventura”. Così Gottfried Michael Koenig si esprimeva in un
saggio del 1967, “Sull’uso del computer in musica” (Koenig 1995). Nato nel 1926 Koenig
ha lavorato a fianco dei protagonisti dell’avanguardia musicale che frequentarono lo
studio della Westdeutscher Rundfunk (WDR) di Colonia, studio presso il quale egli
lavorava. Koenig ha lavorato con Stockhausen, Evangelisti, Kagel e Pousseur; con
questi ha condiviso utopie e speculazioni teoriche, ma ha anche contribuito alla
realizzazione di importanti capolavori elettroacustici come Kontakte di Stockhausen.
Koenig era mosso da una passione per la ricerca musicale che ben presto lo avvicinò
alla nascente computer music. Egli realizzo importanti programmi come PROJECT1 e
PROJECT2 con cui realizzò numerose composizioni strumentali. “Per composizione con
il computer intendo la formulazione di insiemi di regole effettuate mediante il computer,
definendo strutture musicali prive di un’esplicita forma di presentazione acustica”.
(ibidem.) A Koenig interessa lavorare sul processo, cioè mediante la definizione di un
metodo sperimentale “per mettere alla prova la strategia catturata dal programma”.
E’possibile sostenere che, con le prime esperienze di Koenig e Xenakis, la
composizione al computer si impone a livello teorico e pratico come essenziale
momento di sintesi delle esperienze novecentesche sull’artificiale e di svelamento dei
complessi modelli teorici soggiacenti alle nuove teorie della musica.
1.4.5 L’Italia musicale verso l’informatica: Pietro Grossi e la nascita del Centro di
Sonologia Computazionale di Padova
Nel panorama musicale italiano degli anni 60, caratterizzato dalle esperienze
avanguardiste dello Studio di Fonologia della Rai di Milano, si fanno strada “tre cavalieri
solitari della musica elettronica”86: Pietro Grossi87, Enore Zaffiri e Teresa Rampazzi.
86
Commento di Grossi riportato in www.luxflux.org/n3/partiture1.htm
87
www.pietrogrossi.org
Grossi a Firenze con lo studio S 2F M, Zaffiri a Torino con lo SMET88, Rampazzi a
Padova con il gruppo NPS, furono tutti promotori indipendenti di percorsi di ricerca
musicale sperimentale “alternativi” a quelli operanti a Fonologia a Milano.
In questa dissertazione, per il loro particolare contributo dato alla computer music in
Italia, ci occuperemo solo di Pietro Grossi e dei “componenti” del gruppo di
sperimentazione che operavano in origine con Teresa Rampazzi, cioè Giovanni De Poli
e Alvise Vidolin, tra i fondatori del Centro di Sonologia Computazionale di Padova.
Pietro Grossi
88
Sulla storia di questi due studi si veda il saggio “Scuole storiche italiane di musica elettronica” di
Francesco Giomi in Musica e tecnologia domani, Lim editrice 2002
89
fonti dal sito cfr. nota 96
Grossi di utilizzare “un programma per codificare all’interno della macchina testi di
musica tradizionale; il computer è in grado poi di suonarle attraverso un generatore di
onda quandra. Il primo brano trascritto è il quinto Capriccio per violino di Paganini, brano
che viene inciso dalla Olivetti in un disco a 45 giri”.
La semplicità con cui l’alterità tecnologica può provocare delle emozioni è comune nella
cultura informatica; una cultura nella quale sono cresciuti i discepoli dell’ “hands-on
imperative, l’imperativo di metterci le mani sopra”, nata all’incirca una decina di anni
prima degli avvenimenti di cui stiamo parlando negli Stati Uniti, all’interno delle aule
dell’MIT90. Pietro Grossi, probabilmente, è stato tra i primi in Italia a farsi interprete di
questo “sentimento di meraviglia estetica” di fronte ad un computer.
La seguente, è una sua dichiarazione in seguito alla prima di quelle esperienze: “Il
secondo giorno più importante della mia vita è stato quando ho fatto la mia prima
esperienza al computer. Lei pensi a cosa possa voler dire per un artigiano della musica
come me. Un bel giorno, inserito questo pacco di schede nel computer, il computer ha
suonato subito alla perfezione il testo che gli ho dato. Cioè, sulla base delle mie
indicazioni, e non c’erano errori. Questo per me era un salto, un salto incredibile. E’
stata un’emozione straordinaria. E per me è stato uno choc; si aprivano nuovi orizzonti,
potevamo fare quello che volevamo, naturalmente non era vero, nel senso che i limiti
erano parecchi, era il suono più brutto del mondo, ma per me era il più bello del secolo”.
In seguito le esperienze di Grossi al computer riguardano sempre più da vicino le
possibilità esplorative, per tramite di algoritmi random, di strutture musicali predefinite e
codificate dalla tradizione musicale occidentale o generate in automatico.
Per effettuare i suoi esperimenti, Grossi trova ospitalità presso il centro di calcolo
CNUCE del C.N.R. dell’Università di Pisa (dove fu istituita la Divisione Musicologica)
solo a partire dal 1969, progettandovi alcuni dei primi sistemi interattivi per la computer
music in Italia. Il primo di questi, il DCMP, basato su di un IBM 360/67, produce suono a
partire “da il prelievo di un bit da un registro specifico della macchina, in modo da
realizzare un’onda quadra monofonica senza controllo dinamico.91 Dal punto di vista
algoritmico egli incluse nel software due programmi specifici chiamati Algor e Create, in
90
Le coincidenze tra quanto accadde all’MIT verso la fine degli anni 50 e le prime esperienze di Grossi di
trascrizione musicale, paiono straordinarie. Non si trattava cioè di sintetizzare un suono (come
nell’esperienza di Mathews per cui era necessario talvolta aspettare ore se non giorni prima di poter
ascoltare un suono), ma sfruttare già un suono che la macchina “naturalmente” produceva per guidarlo
verso la musica. Un’esperienza radicale e radicalmente differente dagli scopi puramente estetici delle
avanguardie. Narra Steven Levy, nel suo testo “Hackers, gli eroi della rivoluzione informatica”, che tra un
gruppo di studenti, allievi del professore John McCarthy (cfr.§ 2.1.2), l’attività di hackeraggio di un computer
prevedeva anche farlo suonare secondo le stesse modalità impiegate da Grossi. Dapprima monofonico su
di un computer Tx-0, successivamente, nel 1961, anche a tre voci su di un PDP-1. L’autore del programma
si chiama Peter Samson, tra i protagonisti della “rivoluzione” narrata da Levy.
91
Come avveniva secondo quanto riportato in Levy (cfr.nota precedente)
modo da controllare il sistema DCMP; questi programmi, utilizzati secondo differenti
modalità, permettevano la creazione in tempo reale di strutture musicali aleatorie la cui
generazione era programmata dagli algoritmi stessi che provvedevano alla generazione
pseudo random secondo il metodo di Lehmer. Questi erano accessibili da un’interfaccia
con cui l’utente poteva controllare una serie di 23 parametri del suono come la durata
globale, il range delle altezze, le percentuali di silenzio e così via…” (Giomi 1996)
La generazione di musica automatica avveniva anche per traduzione sonora di
particolari proporzioni numeriche o nozioni matematiche come la sonificazione diretta
della curva matematica di Peano (ibidem).
In questi esperimenti era evidente il carattere radicale dell’esperienza estetica di Pietro
Grossi. Un’esperienza che non aveva interesse nella produzione di un timbro
particolare, ma che si concentrava sull’aspetto procedurale, algoritmico e speculativo del
metodo di produzione, per poi lasciarsi ogni volta stupire dal risultato acustico. In questo,
la produzione musicale di Pietro Grossi è agli antipodi rispetto quanto avveniva per il
programma di sintesi sonora di Mathews il quale faceva della composizione timbrica
della nota, uno dei suoi aspetti più importanti.
L’esperienza di Grossi appare simile alle coeve esperienze di Cage, di Iannis Xenakis e
di Herbert Brün. Con Cage, Grossi condivide la meraviglia del possibile, il gioco e il
senso ironico, libero dai vincoli di un artigianato e guidato da un attitudine che porterà lo
stesso Grossi a diventare un pioniere anche in altri campi della produzione musica in
Italia: la libera condivisione degli strumenti di produzione, sia strumentale elettronico
(l’accesso dei corsi in conservatorio era aperto a tutti coloro che erano interessati), sia
del materiale prodotto e composto (libera condivisione delle composizioni spesso
anonime e non firmate pronte per essere riutilizzate in ogni occasione); tra l’altro Grossi
fu tra i primi a ideare quelle che oggi sono chiamate installazioni sonore.92
Con Xenakis e Brün, Grossi condivide qualcosa di più di una semplice esperienza
estetica; ne condivide anche uno degli aspetti più controversi, forse “politico” come
sostengono Brün e Mayr, che contrapponevano allora in Italia, almeno fino alla metà
degli anni 60, la musica elettroacustica di Fonologia di Milano alla radicalità delle
proposte estetiche di queste esperienze93.
“It is one thing to aim for a particular timbre of sound and then to search for the means of
making such sound and timbre audible. It is another thing to provide for a series of
events to happen and then to discover the timbre or the sounds so generated. In the first
case one prefers those events to happen that one wishes to hear; in the second case
one prefers to hear those events one wishes would happen. These are not only two
92
Per la mostra di architettura “La casa abitata” a Palazzo Strozzi nel 1965.
93
Significativa l’assenza di tutte le esperienze qui considerate dal già citato testo sulla musica elettronica di
Pousseur-Berio.
different approaches to the composition of music but also two different political
attitudes”. (Brün 1969)
La musicologia cognitiva (Laske 1988) si sviluppa nel corso degli anni 70 come ambito
interdisciplinare96 finalizzato allo studio della musical knowledge.
D’impulso alla nascita della musicologia cognitiva furono i metodi di ricerca scientifici
sviluppati nell’ambito dell’Intelligenza Artificiale (IA) (Roads 1980)
La definizione della disciplina fornita da Laske (tra i primi e più importanti teorici
dell’informatica musicale) distingue una musicologia teoretica da una applicata. La prima
94
Sulla storia del CSC di Padova si veda (Zattra 2000).
95
Il testo della convenzione è riportato alla nota 145 della dissertazione di laurea di (Zattra 2000).
96
Antropologia, intelligenza artificiale, psicologia cognitiva, linguistica, musicologia, neuroscienze,
psicoacustica e semiotica.
consiste nella formulazioni di ipotesi che riguardano alcune delle nozioni cardine della
musicologia cognitiva cioè “task environment (knowledge about one’s tools and
materials) competence (declarative knowledge about the domain) and performace
(procedural knowledge regarding the use of knowledge under factual constraints)”.
(Laske 1988).
La finalità della musicologia cognitiva applicata è la verifica e la formulazione di nuove
ipotesi teoriche mediante l’utilizzo del computer.
“…is driven by attempts to build computer system serving as intelligent assistants to
musicians of all kinds, and directly or indirectly disproving hypothesis formulated in
theoretical musicology. Moreover, applied musicology gives rise to hypothesis never
before envisioned”. (ibidem) Cioè i programmi per computer in siffatta musicologia
hanno due funzioni ben definite “they serve to substantiate hypotheses regarding
musical knowledge, and second, they are the medium for designing structured task
environments” (ibidem)
In questo ambito si sono sviluppati numerosi rami della ricerca tra cui quelle di David
Cope sulla generazione automatica di stili musicali o quella sulle ‘grammatiche musicali,
(Baroni Callegari 1984, e Baroni Jacoboni Dalmonte 1999) di stampo anche psicologico-
cognitivista (Lerdahl Jackendoff 1983). Influenzato dalle teorie computazionali anche
Allen Forte con la sua set-theory (Allen Forte 1973).
Molte di queste teorie nascono con finalità esclusivamente musicologiche e analitiche
ma è possibile riscontrare un fecondo e reciproco interesse da parte della musicologia
alla composizione e viceversa. (cfr.§ 1.3.2.1 sul concetto di modello)
In particolare è proprio l’approccio di Otto Laske tra i primi a definire sistematicamente la
nozione di una teoria della composizione (Composition Theory) come disciplina della
musicologia cognitiva/computazionale97. Per Laske una teoria della composizione,
intesa come un’attività che riguarda la creazione musicale, deve essere riconosciuta
innanzitutto come metodo per la conoscenza del modo in cui noi percepiamo (cfr§
1.3.1.1 nota 33). Questo implica per Laske:
97
cfr. Interface-Journal of New Music Research tutto il volume 20 n°3-4 1991 è dedicato alla Composition
Theory.
senso la Composition Theory di Laske si inserisce a pieno titolo come settore privilegiato
dei rapporti tra l’IA e la musica “because the attempt is made to take composers
seriously scientifically, as experts of their task domain, which is design”.
La Composition Theory rappresenta uno dei primi passi verso la definizione di una teoria
della composizione che assimili le caratteristiche proprie della tecnologia informatica e
dell’IA. Essa rappresenta un modello teorico importante perché indaga la composizione
dal punto di vista prima di tutto del compositore, non dello scienziato di IA: “From a point
of view of AI, the question to be addressed, according to Smoliar, is the following: ”How
can one build an artificial agent that reasons about the task of composition”. I submit that
this question is different from my leading question which asks ‘How can one build an
artificial agent to compose music’…more appropriate…’How can we fashion an allo-
referential (explanatory) replica of the process of self-activation provoked by ideas
(within the context of a certain culture)”.
Per comprendere meglio le istanze della Composition Theory e di tutti i modelli teorici
che desiderino studiare la composizione (composizione assistita compresa) come parte
integrante della musicologia computazionale è necessario introdurre gli aspetti
paradigmatici di quest’ultima.
Così come le scienze naturali contribuirono allo sviluppo della prima Musikwissenschaft
(Serravezza 1996) all’origine della musicologia computazionale (o cognitiva) vi è la
storia dell’Intelligenza Artificiale (IA).
L’IA è conosciuta per essere lo studio scientifico del comportamento intelligente e della
sua simulazione per mezzo di macchine. Il termine Intelligenza Artificiale fu coniato da
John McCarthy e Marvin Minsky nel 1956. A partire dalla sua nascita la disciplina ha
subito identificato le macchine con i calcolatori digitali.
L’IA è nata all’insegna di un duplice profilo: da un lato quello di disciplina ingegneristica
“il cui obbiettivo è di costruire macchine in grado di assistere l’uomo…in compiti
soprattutto intellettuali”, dall’altro quello di “disciplina psicologica il cui obbiettivo è di
costruire macchine le quali, riproducendo da vicino le caratteristiche essenziali
dell’attività cognitiva umana, gettino una nuova luce su alcuni tradizionali enigmi della
mente”.
(CordeschiTamburrinicfr. w3.uniroma1.it/cordeschi/PDF/IA%20Cap1%20Carocci.pdf)
All’epoca in cui nacque l’IA, i calcolatori si erano da poco affermati come macchine ideali
per l’elaborazione numerica, il calcolo. Gli stessi calcolatori digitali furono ideati a partire
da modelli logico-matematici della teoria della calcolabilità, “le cui basi vennero gettate
nell’arco del quinquennio che va dal 1931 al 1936, cioè ben prima che i moderni
calcolatori digitali venissero effettivamente costruiti.” (cfr.Cap.2 § 2.1.2.1) Sulla base di
questi modelli, quindi degli artefatti meccanici che di questi modelli sono
l’implementazione, si cominciò ad avanzare ipotesi riguardo l’emergenza di alcuni
“comportamenti” delle macchine attribuendo a questi proprietà che vennero ritenute
intelligenti.
Innanzitutto fu necessario fornirsi di interpreti in grado di “comunicare” con questi modelli
matematici astratti e poter fornire all’utente/programmatore la possibilità di
rappresentare una possibile forma del pensiero. Furono ben presto progettati due
linguaggi artificiali grazie a cui fu possibile descrivere non solo operazioni numeriche,
ma anche la possibilità di applicare queste ultime ai simboli98. A partire dalla fine degli
anni 50 nacquero LISP e PROLOG i linguaggi attraverso cui divenne possibile la
rappresentazione simbolica.
Con i primi programmi di IA si cercò di simulare alcuni dei comportamenti umani
intelligenti come quello, celebre, di determinare una strategia ottimale in una partita a
scacchi. Tra questi primi esperimenti si ricorda “quello di scegliere, davanti a un
problema che dà luogo all’esplosione combinatorie di mosse lecite, solo alcune
sequenze di mosse che potrebbero portare alla soluzione.” Si arrivò ad identificare
l’intelligenza con la capacità tipicamente umana di poter scegliere. In questa veste l’IA
riguardava anche la psicologia cognitiva la quale era interessata “alla simulazione di
processi cognitivi in modo psicologicamente realistico.”
Ispirati dal comportamento cognitivo umano, tra i ricercatori della disciplina “si alimentò
la convinzione che compito principale dell’IA fosse lo studio delle strategie di soluzione
di problemi efficacemente selettive, o ‘euristiche’.” Tornando alla relazione dell’IA con la
musicologia computazionale, gli algoritmi euristici fornirono presto un modello
considerato come ideale per la progettazione di sistemi basati sulla rappresentazione e
elaborazione della conoscenza (Knowledge Representation99) a cui ci si riferisce,
generalmente, come “IA simbolica”.
“Symbolic AI is based on the principle of using a computational model which explicitly
represents aspects of the problem being solved. In other words, the program has a given
vocabulary of symbols, which are used to represent objects and/or concepts; it may
have a model of the world in which it operates…In this context, the programmer knows
what her chosen symbols mean in relation to the world in which the program is
supposed to operate. So she can take her vocabulary of symbols, and say, in its term,
how the program achives results.” (Wiggins Smaill “Musical Knowledge: what can
Artificial Intelligence bring to the musician?” documento del Dipartimento di Intelligenza
Artificiale dell’Università di Edinburgo)
98
In sostanza ciò permette di distinguere un computer da una calcolatrice.
99
Si ricorda a questo punto che l’equipe di ricerca dell’IRCAM che ha sviluppato OpenMusic prende il nome
di Representation Musicales.
In antitesi alla IA simbolica sono stati sviluppati altri modelli per la simulazione di
capacità cognitive tra cui ricordiamo quelli riconducibili all’altro grande settore dell’IA,
conosciuto come IA subsimbolica. Di questo settore fanno parte i modelli connessionisti
come le reti neuronali. Contrariamente al metodo definito precedentemente i modelli
connessionisti sono basati su una rete costituita “da centinaia (o anche migliaia) di
elementi indipendenti (detti ’neuroni’). Ognuno di questi ‘neuroni’ riceve dagli altri un
certo numero di segnali in ingresso (il numero e l’intensità di tali segnali dipendono dalle
interconnessioni effettivamente presenti), ne fa la somma algebrica e, a seconda del
risultato, può entrare in uno stato eccitato, inviando a sua volta impulsi verso elementi a
cui è connesso.” (Zanarini 1995) Solitamente questi sistemi sono programmati “per il
riconoscimento di forme, di immagini, di messaggi parlati”. (ibidem)
In conclusione: la composizione assistita può essere definita come trait d’union di settori
fortemente interdisciplinari (composizione musicale, informatica musicale e musicologia
computazionale), in cui la simulazione e la formulazione di procedimenti, strategie,
regole per l’analisi e la composizione musicale, trovano un adeguato supporto formale e
computazionale.
A questo proposito si è notato come l’ambiente per la composizione assistita OpenMusic
possa comunicare con software per la sintesi del suono come Csound. Inoltre può
“comunicare” con altri sofware IRCAM come Diphone, Modalys e Audiosculpt per
l’elaborazione sonora. Attuale tendenza della ricerca nello sviluppo di software per la
composizione assistita come PWGL è la integrazione in un unico ambiente di ciò che
era oggetto di produzione di diversi programmi100.
Per limitare la complessità degli argomenti, con l’analisi dell’ambiente di
programmazione OpenMusic (d’ora in avanti OM), in questa dissertazione verranno
analizzati solo algoritmi per la generazione e l’elaborazione di partiture visualizzabili
mediante il sistema di notazione musicale tradizionale. Verranno cioè analizzate le
modalità dell’assistenza e la loro applicazione al livello di rappresentazione del sistema
di notazione musicale.
In questa senso ha origine la genesi di un nuovo artigianato compositivo che è il risultato
dell’incontro tra l’insieme delle conoscenze e delle strategie della composizione
musicale con i paradigmi tecno-scientifici dell’informatica.
Oggi la composizione musicale assistita rappresenta l’ambito disciplinare più attento alle
esigenze del compositore, e si concretizza nella possibilità di uno studio comparato tra
metodo della scienza normale e necessità umanistiche.
100
Verso gli Ambienti Esecutivi secondo la definizione di Alvise Vidolin o Sistemi Assistiti secondo la
definizione di (Baboni Schilingi 2005).
CAPITOLO 2 I FONDAMENTI DI OPEN MUSIC
1
La notazione musicale in OM è basata su Common Music Notation, software di pubblico dominio
sviluppato al CCRMA di Stanford.
2
Considerazioni estetiche sul concetto di interazione, algoritmo come partitura e composizione tout
court verranno proposte nel capitolo 4.
3
cfr.capitolo 1 § 1.1.1
4
Come dice lo stesso progettista (Agon 1998) il problema è “risolto” nel senso che sono proposte idee
per una soluzione modulare, aperta. Ciò non impedisce che la composizione musicale in quanto
fenomeno complesso resti un “problema complesso” .
5
Della programmazione per vincoli si farà solo un breve cenno nel Capitolo 5 § 5.5
Il presente capitolo descrive brevemente la tecnologia di OM così come definita dai
relativi paradigmi di programmazione utilizzati. Di questi paradigmi saranno
evidenziati le caratteristiche di base e quelle che hanno direttamente (e
reciprocamente) influenzato lo sviluppo di alcuni modelli teorici.
Per comprendere quali siano i criteri generali che hanno guidato la progettazione6 di
OM, è necessaria una definizione più precisa del software che espliciti i paradigmi di
programmazione utilizzati.
A tale scopo si analizza la seguente definizione di OM:
6
E’necessario ribadire la distinzione tra l’utente programmatore/compositore e il progettista del
sistema, il solo responsabile dell’architettura del software.
7
“Dal punto di vista teorico, un elaboratore di informazione è un manipolatore di segni…L’architettura
fisica di ogni elaboratore moderno è intrinsicamente capace di trattare vari domini di dati, detti tipi
primitivi. Tra questi vi sono sempre i valori logici, i caratteri e i numeri interi e reali e molti
altri…E’necessario organizzare i dati in strutture articolate e complesse, che possano costituire un
appropriato modello del mondo reale e colmare la distanza (gap semantico) tra le categorie di
informazione di uno specifico dominio applicativo e le categorie di dati che l’elaboratore è in grado di
comprendere direttamente.” Antonio Natali (a.a. 1999-2000) Linguaggi e traduttori, dispense a cura del
docente www-natali.deis.unibo.it
stesso tempo, non deve sottovalutare le possibili limitazioni all’espressione creativa
del compositore. In questo senso, OM si distingue dai programmi di composizione
algoritmica in quanto la sua progettazione non tende alla proposizione a priori di
modelli generativi o di elaborazione delle strutture musicali. In OM le possibilità
offerte dalla musica algoritmica sono formalizzabili così come ogni altra regola
compositiva. Perciò le potenzialità espressive della musica algoritmica non
definiscono per sé la natura del software OM il quale è invece strutturato
8
Disponibile anche ONLINE sul sito http://recherche.ircam.fr/equipes/repmus/OpenMusic/
9
Concetti vanno qui intesi nel senso di ontologie (Sergei Nirenburg e Viktor Raskin, Ontological
Semantics draft copy). Il termine ontologia è derivato dal pensiero metafisico ma definisce, in
(Nirenburg Raskin), il limite computazionale a cui tende una descrizione logico-formale. “…in its most
prevalent use in AI (artificial intelligence), an ontology refers to an engineering artifact, constituted by a
specific vocabulary used to describe a certain reality, plus a set of explicit assumptions. It has usually
the form of a first-order logical theory, where vocabulary words appear as unary or binary predicate
names, respectively called concepts and relations…” Il limite ontologico dei linguaggi di
1- funzionale, le cui fondamenta sono definite dal linguaggio Lisp
2- orientato agli oggetti (abbreviato: OOP object oriented programming)
Si può dire che CLOS, facendo proprio il paradigma orientato agli oggetti, rende
possibile una descrizione completa del paradigma funzionale. Il paradigma
funzionale diventa cioè un sottoinisieme di ciò che possibile descrivere attraverso il
paradigma OOP.
Il paragrafo 2.1.3.2 su CLOS illustra brevemente come OM sia stato implementato
utilizzando il protocollo di metaprogrammazione.
programmazione utilizzati per progettare OM definisce il limite stesso del sistema OM come “interprete”
formale del pensiero compositivo.
10
Un metaprogramma è un programma che opera su altri programmi. Attraverso la
metaprogrammazione è possibile definire, nel linguaggio stesso, strumenti di supporto allo sviluppo ed
estensioni del linguaggio (come OM).
2.1.2 Lisp11
11
Il presente paragrafo ha solo funzione introduttiva, per la descrizione completa del Lisp si rimanda
alle indicazioni bibliografiche.
12
Il lavoro originale di John McCarthy (biografie e documenti online www-formal.stanford.edu/jmc) sul
Lisp è disponibile online alla pagina www-formal.stanford.edu/jmc/recursive.html.
13
Per dialetti di un linguaggio di programmazione si intendono modifiche generalemente non
sostanziali del linguaggio ma necessarie per particolari implementazioni e/o tecnologie hardware.
14
ANSI è l’acronimo di American national standard institute.
Lisp in origine fu la risposta computazionale alla soluzione di problemi logico
matematici come la dimostrazione di teoremi:
15
Nei linguaggi imperativi il meccanismo di calcolo è basato essenzialmente sulla modifica dello stato
del sistema, rappresentato da una memoria. Il programmatore per mezzo del calcolo modifica
continuamente i contenuti della memoria attraverso una delle operazioni fondamentali dei linguaggi
imperativi, cioè l’assegnazione. In questo caso si passa da una configurazione all’altra fino a quando il
calcolo non giunge a conclusione. In un linguaggio funzionale l’utente non ha il compito di gestire il
contenuto della memoria il quale è gestito autonomamente dall’interprete.” (Ausiello 2002)
Concetti che rappresentano la genesi stessa della definizione di algoritmo
computazionale di cui rimaranno il modello paradigmatico fino alla svolta della
programmazione orientata agli oggetti verso la fine degli anni 50.
Ricorsione e -calcolo
A partire dal XIX° secolo il concetto matematico con cui si tentò di definire le
funzioni per composizione di funzioni più semplici era noto come funzione ricorsiva.
L’idea di calcolo è un concetto più difficile da esprimere. Dagli anni 30 del
Novecento furono numerosi i tentativi per definire il concetto di calcolo, altrimenti
detto procedemento meccanico o algoritmico. In una straordinaria coincidenza di
soluzioni equivalenti, tra il 1935 e il 1936 il logico Alonzo Church e il matematico
inglese Alan Turing sancirono i cosiddetti formalismi massimi cioè le definizioni del
”meglio che si può avere da un calcolo meccanico”. (Plebe 2004)
L’identificazione del concetto di calcolo con quello di funzione ricorsiva necessita
però di un passo indietro nella storia. La copiosa produzione di divulgazione
scientifica relativa all’argomento data l’inizio dell’avventura informatica nell’agosto
del 1900. In questo mese estivo il matematico tedesco David Hilbert pronunciò,
presso il Congresso Internazionale dei Matematici a Parigi, una serie di ventitré
problemi insoluti subito accolti dalla comunità scientifica mondiale come una sfida
per avanzare ipotesi sul futuro della matematica. Quello che qui interessa è il
decimo problema noto come l’Entscheidungsproblem, il problema della decisione,
riproposto anche in altra sede dallo stesso Hilbert16;
Il problema recita testualmente:
16
Secondo Roger Penrose, “in modo più completo al Congresso Internazionale di Bologna nel 1928”
(Penrose 1997)
Se è possibile teorizzare la costruzione di una siffatta macchina è possibile
descriverne i relativi procedimenti meccanici, il calcolo, l’algoritmo.17
Data l’equivalenza matematica delle due tesi ci si riferisice a queste come ad
un’unica tesi, nota in letteratura come Tesi di Church-Turing.18
Il modello che più interessa è quello formulato da Alonzo Church poiché fu questo
formalismo ad ispirare direttamente la progettazione di Lisp da parte di John
McCarthy.
Per dimostrare l’efficacia dell’equivalenza tra funzione calcolabile e funzione
ricorsiva, Alonzo Church fece ricorso ad un espediente logico astratto, di tipo
notazionale e direttamente riconducibile al -calcolo.
L’astrazione permette di interpretare le funzioni come fossero delle regole definibili
mediante un tipo particolare di notazione chiamato -notazione. Come ha
evidenziato Roger Penrose, il concetto ha “a prima vista, ben poco a che fare con le
macchine”, ma rimane uno dei momenti teorici più importanti nella storia
dell’informatica. La -notazione infatti permette la trasformazione di qualsiasi
funzione in una forma canonica. Si riporta integralmente una, tra le non molte,
descrizioni divulgative del concetto di -notazione disponibile in letteratura (Plebe
2004):
“Per esempio la notazione delle seguenti funzioni:
17
Qui viene descritto esclusivamente che cosa Turing intenda per procedimento meccanico. Alla
questione hilbertiana se tale procedimento sia in grado di risolvere tutti i problemi matematici, la
macchina di Turing fornisce una risposta negativa. Una risposta interpretata dal fisico Roger Penrose
come una delle possibili dimostrazioni (insieme al celebre teorema dell’incompletezza di Gödel) della
natura non algoritmica del pensiero umano. La natura non algoritmica del pensiero non solo
caratterizzerebbe aspetti peculiari dell’intuizione matematica (quagli aspetti della matematica non
dimostrabili algoritmicamente) ma anche i processi creativi. Un’ardita ipotesi sulla natura di ciò che
chiamiamo indimostrabile, ineffabile, viene data dallo stesso Penrose il quale sostiene come “la mente
umana trarrebbe vantaggio da effetti quantistici che si verificano nei microtuboli cerebrali, strutture di
dimensioni microscopiche costitutive delle sinapsi neuronali. E’un ipotesi che, qualora confermata
neuroscientificamente, farebbe veramente la differenza, è noto infatti come una macchina quantistica
sia un modello formale superiore rispetto ad una macchina di Turing convenzionale” (Penrose in Plebe
2004)
18
Oggi, questa tesi è uno dei costrutti teorico-matematici più noti nell’ambito della divulgazione
scientifica. Nell’ambito di questa dissertazione la conoscenza di questa tesi è importante sia per una
corretta interpretazione di quanto sostenuto riguardo la conoscenza dei paradigmi della tecnologia
informatica, sia per analizzare lo sviluppo storico successivo delle discipline legate all’intelligenza
artificiale, alla psicologia cognitiva, alla scienza informatica. Diverse interpretazioni, forti e deboli di
questa tesi hanno diversamente influenzato gli scienziati che da li a poco avrebbero contribuito alla
nascita della tecnologia informatica, quindi dei primi linguaggi di programmazione quindi Lisp.
f x = x2 + 1
f x = 5
f 3 = 10
contiene di per sé una certa ambiguita tale per cui “la prima sarebbe una
definizione, la seconda un’equazione, e la terza l’applicazione della stessa funzione
f. Con l’astrazione la stessa funzione verrebbe definita mediante
(x ( x 2 + 1))
2
da cui x ( x + 1)) (3) è il numero 10.
Entrando nel merito, in Lisp la programmazione avviene essenzialmente
dichiarando mediante il linguaggio le proprietà degli oggetti del discorso, con la
procedura fondamentale define. Per esempio dopo aver scritto (cfr. Cap.2.
§2.1.2.3 definizione delle funzioni)
( define a 3)
Nel contesto del programma esiste (si dichiara l’esistenza di…nda) un oggetto a che
è (a cui corrisponde…nda) il numero 3, mentre con:
si introduce l’oggetto 1, (formato da…nda) una lista con primo elemento il numero 5
e secondo elemento la stringa bye. I pregi della non ambiguita si pagano con la
pedanteria: la notazione è rigorosamente prefissa…Naturalmente l’oggetto definito
può essere una funzione, come quella dell’esempio precedente, basta usare
l’operatore chiamato proprio lambda.
( define f
( lambda (x)
( + (* x x) 1 ) ) )
( define fattoriale
( lambda (n)
( if (= n 0)
1
(* n ( fattoriale (- n 1) ) ) ) ) )
Le forme canoniche non solo possono essere confrontate tra loro, ma stabiliscono
una relazione fondamentale, tra modello simbolico-matematico e rappresentatività;
ma anche un modello particolare per la progettazione di un linguaggio di
programmazione simbolico. In sintesi: grazie all’astrazione è stato possibile
trattare i simboli mediante un linguaggio artificiale. Tutto questo potrebbe sembrare
lontano dall’ambito della nostra dissertazione. Credo sia necessario considerare, in
un tentativo di esplicitazione paradigmatica della composizione musicale al
computer, le possibilità stesse dell’esistenza della musica come sistema di
rappresentazione simbolico all’interno di una macchina. Queste possibilità (per la
musica quanto per altri domini di applicazione) fino all’arrivo del paradigma ad
oggetti, sono dedotte dall’astrazione e mediate dal suo linguaggio19 per
eccellenza, il Lisp.
Ci si è chiesto quindi in che modo il calcolatore ha contribuito allo sviluppo della
concezione di nuove forme.
19
Esula dalla presente dissertazione una descrizione tecnica delle conseguenze di tale
considerazione. Si consideri tuttavia che le problematiche relative allo sviluppo di un linguaggio non si
risolvono solamente con l’interpretazione sintattica ma necessitano anche di una definizione semantica
dello stesso. Fu sempre McCarthy a sviluppare il formalismo necessario per le corretta interpretazione
del ‘significato’ delle forme canoniche. Questo formalismo prende il nome di S-espressioni (espressioni
simboliche) detto anche semantica denotazionale. Ecco che l’operazione di denotazione di tali
espressioni è strettamente connessa a quella matematica delle funzioni ricorsive cui si è fatto cenno.
La ricorsione rimane uno dei costrutti teorici più importanti sia per la fondazione del concetto di
computabilità, quindi per la pratica della programmazione, sia per l’influenza più o meno esplicita che
tale concetto ha avuto e continua ad avere sulla prassi della composizione tout-court mediante
computer. Si consideri una certa fortuna letteraria del concetto, nella pubblicazione nel 1979 del lavoro
di Douglas Hofstadter Gödel, Escher, Bach: un’Eterna Ghirlanda Brillante. Una interpretazione
filosofica della storia del numero e del calcolo e sul fondamento delle funzioni ricorsive come
“strumento primario per l’ideazione di nuovi oggetti” si trova in Giovanni Piana, Numero e figura idee
per una epistemologia della ripetizione, CUEM 1999.
Per chiarire meglio la potenzialità di tale costrutto in relazione alla dominio musicale
si riportano di seguito alcune considerazioni circa le conseguenze delle applicazioni
del -calcolo nei linguaggi di programmazione.
Tre condizioni che, grazie al calcola lambda, rendono possibile, attraverso l’uso di
un computer (cfr.Cap.1 §1.3.2.1):
Gli algortimi “ nel senso dei moderni linguaggi sono espressioni, più
o meno complesse, contenenti variabili, dette parametri formali, da
cui sono intese dipendere funzionalmente. Quando poi vengono
utilizzate in un programma, a esse vengono passati in ingresso dei
valori egualmente rappresentanti con espressioni, dette parametri
attuali; se dunque si vuol esprimere assiomaticamente quale sia
l’effetto della chiamata di una procedura o funzione con determinati
argomenti lo si può fare … sostituendo nella definizione della
procedura ogni parametro formale con l’espressione che
rappresenta il parametro attuale corrispondente…”
L’intuizione fu allora straordinaria se si pensa che non esisteva, negli anni 30, la
necessità empirica di stabilire tali relazioni con alcun linguaggio di programmazione.
Il concetto di -calcolo, fondamentale per la definizione di una teoria della
calcolabilità, costituisce quindi un modello formale che ha un ruolo importante nello
studio dei fondamenti della programmazione. Ciò era ben noto a McCarthy il quale a
partire proprio a partire dal concetto di -notazione ha sviluppato un metodo formale
(detto formalismo McCarthy) per la definizione e l’estensione del concetto di
funzione a “modello computazionale delle funzioni ricorsive generali…(attraverso cui
introdurre nda) come meccanismi-base di combinazione di espressioni, la
composizione di funzioni, le espressioni condizionali e la ricorsione” (Natali 1999-
2000)
Per -calcolo, nell’intepretazione che ne diede John McCarthy, si intende quindi la
possibilità di gestione di tale formalismo e di una conseguente notazione con cui è
possibile l’estensione del concetto di funzione matematica all’elaborazione
simbolica.
Il Lisp perciò, in quanto linguaggio, “potrebbe essere spiegato anche come una
interpretazione del formalismo di McCarthy che invece di essere esclusivamente
orientato al calcolo numerico, di funzioni sui naturali, è orientato alla manipolazione
di liste e alla elaborazione simbolica” (Ausiello 2002)
Nel formalismo di McCarthy le funzioni sono perciò definite mediante composizione,
espressioni condizionali e ricorsioni, metodi base per la simulazione della forma
logica.
20
Riguardo ciò non sfugge l’osservazione di Marvin Minsky il quale, a proposito della domanda su
come si dovrebbe formalizzare la musical knowledge in modo da generare un qualche tipo di azione
musicale, risponde: “is formalizing the right idea?…In some domains of computer development that
was a good thing. But in other areas, particularly in the semantics of programming, it seems to me that
the currently popular formalism are premature and unnecessarily limited in conception…mathematical
logic plays a dominant role in contemporary formalizations, and yet is quite inept at expressing the kind
of heuristic knowledge we need for developing Artificial Intelligence”. (Forward: A conversation with
Marvin Minsky di Otto Laske) Successivamente a questa dichiarazione avrebbe sostenuto che “la
programmazione orientata agli oggetti come un modo di realizzare la sua idea di società della mente”,
suo modello teorico per la comprensione del comportamento intelligente (da un’intervista a Peter
Wegner teorico del paradigma OOP).
La funzione in Lisp è ciò che permette l’elaborazione di strutture simboliche adatte
alla simulazione della forma logica.
Di seguito la definizione di funzione così come utilizzata nel linguaggio Lisp:
- Le funzioni che sono già fornite dal linguaggio Lisp vengono chiamate
primitive.
21
I dati sono numeri simboli e liste.
denotato dall’espressione composta deve dipendere solo dal valore
delle sue espressioni componenti” (Natali 1999-2000)
Inoltre
La lista semplice si nota con una parentesi tonda aperta seguita da nessun
elemento, zero o qualche elemento e una parentesi tonda chiusa.
Es 1:
? (note 2 60 1)
> Error: Undefined function NOTE called with arguments (2 60 1) .
> While executing: "Unknown"
> Type Command-/ to continue, Command-. to abort.
> If continued: Retry applying NOTE to (2 60 1).
Nel paragrafo 2.1.2.3 viene mostrato come dichiarare una funzione. La notazione
lambda è la rappresentazione formale della possibilità di dichiarare un’espressione
altrimenti inesistente.
Come è stato detto in OM è possibile interagire direttamente con il linguaggio Lisp
attraverso la finestra Listener: Tutte le espressioni Lisp possono essere compilate e
valutate all’interno di questa finestra. L’utente-compositore, oltre a avere la
necessità di scrivere del codice in questa finestra, la utilizza sempre per verificare la
corretta valutazione del proprio lavoro nell’ambiente di programmazione. Tutti gli
esempi che seguono sono dunque verificabili direttamente nella finestra Listener di
OM.
LISP è nato come linguaggio per il trattamento di liste, forma privilegiata per
l’espressione delle funzioni.
Si vede ora in dettaglio come sia possibile, con le liste, rappresentare sia le
istruzioni (chiamate S-espressioni) sia le sequenze di espressioni.
In Lisp la totalità delle espressioni simboliche equivalgono a tipi di dati fondamentali
conosciuti con il nome di atomo, liste e valori booleani:
2- Valori booleani
Valore falso (per cui qualsiasi altra espressione se non specificata è vera) nil
Vero (solo nel caso sia necessario specificarlo) t
3- LISTE
Sono sequenze di elementi costituite da atomi o liste (liste di liste) messe tra
parentesi
a) Liste semplici sono liste i cui elementi sono costituiti da soli atomi:
(aBc -2 75 a)
(+23.6)
() lista vuota equivale a nil
22
“In Lisp la ricorsione svolge un ruolo molto importante, a causa della natura ricorsiva della struttura
dati fondamentale del linguaggio, la lista.” (Colombetti 2003)
23
Vedremo (Cap.3 §3.2) come complesse modalità di notazione ritmica sono possibili mediante quelli
che vengono definiti in OM “alberi” ritmici, descrivibili con liste multiple.
Per esempio la seguente sequenza ritmica di quattro semicrome in una battuta di un quarto:
(? ( ((4 8) ((4 ( 1 -2 1)))) ((3 4) ((3 (1.0 2)))) ) )
S-espressioni
Atomi e liste sono dette S-espressioni. Queste rappresentano sia i dati, sia le
definizioni delle funzioni; per esempio l’applicazione della funzione di moltiplicazione
agli operandi (o argomenti) 4 e 2 si esprime come
(* 4 2)
Tipi numerici
In Lisp è possibile definire tre tipi numerici di dato: float, integer e ratio.
Si consideri la seguente divisione tra numeri interi (integer) e la relativa valutazione:
(/ 6 3)
2
dove, la prima lista semplice di due numeri (((1 4) rappresenta il metro, ((1 rappresenta il numero delle
pulsazioni suddivise in (1 1 1 1)))) )) cioè quattro semicrome. Basta cambiare il numero di suddivisioni
di una pulsazione per ottenere una quintina di semicrome.
(/ 5 2)
5/2
Per forzare l’inteprete alla definizione del valore reale si utilizza l’istruzione (float):
(float (/ 5 2))
2.5
S-espressioni
Liste Atomi
Integer Floating
Vengono ora descritte alcune operazioni di base sui dati, cioè sui simboli, numeri e
liste per mezzo delle funzioni primitive Lisp.
Nel Lisp alle operazioni sui simboli sono associati i due valori booleani vero,
rappresentato da T, o falso, rappresentato da NIL. Tutte le funzioni che restituiscono
valori T o NIL sono dette predicati.
(atom 'a)
T
(listp 'a)
NIL
MEMBER verifica se, tra gli argomenti di una lista di n elementi, sia contenuto
l’elemento definito in ingresso. Se contenuto lo restituisce.
(setq a pigreco)
3.14
pigreco
3.14
a
3.14
Ora si evidenzia l’utilizzo dell’istruzione setq in relazione alle operazioni sui simboli.
Si associa al valore a quello di ‘b e verifico l’uguaglianza tra a a, a ‘b:
(setq a 'b)
B
(equal a a)
T
(equal a 'b)
T
? (symbolp nil)
T
? (symbolp 3)
NIL
? (numberp nil)
NIL
? (numberp 3)
T
Le quattro operazioni aritmetiche +, -, *, / e gli operatori relazionali <, >, <=, >=, /=
esempi:
(+ 2 2)
4
(+ 2 2 154.87)
158.87
(+ 2 2 (* 4))
8
(* 2 2)
4
(* 2 (/ 25 5))
10
Gli operatori relazionali <, >, <=, >=, /= (diverso da) mettono in relazione due o più
numeri restituendone il risultato T o NIL
? (< 67 66)
NIL
? (< 67 68)
T
? (= 50 50 49 50)
NIL
? (= 50 50 50 50)
T
? (/= 50 40)
T
? (/= 50 50)
NIL
(zerop 5)
NIL
(eql -6 6)
NIL
La sintassi della notazione prevede di solito che il primo elemento di una lista sia
una funzione mentre gli altri elementi gli argomenti (o operandi).
E’possibile però che sia necessario distinguere (+ 3 4) intesa come somma, dalla
lista costituita dai simboli “+”, “3” e “4”. Per risolvere questo problema si usa
l’operatore quote ‘ (l’apice). Esso impedisce la valutazione degli argomenti una
espressione.
La dichiarazione di una funzione è uno degli strumenti più importanti del linguaggio
Lisp (cfr.§ 2.1.2.1) poiché permette di arrichire la libreria di funzioni già definite
dall’interprete.
Per dichiarare una funzione si usa il comando DEFUN che possiede la seguente
sintassi:
(null '())
T
REVERSE restituisce l’inverso degli argomenti di livello più elevato di una lista:
? (random 6)
4
? (random 6)
0
? (random 6)
3
? (random 6)
5
? (random 6)
4
? (random 6)
0
? (random 6)
4
nell’esempio
? (not (= 7 8))
T
? (not 3)
NIL
? (not nil)
T
? (null (= 7 8))
T
? (null 3)
NIL
? (null nil)
T
AND
OR
Forma 1 Forma 2 Valutazione
T T T
T F T
F T T
F F F
COND è usato per valutare una serie di condizioni. Si presenta con la seguente
forma generica:
? (test-range-with-cond -6)
TOO-LOW
? (test-range-with-cond 56)
IN-RANGE
? (test-range-with-cond 129)
TOO-HIGH
CASE è simile a COND ma COND valuta una key form che influisce direttamente
sulla scelta del conseguente. La seguente è la sua forma generica:
(CASE <KEY-FORM>
(<KEY-1> <CONSEQUENT-1A> <CONSEQUENT-1B>…<CONSEQUENT-
1Z>)
(<KEY-2> <CONSEQUENT-2A> <CONSEQUENT-2B>…<CONSEQUENT-
2Z>)
.
.
.
(<KEY-N> <CONSEQUENT-NA> <CONSEQUENT-NB>…<CONSEQUENT-
NZ>))
? (midi-range-with-case -7)
TOO-LOW
? (midi-range-with-case 60)
IN-RANGE
? (midi-range-with-case 128)
TOO-HIGH
Programmazione applicativa
Ricorsioni e iteratori
N*(n-1)*(n-2)….*1
Il rapporto dei numeri di fibonacci successivi che converge verso il valore 1,618
(cioè (1 + sqrt ( 5 ) ) /2 ) è chiamato numero aureo o rapporto aureo.
Nell’ambiente di programmazione OM le funzioni ricorsive e iterative sono molto
utilizzate. Si pensi per esempio ad una scala musicale (cfr.Cap.3 § 3.1.3). Essa può
essere dedotta a partire da un’unica altezza. Questa viene reiterata n volte (cioè per
il numero di note che desideriamo contenuto nella scala) con valori sempre differenti
(corrispondenti all’ampiezza intervallare desiderata).
Si rmanda per il presente paragrafo direttamente alle implementazioni degli iteratori
e collettori nell’ambiente di programmazione OM al Cap.4.
Per quello che riguarda la differenza tra ricorsione e iterazione si pensi che “uno
stesso problema può essere risolto in modo ricorsivo o iterativo….entrambe si
basano su una struttura di controllo: l’iterazione utilizza una struttura iterativa, la
ricorsione una di selezione. Anche la ripetizione è alla base di entrambe,
nell’iterazione addirittura in modo esplicito. Entrambe hanno poi bisogno di una
condizione che le faccia terminare: l’iterazione termina quando la condizione del
ciclo non è più soddisfatta, mentre la ricorsione termina quando si raggiunge il caso
base. In caso contrario l’iterazione e la ricorsione possono essere infinite. Per
l’iterazione ciò si verifica quando la condizione non diventa mai falsa, mentre per la
ricorsione quando non c’è modo di convergere verso il caso base. La ricorsione ha
molti lati negativi: il numero di chiamate alla funzione è generalmente alto e ciò
rappresenta un costo in termini di tempo di elaborazione e di memoria utilizzata.
Ciascuna chiamata ricorsiva, infatti, causa la creazione di un’altra copia della
funzione e ciò può comportare il consumo di parecchia memoria. L’iterazione invece
è limitata in una funzione, per cui non si ha né un eccessivo tempo di elaborazione
né un consumo eccessivo di memoria…qualsiasi problema che abbia una
soluzione ricorsiva, ne ha anche una iterativa. Normalmente si preferisce utilizzare
quella ricorsiva quando la ricorsione rispecchia in modo più naturale il modo in cui
risolvere il problema, per cui il codice risultante è più semplice da scrivere e da
verificare” (Deitel&Deitel 2001).
2.1.3 OOP
Di seguito una breve introduzione ai linguaggi OOP con la definizione delle sue
proprietà fondamentali: oggetto, classe, metodo, polimorfismo e ereditarietà.
Un oggetto può essere qualsiasi cosa a meno di non essere definito. Per definire un
oggetto, cioè far si che possieda una propria identità che lo differenzi da altri oggetti,
è necessario specificarne degli attributi. A questo fine gli oggetti si compongono di
una struttura di dati che ha la funzione di specificare gli attributi e le operazioni
eseguibili su di essi.
Oggetti di questo tipo vengono definiti in classi.
24
In alcuni linguaggi come CLOS la classe è essa stessa un oggetto descrivibile per mezzo di una
metaclasse.
Esempio:
La classe può quindi essere utilizzata per la creazione di molti oggetti. Nell’esempio
precedente sono state specificate le classi Persone e Rettangolo mediante una
struttura di dati definita da tre attributi. Ciò che ancora non è stato definito è la
possibilità di eseguire delle operazioni sugli attributi della classe. Così come
considerata fin’ora la classe è solo un modello. In quanto modello la classe è
l’astrazione di un concetto, ma non permette alcuna operazione su di essa così
come la definizione degli attributi della classe garantisce solo l’accesso al dato
“nome”, “cognome” e “codice fiscale”.
Per modificare i campi degli attributi è necessario allocare un blocco di memoria alla
classe. Questa operazione prende il nome di istanziazione della classe. In quanto
definiti da attributi specifici (“Marco”, “Giulia”, “8”) tutti gli oggetti possono essere
considerati come istanze della relativa classe.
La possibilità di eseguire una o più operazioni sulla classe mediante un tipo di
comportamento prende il nome di metodo.
Esempio:
Metodi: modifica
ruota
cancella
sposta
I concetti base del CLOS fanno riferimento alle definizioni del paradigma OOP con
alcune precisazioni terminologiche.
Di seguito diamo le definizioni di classe, oggetto, ereditarietà, metodi e
polimorfismo, ricordando che è su questo linguaggio di programmazione che è stato
implementato OM:
“Il concetto di oggetto è l’insieme delle nozioni di classe e metodo. Una classe è la
descrizione astratta di una famiglia di elementi che possiedono caratteristiche simili.
Queste caratteristiche appaiono sotto forma di campi della classe.
Un oggetto è una struttura sotto forma di istanza della classe, questo significa che è
possibile specificare concretamente i differenti valori per i campi della classe.
Per esempio, è possibile immaginare la classe NOTA munita di due campi, altezza
(in valori midi) e intensità (esprimibile in valori midi da 0 a 127). Così un do in fff
sarà un’istanza della classe NOTA per il cui campo altezza assumerà il valore 60 e
per il campo intensità il valore 110.
Ereditarietà: definito un collegamento di ereditarietà tra due classi A e B (con B che
erdita da A per esempio) è necessario specificare che B è una sottoclasse di A. Per
riprendere lo stesso esempio è possibile dire che la classe NOTA eredita dalla
classe OGGETTI MUSICALI SEMPLICI il campo DURATA in millisecondi. I
collegamenti ereditari definiscono un ordine gerarchico di classi. (cfr. § 2.1.5.4)
Metodi: tutti i metodi di una classe sono accessibili ai metodi delle sottoclassi. Così
il metodo ‘étirement-temporel’ definito per la classe oggetti musicali semplici è
possibile applicarlo sia a note che silenzi.
Polimorfismo: è un concetto molto sfruttato in OM: più metodi in CLOS possono
pur supportando il medesimo nome appartenere a classi differenti. Lo stesso
metodo avrà così comportamenti differenti a secondo dell’oggetto cui verrà
applicato. Per esempio il metodo TRASPOSIZIONE può essere definito sia per le
note che per i silenzi di una sequenza in maniera da essere applicato integralmente
all’oggetto. Per una NOTA il metodo TRASPOSIZIONE avrà come effetto l’aggiunta
di un certo valore all’altezza di quella nota, per il silenzio sarà invece invocata una
funzione di identità tale per cui da mantenere inalterata la funzione dell’oggetto”.
(cfr. 2.1.5.2.1)
ISTANZE
In CLOS classi e istanze sono distinte. Un’istanza è un oggetto Common Lisp che
può possedere un suo stato di default derivato dalla definizione della classe o può
avere il suo stato particolare (cfr.§ 2.1.5.4 p.es. la classe note). Un’istanza può
utilizzare un metodo definito dalla sua classe o quello definito dalla superclasse
della classe, oppure avere un suo proprio metodo.
Ogni oggetto Common Lisp incluse le classi sono istanze di qualche classe.
All’avvio del software OM si presenta all’utente con un’interfaccia grafica così come
rappresentata in figura 2. L’aspetto visivo di un linguaggio orientato agli oggetti,
estende il concetto di interfaccia all’utilizzo di schermate, menu, finestre e icone che
permettono l’incapsulamento dell’informazione.
Inlet
Rappresenta uno o più ingressi
--- inlets
Outlet
Rappresenta una o piu uscite
outlets
Connessioni
Una connessione “est définie par une ligne simple dont une extrémité est en contact
avec un paramètre de sortie (source) et dont l’autre est en contact avec un
paramètre d’entrée (cible)” (Agon 1998)
outlet
connessione
inlet
2.1.4.4 Semantica funzionale
2.1.5.1 WORKSPACE
Con il termine Workspace si definisce l’interfaccia principale di OM. Ogni utente può
configurare il proprio Workspace ordinando le proprie icone, patch e/o progetti in
apposite cartelle.
Il Workspace è quindi un contenitore in cui l’utente può organizzare il proprio lavoro
per mezzo della ben nota metafora desktop a finestre di Macintosh. Nel workspace
è predefinta la presenza delle cartelle packages e globals.
Il Workspace è un ambiente di lavoro persistente.25
2.1.5.2 PACKAGES
Packages è una cartella che contiene tutte le classi e le funzioni del programma26.
La figura seguente mostra la cartella packages con alcuni sottopackages. Il criterio
di organizzazione per sottopackages è funzionale alla finalità del sottopackage
stesso. Per cui esiste un package che contiene le istruzioni LISP, un package che
contiene istruzioni aritmetiche, combinatorie, musicali e così via..
25
Non è necessario salvare dal momento in cui un oggetto è creato nel workspace.
26
Una lista delle funzioni e classi disponibili in OM è disponibile anche dal menu global.
Fig.2 Packages: si nota il package kernel con i relativi sottopackages e il package
music con il relativo sottopackage score aperto che permette la visione delle relative
classi.
Nella figura sono evidenziati i cinque i campi che definiscono la classe chord.
L’icona sotto slots rappresenta liste Lisp definite in questo caso da valori di default
(Default value) espressi in dati MIDI. Tutti i campi sono istanze della classe per cui è
possibile editare il contenuto della lista; così come tutti i campi possono essere
“mostrati” (Show) all’utente per essere opportunamente editati. Questo è possibile
immetendo la classe chord all’interno di un patch poiché è in esso che il
compositore definisce gli algoritmi. Una volta trascinato27 in un patch la classe chord
genera delle istanze (il patch prende a questo punto il nome di factory) i cui i campi
pubblici sono disponibili per ricevere dati in ingresso e per essere valutati in uscita.
La figura seguente mostra le diverse modalità di rappresentazione della classe
chord all’interno di un patch.
27
Drag and drop
La finestra centrale rappresenta il patch dove risiede la factory della classe chord.
Due sono le modalità di rappresentazione della factory: Mediante il simbolo della
propria classe (icona a sinistra) o per mezzo della notazione musicale tradizionale.
Ogni modalità di rappresentazione condivide i medesimi ingressi (inlets) e uscite
(outlets) così come definiti nei campi della classe. In particolare si nota la modalità
di notazione dei valori parametrici dell’accordo così come definiti nei campi degli
inlets: da sinistra verso destra sono rappresentate espressioni in midicents per
definere le altezze, la velocity per l’ampiezza, offset, durata e numero del canale
MIDI. La finestra superiore al patch mostra invece l’editor con cui è stato scritto
l’accordo.
Come valuta il Listener Lisp questa singola factory?
Essendo i campi della classe chord definiti come liste si può notare come la
valutazione di ogni singolo outlet restituisca espressioni di liste. In particolare la
valutazione del secondo outlet restituisce nella finestra del Listener l’espressione
FUNZIONI
All’interno del Packages è possibile visualizzare oltre alle classi dei sottopackages
anche l’insieme delle funzioni generiche associate al sottopackage selezionato. Nel
paragrafo precedente è stata evidenziata la differenza sostanziale tra classi e
metodi tale per cui ad ogni metodo in OM è associata non una classe ma una
funzione generica. Quindi nel Packages per ogni funzione generica è possibile
evidenziare la relativa collezione dei metodi:
“…you could decide that the ‘+’ method, if called with two numbers
computes their sum, and if called with 2 musical structures will
concatenate them.”
ADDnumbers(a1, a2)
ADDchords(a1, a2)
NOTE
Di seguito le tre modalità con cui può essere rappresentata una sola nota in OM
all’interno di un patch. A mostra l’icona della classe note appena viene definita
all’interno di un patch. Si notano i quattro ingressi superiori relativi ai campi definiti in
precedenza e le quattro uscite inferiori relativi ai medesimi in uscita. B mostra la
classe note con le istanze evidenziate (si noti la corrispondenza dei valori di default
con quelli definiti nei campi della figura precedente). Qui l’utente, a proprio piacere,
definisce i parametri relativi ad un evento. C evidenzia l’editor della classe note, cioè
quella parte in cui è possibile editare direttamente in notazione musicale i parametri
della nota.
A B C
REST
I file audio possono essere ascoltati e visualizzati all’interno di una patch. Di essi
viene rappresentata la waveform, la forma d’onda, modalità di rappresentazione
della variazione dinamica di un suono nel tempo.
CHORD
- lmidic valori midicents
- lvel valori velocity
- loffset
- ldur una lista di durate
- lchan una lista di canali midi
MEASURE
VOICE
POLY
28
Come per tutti gli altri oggetti in cui è possibile definire delle note, all’evidenziazione di un elemento
appaiono, nella parte inferiore della finestra General palette, tutti i parametri relativi a quell’evento, cioè
midicents, canale midi, velocity e durata.
MULTISEQ
Tutte le classi fin qui definite possono essere connesse con altri elementi del
linguaggio di OM. La particolare modalità di rappresentazoe della maggior parte dei
parametri musicali descrivibili come liste, atomi o liste multiple, facilità
l’organizzazione delle medesime in complesse strutture algoritmiche. Queste
possono essere organizzate all’interno di un apposito spazio del programma
chiamato patch.
cioè do mi sol do, quanto notato dal compositore all’interno dell’oggetto chord.
Nel momento in cui colleghiamo l’outlet della lista/e all’oggetto/i chiamato/i nth-
number ed essendo
NTH-RANDOM list
[generic-function]
returns a randomly chosen element from <list>29
otteniamo, ogni volta che richiamiamo la valutazione, una scelta random di uno dei
valori della lista; di seguito, come esempio, cinque valutazioni della funzione nth-
number sulla lista definita precedentemente
L’oggetto repeat-n
accetta due elementi in ingresso: il primo inlet legge quanto valutato da nth-number
mentre il secondo campiona quattro valori random in modo da ottenere:
L’algoritmo fin qui definito è ripetuto per ogni oggetto chord, cioè per ogni riserva
armonica. Di seguito un oggetto Lisp chiamato append30 si incarica di concatenare
le liste ottenute
29
E’possibile in qualsiasi istante richiamare la documentazione di un oggetto all’interno del
patch.
30
V.par. 2.1.2.3
APPEND &rest lists
[Function]
concatenates the top-level elements of lists, in effect splicing them
together. The lists are not modified. Returns the resulting concatenated
list.
Di seguito uno dei possibili risultati della valutazione il cui risultato è di 4*4 elementi
della lista
? OM->(7200 6400 7200 6400 7200 6900 6900 6500 6700 5900 6700 6700 6000 6000
6000 7200)
?
Il risultato è di nuovo immesso in repeat-n (in modo da ottenere “due frasi”) la cui
valutazione restitutisce la seguente lista di liste
? OM->((6000 6000 6000 6700 6000 6500 6900 6500 7400 5900 6500 6700 7200
6000 7200 7200) (7200 6400 6400 6400 6500 6000 6000 6900 5900 5900 5900 7400
7200 6000 7200 6000))
?
La funzione flat si incarica di trasformare una lista di liste in una lista piatta, semplice
(priva di incassamenti) ed essere così leggibile in ingresso dall’oggetto chord-seq.
Ogni valutazione dell’oggetto chord-seq richiama tutte le altre e restituisce per ogni
valutazione differenti (infiniti) profili melodici.
Un complesso patch del compositore Tristan Murail utilizzato per la composizione
Désintégrations. Si nota in particolare l’utilizzo di un patch nel patch (l’icona
denominata “mypatch”) che incapsula il seguente algoritmo
MAQUETTE
La maquette è uno dei tratti distintivi di OM. Nel campo della composizione assistita
differenzia in modo sostanziale OM dal suo predecessore Patchwork. Una maquette
permette di organizzare nel tempo (di comporre) le strutture musicali definite nelle
patch. Permette quindi un più alto livello di organizzazione del materiale musicale
(meso-macro formale).
Le classi di oggetti che possono essere riconosciute da una maquette sono le
seguenti:
3.1 Introduzione
Tutte le altezze delle note in OM sono espresse in midicents unità di misura derivata
dall’unione dei termini MIDI e cent1. Le altezze, nel protocollo MIDI, sono caratterizzate
da 128 valori che variano da 0 a 127. Per esempio, in valore MIDI, DO3, equivale a 60.
Moltiplicato per 100, che rappresenta il cents (100 cents =1 semitono), equivale a 6000
midicents. Il midicents rende interpretabile i valori di note MIDI per intervalli inferiori al
semitono. Così un valore di 6502 indica l’altezza MIDI numero 65, più 2 cents; 6050
indica un quarto di tono più grande di un DO3.
Per un’immediata corrispondenza di tutti i valori midicents con le relative altezze si
rimanda all’Appendice I dove sono rappresentate delle tabelle di conversione di
semplice consultazione.
1
Un cent“…è pari a 1/100 di semitono equabilmente temperato, o a 1/1200 di un intervallo di 8ª giusta” in
(Azzaroni 1997)
Le patches si interpretano e si analizzano dall’alto verso il basso e viceversa seguendo il
percorso definito nei collegamenti tra gli oggetti dell’algoritmo. Per ottenere il risultato
desiderato è necessario valutare (cioè avviare il calcolo dell’algoritmo) l’ultimo oggetto
della patch. Nel caso del primo esempio che segue è l’oggetto (D). Avviata la
valutazione dell’oggetto e seguendo un processo a ritroso, l’algoritmo richiama gli
elementi presenti all’interno dell’algoritmo, (A) e (B), poi (C) fino a mostrare il risultato
richiesto (D).
Si tenga presente che il significato, la semantica di ogni singolo oggetto è contestuale,
tale per cui spesso viene definito in base a quella che è la sua funzione specifica nel
contesto di un algoritmo particolare. Per esempio: l’oggetto dx->x, del tutorial
“costruzione di una successione combinata di altezze”, opera su due liste di numeri; solo
in virtù del fatto che è collegato ad un oggetto chord-seq, permette di dire che l’oggetto
dx->x serve a costruire una scala.
Per una definizione precisa delle singole funzioni si rimanda al reference di OM.
-------------------------------------------------------------------------------
3.1.1 Trasposizione di un accordo2 (Jacopo Baboni Schilingi)
-------------------------------------------------------------------------------
Funzioni utilizzate
Descrizione
2
Corrisponde al tutorial 1
Struttura del patch
Dove do = 6000, si = 7100, mi = 6700, sol = 6400. L’ordine dei valori nella lista
corrisponde all’ordine in cui le singole note dell’accordo sono state digitate dall’utente. Si
ricorda a questo proposito che l’oggetto chord può visualizzare i propri elementi come
accordi o come successioni di intervalli. In quanto successione intervallare chord
memorizza l’ordine di immissione della altezze digitate dall’utente il quale potrà decidere
come ascoltare quanto definito in chord.
B: si immette il valore con cui trasporre (A). La valutazione di (B) restituisce l’atomo 200.
Si nota che per trasporre di un semitono si immette il valore in midicents 100. Un quarto
di tono corrisponde a 50 mentre un ottavo di tono 25. A numeri positivi corrispondono
trasposizioni ascendenti, numeri negativi discendenti. Come si mostra nella figura
successiva, è possibile visualizzare nel chord box (D) la notazione di una eventuale
trasposizione per quarti o ottavi di tono.
C: l’operatore aritmetico om+ somma gli elementi in ingresso, cioè (A) e (B). In questo
caso aggiunge ad ogni elemento della lista di (A) il valore 200 in modo da ottenere le
seguente nuova lista
Funzioni utilizzate
Descrizione
Questo patch, con la valutazione di (F) fornisce l’inversione di un intervallo definito nei
box NOTE A e B.
3
Tutorial 2
Struttura del patch
C: L’operatore aritmetico om- calcola la differenza in midicents tra la nota (A) e (B) cioè
–1100.
D: L’operatore aritmetico om+ somma il valore definito in (A) con il risultato di (C).
6000 – 1100 = 4900
(6000 4900)
F: La valutazione del CHORD box (F), con (E) come input, restituisce l’inverso
dell’intervallo.
------------------------------------------------------------------------
3.1.3 Costruzione di una successione combinata di altezze4 (Jacopo Baboni
Schilingi)
------------------------------------------------------------------------
Funzioni utilizzate
Descrizione
Questo patch crea una “scala” la cui nota iniziale è definita nel NOTE box A e basata
sulla serie di intervalli definiti nella lista (B).
4
Tutorial 3 “Costruzione di una scala”
Struttura del patch
OM->6000
B: Lista di intervalli.
se 100 = semitono 200 = tono
la lista
(200 200 100 200 200 200 100) = T T S T T T S
C: dx->x accetta in ingresso due elementi, un atomo e una lista. In questo caso genera
la scala la cui nota di partenza è definita in (A) secondo gli intervalli di (B). La
valutazione restituisce quindi
Cioè (A) più la somma del suo valore in midicent con il primo elemento della lista (B).
6000 6000
6000 + 200 6200
6200 + 200 6400
6400 + 100 6500
6500 + 200 6700
6700 + 200 6900
6900 + 200 7100
7100 + 100 7200
7200
Con il patch è possibile definire una qualsiasi successione combinata (Verdi 1998) di
altezze. Sempre secondo il modello teorico di Verdi è possibile: definire la densità (n°di
altezze della combinazione), la cardinalità (n°delle classi di altezze)5, l’estensione
(distanza intervallare fra i suoni estremi) e l’estensione minima (distanza intervallare
minima entro cui una combinazione può essere ridotta).
5
Dalla definizione di Milton Babbit (1955): “Tutte le altezze che differiscono per un numero intero di ottave
appartengono ad una medesima classe di altezze (pitch class)…con tale termine si indica quindi “l’insieme
di quelle altezze che differiscono l’un'altra solamente per l’ottava cui appartengono”. Tale nozione esclude
ogni informazione inerente registro, durata, timbro…una classe di altezze è semplicemente l’insieme di tutte
le altezze equivalenti a distanza di ottava” (Verdi 1998)
------------------------------------------------------------------------
3.1.4 Quattro operazioni su una serie di dodici suoni6 (Mikhail Malt)
------------------------------------------------------------------------
Si definiscono in un patch le operazioni di trasposizione, retrogradazione, inversione e
retrogradazione dell’inversione di una serie di 12 suoni.
Funzioni utilizzate
Descrizione
La patch esegue quattro operazioni su una stessa sequenza di note definite in (A).
6
Tutorial 6 dette anche forme a specchio.
Struttura del patch
TRASPOSIZIONE
RETROGRADAZIONE
E: Il box reverse restituisce la lettura retrograda di una lista (in questo caso quindi della
lista di valori midicents derivati dalla sequenza originale):
INVERSIONE
F: x->dx calcola la differenza tra gli intervalli7 della sequenza originale di note.
OM->(7500 7400 6900 6800 6700 6600 6400 7300 7200 7000 6500 5900)
Differenza:
OM->(-100 -500 -100 -100 -100 -200 900 -100 -200 -500 -600)
Cioè
7400 – 7500 = -100
6900 – 7400 = -500
…
G: om* moltiplica ogni valore in uscita da x-dx per –1. Si ottengono così tutti valori
positivi.
OM->(100 500 100 100 100 200 -900 100 200 500 600)
H: Il modulo first prende la prima nota della serie originale restituendo un atomo e non
una lista di un elemento.
I: dx->x crea una nuova lista la cui nota di partenza è data da first (H) secondo la
sequenza intervallare derivata da om* (G).
7
Si ribadisce il valore contestuale di quanto valutato da queste funzioni. In questo caso si deve interpretare
tale risultato come una lista di intervalli tali che 100 = semitono 200 = tono, a valori negativi corrispondono
intervalli discendenti.
Cioè:
7500 7500
7500 + 100 7600
7600 + 500 8100
8100 + 100 8200
8200 + 100 8300
8300 + 100 8400
8400 + 200 8600
8600 + 900 7700
7700 + 100 7800
7800 + 200 8000
8000 + 500 8500
8500 + 600 9100
RETROGRADAZIONE dell’INVERSIONE
Funzioni utilizzate
8
Tutorial 8
Descrizione
Il box x->dx (B) calcola la differenza (dei valori midicents) degli intervalli della sequenza
di note immesse in (A). om* (D) cambia, moltiplicando, questi intervalli
proporzionalmente al valore immesso in (C). Il risultato della moltiplicazione è una nuova
lista di intervalli che, una volta immessa in dx->x (F) può essere utilizzata per la
generazione di una nuova serie di note.
D: moltiplica gli intervalli in calcolati da x->dx (B) per il valore immesso in (C). Per un
valore di 0.5 immesso in (C) si ottiene la seguente lista
E: il box first (E) seleziona la prima nota di (A), nota di partenza per la nuova serie (H).
F: dx->x genera la nuova sequenza, la cui nota iniziale è quella definita in (E) e costruita
secondo gli intervalli derivati da x->dx.
Funzioni utilizzate
Descrizione
Questo patch genera uno spettro armonico a partire da una nota fondamentale. Si
mostra l’utilizzo dell’incapsulamento di un patch all’interno del patch principale.
9
Tutorial 9
non dovrà fare altro che definire i parametri di ingresso al patch stesso. Una volta creata
la patch appare la seguente icona nel patch principale.
E’ possibile rinominare il patch per esempio ridefinendolo con il nome harmonic series.
Con un doppio click sull’icona è possibile visualizzare l’interno del patch dove definire gli
ingressi (in questo caso quattro) e un’uscita con le apposite frecce in alto a sinistra del
patch.
C: Per la generazione dello spettro armonico dobbiamo moltiplicare la frequenza della
fondamentale per la serie degli armonici superiori. (per esempio data la fondamentale a
60Hz, dobbiamo moltplicare questo valore per 1, 2, 3…).
Per fare questo è necesssario convertire il valore midicents in frequenze mediante l’uso
di mc->f (D).
E: Per generare una lista di armonici utilizzeremo la funzione arithm-ser cioè una serie
aritmetica i cui valori sono definiti da: (primo input) valore da cui far partire la serie -
(secondo input) valore dell’ultimo armonico voluto – (terzo input) il passo di lettura della
serie. Con quest’ultimo è possibile definire, per esempio immettendo il valore 2, solo gli
armonici dispari (1 3 5 7…)
F: dopo aver moltiplicato la fondamentale con l’uscita di arithm-ser mediante om*, si
riconvertono le frequenze in midicents con la funzione f->mc (F) cioè la funzione inversa
a quella precedentemente definita.
D ? OM->65.40639132514966
E ? OM->(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16)
F OM->(3600 4800 5502 6000 6386 6702 6968 7200 7404 7586 7752 7902 8040 8168
8288 8400)
OM->(3600 4800 5502 6000 6386 6702 6968 7200 7404 7586 7752 7902 8040 8168 8288
8400 8504 8604 8698 8786 8870 8952 9028 9102 9172 9240 9306 9368 9430 9488 9546
9600 9654 9704 9756 9804 9852 9898 9942 9986)
--------------------------------------------------------------
3.1.7 Costruzione di uno spettro con N parziali 10
--------------------------------------------------------------
Data una fondamentale si vuole generare uno spettro per il quale sia possibile definire le
armoniche o le parziali inarmoniche.
10
Il seguente patch non è presente nei tutorial di OM. Il patch OM è di Mikhail Malt. Il manuale di PatchWork
riporta un algoritmo identico attribuito al compositore Tristan Murail.
Si noti la differenza tra la patch incapsulata precedente e quella qui definita nella
seguente figura:
(1 3 5 7 9 11 15 17 19 20 24 30)
Il seguente patch può essere considerato come la versione ergonomica del patch
precedente dove la struttura centrale dell’algoritmo non era incapsulata. La complessità
di alcuni patches può essere tale da dover fare un utilizzo intensivo dell’incapsulamento
per n livelli di profondita (cioè un patch in un patch che a sua volta è in un patch ecc. cfr.
Cap.5 par 5.2.3).
All’aumentare dei parametri da controllare è più intuitivo il patch seguente che quello
precedentemente definito. Si noti l’incapsulamento dell’algoritmo e i commenti relativi a
ciascun elemento del patch stesso.
L’algoritmo si differenzia dal precedente per la presenza dell’oggetto approx-m il quale
accetta in ingresso due input.
Facendo a ritroso il percorso che porta al primo input di approx-m ci si accorge che esso
è lo stesso algoritmo definito nel patch precedente (tutorial 8).
Il secondo input di approx-m permette la definizione del grado di approssimazione per
semitoni, quarti di tono o ottavi di tono.
Questa patch può essere considerata come un modello generico di implementazione
dell’operazione di inversione.
--------------------------------------------------------------------------------
3.1.9 Sei operazioni su una serie di dodici suoni (Mikhail Malt)
--------------------------------------------------------------------------------
Nel patch è aggiunta una nuova operazione sulla serie chiamata inversion_2(axe) che
definisce l’operazione di inversione rispetto ad una altezza definita come asse di
riferimento.
------------------------------------------------------------------------
3.1.10 Costruzione random di una sequenza I
Introduzione a om-random11 (Karim Haddad)
------------------------------------------------------------------------
Funzioni utilizzate
11
Tutorial 11
Descrizione
STATO DI UN OGGETTO:
Per ogni valutazione delle patches, B fornisce una lista di cinque valori differenti
mentre C una lista di cinque valori identici. La differenza è dovuta allo stato della
funzione om-random; stato rappresentato visivamente dalla presenza del
numero 1 sull’icona della funzione e attivabile dall’utente. In B, per ogni
valutazione di repeat-n vengono associati 5 valori differenti in uscita da om-
random. Lo stato della funzione om-random in C (definito come eval-once mode)
per ogni valutazione di repeat-n, fornisce la restituzione di un solo valore di om-
random iterato per 5 volte.
D: il patch C è ripetuto per tre volte a per ogni ripetizione è aggiunta una nuova funzione
om-random in ingresso a tutti e tre i moduli repeat-n.
E: le uscite dei tre moduli repeat-n sono connesse agli ingressi di x-append (E) il quale
unisce il risultato delle valutazioni in un’unica lista semplice.
Funzioni utilizzate
Descrizione
12
Tutorial 12
B: Lo stesso patch viene utilizzato per definire le durate con valori in ingresso ad om-
random consoni alla rappresentazione in millisecondi delle durate. 10 e 50 genereranno
così valori compresi tra 100ms e 500ms. (cfr Cap.2 par.2.1.5.4 struttura oggetto chord).
C: per far coincidere i valori onset con le durate è necessario settare il modulo repeat-n
nello stato eval-once mode. Un modulo è valutato tante volte quante sono le connessioni
attive. In questo caso si nota che l’uscita di repeat-n è connessa all’ingresso dei due
oggetti dx->x e CHORD-SEQ. Se non fosse attivo lo stato eval-once mode repeat-n
fornirebbe valori differenti in ingresso agli oggetti per i quali invece è necessario fornire
lo stesso valore.
13
La velocity è un parametro MIDI per la rappresentazione della dinamica; come le altezze utilizza valori da
0 (indicativamente un pianissimo ppp) a 127 (fortissimo fff). In OM è possibile settare questi valori per
differenti range dinamici. Se non si alterano questi valori automaticamente OM assegna i seguenti range alle
indicazioni di dinamica tradizionali:
ppp da 0 a 20
pp da 21 a 40
p da 41 a 55
mp da 56 a 60
mf da 61 a 85
f da 86 a 100
ff da 101 a 115
fff da 116 a 127
La seguente è una sequenza generata con l’uso di questa patch.
Seguono quattro valutazioni della patch precedente con aggiunta dell’oggetto voice;
nell’ordine, per ogni valutazione: oggetto chord-seq-oggetto voice e evidenziazione
dell’oggetto voice.
Il processo di quantificazione ritmica tra chord seq e voice può essere mediato da un
oggetto chiamato omquantify il quale permette la visualizzazione e l’editing dei
parametri direttamente nel patch.
Il patch seguente (tutorial 31) mostra la quantizzazione di una sequenza random definita
in chord-seq (A) del tutorial 12.
A: il quarto output di chord-seq definisce la lista multipla di durate in millisecondi per ogni
evento definito nella sequenza, in questo caso:
? OM->((420) (390) (200) (390) (310) (200) (240) (410) (180) (220) (380) (220)
(200) (340) (350) (130) (350) (500) (380) (430) (210) (160) (340) (390) (170)
(480) (140) (300) (460) (310))
? OM->(420 390 200 390 310 200 240 410 180 220 380 220 200 340 350 130 350 500
380 430 210 160 340 390 170 480 140 300 460 310)
D: L’oggetto voice interpreta tale lista simbolica in notazione tradizionale tale per cui il
risultato, secondo quanto definito in (C) sarà:
? Warning: with the given constraints, 1 notes are lost while quantizing
Genesi della forma è il processo: “campo assai vasto dell’intera azione compositiva, dal
limite della concezione astratta dell’idea musicale a quello della sua realizzazione in
sostanza sonora – rappresentata o meno con segni di qualsiasi tipo (grafici, fisici, o
quant’altro) – attraverso quella rete complessa di nessi che legano il “passaggio”
dall’elaborazione concettuale dell’idea alla sua realizzazione. Centrale in questo
passaggio è la nozione di tempo come agente “formante”…” (Azzaroni 1997)
Il tempo, in musica, si manifesta in modo percepibile attraverso la forma musicale, “una
forma come architettura prodotta dalle articolazioni temporali del suono: le diverse
configurazioni sonore “si assoggettano a manipolazioni, trasformazioni reversibili,
processi per i quali diviene incidente l’intervento del pensiero relazionante, ovvero
dell’intelligenza creatrice di nessi fra ciò che si svolge nel tempo e nello spazio “astratto
del sonoro, e il pensiero relazionante si fa “portatore di trame simboliche, razionali o
emotive proprio con i processi trasformativi che produce, in tal modo facendosi sostanza
della narratio musicale” (Azzaroni 1997).
La complessità delle strategie utilizzate per dare forma alla musica implica differenti
concezioni dei tempi musicali.
In OM è possibile definire complesse strutture temporali per mezzo di differenti
strumenti:
La seguente introduzione (cfr. nota 23 Cap.2) ha lo scopo di mostrare una delle possibili
applicazioni musicali per mezzo della notazione di liste numeriche.
In questo senso l’uso di liste si dimostra particolarmente efficace per fornire una
descrizione di alto livello del parametro ritmico della notazione musicale.
Nell’ambiente di programmazione OM una lista numerica può essere convertita in una
qualsiasi struttura metrico-ritmica. Viceversa è possibile pensare complesse strutture
metrico-ritmiche mediante la strutturazione di liste multiple. Complesse strutture metrico-
ritmiche descritte mediante liste multiple vengono chiamate alberi ritmici, rhythmic trees.
Gli alberi ritmici costituiscono quindi un particolare metodo di notazione simbolica delle
strutture ritmiche.
DEFINIZIONE
D può essere sostituito da un punto interrogativo ‘?’ nel qual caso definisce una variabile
globale. L’esempio precedente può essere così riscritto come
ESEMPIO 1
ESEMPIO 2
I numeri con valore negativo sono interpretati come pause, i numeri con valore in virgola
mobile come legature di durata.
Si interpreti la lista multipla b come derivazione di a:
(? (((4 8) (1 -1 -1 -1)) ((4 16) (1 -1 -1 -1)) ((4 16) (-1 1 1 1)) ((4 16) (1 -
1 1 -1)) ((4 8) (1 1 1 1))))
CAPITOLO 4
COMPOSIZIONE DI PATCHES IN OPENMUSIC II: introduzione a OMLOOP
4.1 OMLOOP
OMLOOP è uno degli oggetti che meglio rappresenta le possibilità tipicamente iterative-
funzionali e di definizione delle strutture di controllo di OM (cfr.Cap.1 § 1.3.1.1.1).
Come rappresentato nella figura seguente, quando inserito all’interno di un patch, esso
si presenta come un’icona a forma di spirale. Un doppio click rivela sua struttura interna.
Si nota come sia necessario definire diversi input all’interno dell’oggetto affinchè possa
connettersi con altri elementi nel patch.
4.1.1.1 FOR
Esempio 1: Forloop 1
Esempio 2: Forloop II
Esempio 3: Forloop III
Valutazione:
?
4
7
10
13
16
19
22
25
28
31
34
37
40
43
46
49 OM->49
?
Esempio 4: Forloop – Collect I
?
4
7
10
13
16
19
22
25
28
31
34
37
40
43
46 OM->(4 7 10 13 16 19 22 25 28 31 34 37 40 43 46)
?
Esempio 5: Forloop – Collect II
? OM->(1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46)
4.1.1.2 WHILE
Esempio 1: whileloop I
Esempio 2: whileloop II
?
0
1
2
3
4
5 OM->(6 end)
?
Esempio 3: whileloop III
?
0
1
2
3
4 OM->(5 end)
4.1.1.3 LISTLOOP
Esempio 1: listloop I
Esempio 2: listloop II
?
10
11
12
13
14
15 OM->(10 11 12 13 14 15)
?
? OM->((5700 6000 6300) (6300 6600 6900) (6200 6500 6800) (6600 6900 7200) (6800
7100 7400) (6700 7000 7300))
?
Esempio 4: listloop IV
? OM->((5700 6000 6300) (6300 6600 6900) (6200 6500 6800) (6600 6900 7200) (6800
7100 7400) (6700 7000 7300))
Esempio 6: listloop 6
? OM->(-1 -1 -1 -6 4 -1 -1 -1 -1)
4.1.1.4 ONLISTLOOP
Esempio 1: onlistloop I
Esempio 2: onlistloop II
?
(10 11 12 13 14 15)
(11 12 13 14 15)
(12 13 14 15)
(13 14 15)
(14 15)
(15) OM->nil
?
Esempio 3: onlistloop III
(10 11 12 13 14 15)
(11 12 13 14 15)
(12 13 14 15)
(13 14 15)
(14 15)
(15) OM->((10 11 12 13 14 15) (11 12 13 14 15) (12 13 14 15) (13 14 15) (14 15)
(15))
?
Esempio 4: onlistloop IV calcolo degli intervalli tra altezze di un accordo
allintervals1:
4.1.2.1 ACCUM
Esempio 1: somma
? OM->55
Esempio 2: moltiplicazione
? OM->3628800
Esempio 3: somma e moltiplicazione
accum4:
? OM->55
accum5:
? OM->3628800
Esempio 4: patch come input
? OM->8
patchcountif incapsula il seguente algoritmo:
4.1.2.2 COLLECT
Esempio 1:
? OM->(-1 -2 -3 -4)
Esempio 1:
? OM->21
Esempio 2:
? OM->21
4.1.2.4 MIN
? OM->1
4.1.2.5 MAX
? OM->9
4.1.2.6 IF-COUNT
? OM->8
4.2 Applicazioni di OMLOOP:
A:
? OM->(12)
B:
? OM->(0 2 4 6 8 10 12 14)
Esempio 3: somma dei termini di una serie aritmetica
? OM->(42)
Esempio 4: x - dx
? OM->(-1 -1 -1 -6 4 -1 -1 -1 -1)
Esempio 5: segmentazione di liste
A:
B:
A:
Descrizione
In questo patch si utilizza il random per generare note da particolari accordi al fine di
costruire una sequenza di note. (cfr. Cap.2 § 2.1.5.4) A differenza del patch citato nel
rimando, si nota che questi accordi sono il risultato di una interpolazione tra due accordi
attentamente selezionati. Il primo accordo è definito nel registro grave mentre il secondo
in quello acuto. Il risultato dell’interpolazione sarà una sequenza ascendente di accordi,
tendenza che sarà preservata nella generazione della sequenza di note.
1
Tutorial 17. L’interpolazione è un metodo per individuare nuovi punti del piano cartesiano a partire da un
insieme finito di punti dati.
Struttura del patch
listloop conta in ingresso ogni nota che proviene da chord. nth-random sceglie in
modo random una nota che viene ripetuta n volte e restituita in uscita da collect.
F: l’uscita di omloop è una lista equivalente ad una lista di accordi. In modo da avere
una sequenza di note è necessario rimuovere i livelli interni delle parentesi per mezzo
della funzione flat (F). La lista di note è ora pronta per essere immessa nell’oggetto
CHORD-SEQ che, ad ogni valutazione, ci restituirà una diversa sequenza di note.
-----------------------------------------------------------------------------------------
5.2 Uso di BPF (break-point function):
Campionare una sequenza di note (Jacopo Baboni Schilingi)
-----------------------------------------------------------------------------------------
Funzioni utilizzate
In questo patch si prendono le note definite nell’oggetto CHORD box (A), si convertono i
valori midicents in una break-point function (B) i quali vengono ricampionati utilizzando
un numero di campioni definiti in (C).
B: BPF, in questo caso, interpreta i valori midicents di (A) come punti equidistanti su di
un piano cartesiano.
Ciò è possibile in quanto l’oggetto BPF accetta in ingresso una lista di valori da
associare alla coordinata x (secondo input) e una lista di valori da associare alla
coordinata y (terzo input).
Se la lista dei valori midicents di (A)
? OM->(6000 5400 7300 7300 5700 5300 6100 7600 7400 7400 5900 6600 6800)
è immessa come ingresso a BPF nel terzo input, cioè come lista di coordinate per l’asse
y, questi diverranno valori delle componenti y delle coppie di coordinate (x y). I valori di
x, se non specificati, si distribuiscono in maniera equidistante sull’asse in funzione del
passo di default (0 10).
Per cui, date le coppie di coordinate
(0 ; 6000)
(10 ; 5400)
(20 ; 7300)
(30 ; 7300)
(40 ; 5700)
(50 ; 5300)
(60 ; 6100)
(70 ; 7600)
(80 ; 7400)
(90 ; 7400)
(100 ; 5900)
(110 ; 6600)
(120 ; 6800)
Si ottiene la seguente rappresentazione sul piano cartesiano, in cui, per comodità, può
risultare utile unire i punti con una linea spezzata, per esempio per descrivere
l’andamento del profilo melodico o di qualsiasi altro parametro. (cfr.sul concetto di
inviluppo nella computer music Cap.1§ 1.4.2)
Tornando al patch, la traiettoria della linea ben rappresenta il profilo “melodico”
nell’ordine delle altezze da noi immesso in (A) cioè:
Solo successivamente, quando abbiamo definito che cosa associare e in che modo a
BPF, è possibile avanzare qualsiasi interpretazione spaziale o temporale del profilo
delineato. Nel caso del patch qui descritto è possibile dire che esso ben rappresenta
l’evoluzione di un profilo melodico.
.
Descrizione
In questo patch è possibile disegnare una curva affinchè possa essere convertita in un
profilo di altezze dall’intervallo cornice riscalabile.
D: Si immette in CHORD una nota che sarà la nota più bassa del profilo melodico.
H: Il modulo om-scale riscala i valori in uscita da bpf-sample tra quelli determinati in (D)
e (F).
III°Livello:
IV°Livello:
V°Livello:
5.3 Esempi dalle librerie I: OMTREE e Profile
reversetree restituisce il retrogrado della lista di liste dell’albero ritmico originale cioè:
Rotazione della lista di liste del ritmo originale per n posizioni (in questo caso 1 immesso
nel secondo input del modulo rotatetree) tale per cui si ottiene, a partire dalla prima lista:
(2 (((4 4) ((1 (3 (1 (-2 1)) -2 (1 (1 -2)))))) ((4 4) ((1 (-3 (1 (4 1)) 1))))))
Utilizzando lo stesso modulo rotate-tree è possibile stabilire misura per misura il numero
di rotazioni da effettuare. Nell’esempio seguente si mostra come sia possibile ruotare la
lista relativa alla prima misura di due posizioni mentre la seconda di una posizione in
modo da rimanere uguale all’esempio precedente. In particolare: prima si definisce che
si vuole lavorare sulle misure (indicandolo nel terzo input del modulo rotate-tree (by-
measure). Nel secondo input si immette una lista in cui il primo valore corrisponde al
numero di rotazione della posizione della prima misura, il secondo valore della seconda
e così via se ci fossero altre misure.
? OM->(? (((4 4) ((1 (-2 (1 (1 -2)) 1 (1 (1 3)))))) ((4 4) ((1 (-3 (1 (4 1)) -
2))))))
Nell’esempio seguente tietree trasforma tutte le pause in note con legatura di durata.
Successivamente il modulo reducetree semplifica la notazione.
subst-rhythm o sostituzione di valori di una lista I.
E’possibile immettere dei valori nel terzo input del modulo subst-rhythm, che
sostituiranno i valori dell’albero ritmico originale:
? OM->(2 (((4 4) ((1 (-1 (1 (2 1 1 1)) -2 1)))) ((4 4) ((1 (1 (1 (1 2 1 1)) -1
1))))))
? OM->(2 (((4 4) ((1 ((1 (1 1 1)) (1 ((1 (1 7)) (2 (1 2)) (1 (3 2)) (1 (5)))) 1
1)))) ((4 4) ((1 (1 (1 (1 2 1 1)) -1 1))))))
(a d a c a b a a…)
PROFILE
2
P.es. in (Azzaroni 1997)
In particolare il profilo di una sequenza di altezze si costituisce nel passaggio
dall’intervallo, descrivibile come segmento di retta, alla linea melodica, intesa come linea
spezzata, dotata di una direzionalità geometrico-melodica.
Delle due variabili della dimensione orizzontale notazionale, altezze e tempo, la libreria
profile considera solo il profilo delle altezze. Il profilo melodico è definito da Baboni
Schilingi, come:
3
Baboni-Schilingi, Brian Ferneyhough, Ivan Fedele, Mikhail Malt, Philippe Manoury, Alessandro Melchiorre,
Tristan Murail
stessi, le altezze assolute in sesno verticale (armonico) che orizzontale,
l’andamento globale di ogni processo attraverso grafici e il grado di
profondità di un processo attraverso la ricorsione e la iterazione
implementate direttamente nelle funzioni.” (Baboni Schilingi Malt 1995)
Esempio A Esempio B
è espanso per un valore a piacere immesso nel secondo input del modulo compr/expan;
in questo caso 1.8 da cui si ottiene il seguente profilo:
Maggiore è il valore, più ampia sarà l’espansione del motivo; il seguente profilo è stato
espanso di 2.5
Il seguente di 4.0
Di seguito il patch mostra tutti i passaggi necessari per effettuare una metamorfosi del
tema di Bach in quello di Chopin. Si osserva che il primo e l’ultimo profilo sono
rispettivamente i temi originali.
1 2 3 4 5 6 7 8 9 10
J.S.Bach F. Chopin
group-list permette di articolare una lista raggruppandone gli elementi. Una seconda
lista numerica stabilisce la lunghezza di questi elementi. Nell’esempio seguente una
sequenza discendente di note viene raggruppata in accordi della densità di 1 2 3 4 5 6
altezze.
La seguente è la sequenza di note immessa nel primo input di group-list:
cioè
(8000 6800 6098 5600 5214 4898 4632 4400 4196 4014 3848 3698 3560 3432 3312
3200 3096 2996 2902 2814 2730 2648 2572 2498 2428 2360 2294 2232)
notes-change
Nell’esempio seguente, ad un determinato profilo melodico è possibile sostituire il
sistema di riferimento sonoro, aggingendo una serie di intervalli immessi come secondo
input.
Dato il seguente profilo:
Come ultimo esempio si riporta il modulo subst-list mediante cui operare complesse
sostituzioni di liste.
? OM->(1 (ttt) 3 4 5 2 oioi ppp 2 3 22 p)
L’esempio mostra come sia possibile sostituire, in una data lista, l’atomo 2 con (ttt). In
questo caso è richiesto che la sostituzione avvenga una sola volta (terzo input).
------------------------------------------------------------------------
5.4 La Maquette (Karim Haddad)4
------------------------------------------------------------------------
Descrizione
Funzioni utilizzate
La MAQUETTE è l’oggetto ideale per ordinare nel tempo eventi e processi musicali. Si
esamina un modo semplice per disporre al suo interno oggetti come MAQUETTE,
CHORD-SEQ e VOICE.
4
Tutorial 32
Il primo input è per l’onset. Il secondo riguarda un oggetto o una lista di oggetti che
devono essere inseriti nella MAQUETTE.
A: In (A) creiamo una VOICE. Questa avrà la funzione di CANTUS FIRMUS della nostra
sequenza musicale, che significa che tutti gli oggetti che immetteremo nella maquette,
saranno sincronizzati con ogni nota della nostra VOICE.
B: Si è deciso di immettere sette eventi nella MAQUETTE, inclusa VOICE (A) che sarà
l’evento di partenza. L’albero ritmico
(? (((4 4) (1 (2 ((2 (1.0 4)) 1)) 1.0)) ((4 4) ((2 (-3 2)) (1 (2.0 2 1)) (1 (1.0 6))))))
C: Sette note verranno prelevate da un CHORD-SEQ (C) che è connesso al terzo input
di VOICE.
D-J: Dopo aver creato il CANTUS, riuniamo una lista di oggetti musicali con l’utilizzo di
list (J).
Il primo oggetto della lista sarà la nostra VOICE. La sequenza della
MAQUETTE sarà data dalla prima nota di VOICE (Do#).
(D-F-G) CHORD-SEQ sono differenti valutazioni del tutorial 11 (Costruzione
random di una sequenza I)
La MAQUETTE (E) proviene dal tutorial 28.
(H) CHORD-SEQ tutorial 17.
(I) Tutorial 12 con l’aggiunta di un’uscita.
K: In modo da ottenere da VOICE una lista in millisecondi degli onset è necessario
connettere VOICE ad un CHORD-SEQ (K). Questo rappresenta un metodo efficiente
per trascrivere una notazione ritmica in dati numerici. Si dirà che CHORD-SEQ eredita
dati dall’oggetto voice mediante l’utilizzo del metodo corretto.
Dopo la valutazione della MAQUETTE (L) gli oggetti saranno disposti agli onset
desiderati.
M: E’possibile salvare l’intera sequenza come MIDIFILE.
5.5 Introduzione alle tecniche non deterministiche
5
Si veda a questo proposito la definizione di regola in (Baroni, Dalmonte, Jacoboni 1999); laddove Baroni
deduce delle regole dall’analisi, il compositore definisce le proprie regole per realizzare un processo.
notes, however in certain circumstances there may be dissonaces…Can we formulate
this as a constraint problem as abstract as in counterpoint textbooks…” (Anders 2003).
Nell’implementazione di questa tecnica si fa quindi riferimento alla esplicita formulazione
di “regole della musica” riconducibili, in parte, a quanto teorizzato in (Baroni, Dalmote,
Jacoboni 1999). Tuttavia, dal punto di vista poietico qui considerato, il compositore
inventa e crea la propria grammatica6, cioè elabora strategie per la definizione di una
sintassi finalizzata all’emergenza di particolari unità morfologiche.7
Si rimanda alle seguenti pubblicazioni per un’approfondita analisi delle applicazioni
mediante tecniche non deterministiche (Bonnet Rueda 1999, Sandred 2000, Anders
2003, Truchet 2004).
CONCLUSIONI
Con la generazione di compositori nata a partire dalla fine degli anni 60, algoritmi e
procedure, sistemi interattivi e patches, diventano ormai parte integrante di una nuova
grammatica musicale, complementare alle possibilità sintattiche dei sistemi notazionali
tradizionali. Si pensa in particolare ai compositori legati al gruppo di lavoro e di ricerca
P.R.I.S.M.A. (Pedagogia e ricerca internazionale sui sistemi musicali assisti) (AAVV.
Prisma 01 2003) momento d’incontro fondamentale per chi desideri “promuovere
un’estetica ed una pratica che articolano logica matematica e libertà espressiva,
fondamenti del rapporto fra regola e invenzione”. In questo gruppo di ricerca si focalizza
l’attenzione sul rapporto tra analisi, formalizzazione e composizione per poi definire
nuove ipotesi di scrittura possibili attraverso il mezzo informatico8.
Nella presente dissertazione si è voluto limitare la complessità delle nuove “ipotesi di
scrittura” introducendo la disciplina della composizione musicale assistita dal computer,
6
Con il termine grammatica si fa riferimento ad una conoscenza esplicita delle regole della composizione.
Ad essa si contrappone una competenza strutturale-grammaticale a cui fa riferimento una conoscenza
intuitiva ma non esplicita delle regole: “E’necessario tornare alla distinzione fra sapere intuitivo e sapere
dichiarativo…Le conoscenze strutturali a cui fanno comunemente appello l’ascoltatore e il compositore non
sono necessariamente di carattere “dichiarativo”, anzi, di norma sono solo intuitive: un buon ascoltatore o un
buon compositore sanno ad esempio che cosa si deve intendere per “tema”, ma di solito non sanno definire
tale concetto. E’perciò opportuno distiguere la conoscenza intuitiva delle regole da quella concettualmente
esplicitata: chiameremo la prima con il termine di competenza strutturale (o anche grammaticale) e
riserveremo solo alla seconda il termine di grammatica in senso stretto. Diciamo che per grammatca
intendiamo l’esplicitazione concettuale della competenza grammaticale”. (Baroni, Dalmonte, Jacoboni 1999)
7
La composizione per modelli interattivi (CMI) è una libreria per OM realizzata dal compositore Jacopo
Baboni Schilingi in cui si definisce un sistema organizzato e formalizzato di regole dedotto dalla prassi dello
stesso compositore.
8
Ipotesi che, ricordiamo, comprendono la diversa possibilità di articolare oggetti e processi compositivi a
vari livelli di descrizione.
nella modalità in cui essa si manifesta in una delle sue più importanti realizzazioni
tecnologiche: OpenMusic.
La composizione musicale assistita dal computer rappresenta un momento di incontro
tra differenti discipline altamente specializzate, come la composizione musicale, la
musicologia computazionale e l’informatica musicale.
Si è cercato di esplicitare i paradigmi culturali, tecnici, tecnologici e scientifici,
soggiacenti a ciascun ambito, in modo da rilevare possibili percorsi comuni, percorsi che
concretizzano, si è detto, nella possibilità di uno studio comparato tra metodo della
scienza normale e necessità umanistiche.
Si crede siano molte le conseguenze che questo studio potrebbe avere all’interno delle
discipline musicologiche e scientifiche. Conseguenze a cui si è solamente fatto cenno, e
che necessitano di una approfondita ricerca e sistematizzazione teorica. Quest’ultima, in
particolare, non potrà prescindere dal considerare i numerosissimi spunti di riflessione
che offre il recentissimo testo del compositore Jacopo Baboni Schilingi, “La musica iper-
sistemica”, testo di pubblicazione troppo recente per essere integralmente considerato in
questa dissertazione. A questa sistematizzazione si dovrebbero accompagnare i
fondamentali contributi teorici a cui si è fatto continuamente riferimento, da Horacio
Vaggione a Curtis Roads, da Guerino Mazzola a Agostino DiScipio. Si delinea così, un
possibile contributo ad una teoria della forma musicale che integri i nuovi processi
trasformazionali come parte fondamentale e causale dello sviluppo di un nuovo
“repertorio delle morfologie”, per utilizzare la terminologia di (Baroni, Dalmonte, Jacoboni
1999). Si è fatto cenno a tutto questo evidenziando la natura poietica degli esempi
considerati.
Tuttavia rimangono aperti molti altri campi di studio a cui, per ovvi motivi contestuali, non
si è potuto fare cenno: quello analitico per esempio. La libreria per OpenMusic OMZN
sembra fornire un’accurata descrizione delle procedure analitiche che, nel corso del
Novecento, hanno fatto ricorso al numero come strumento d’indagine. Gli studi di
Moreno Andreatta http://recherche.ircam.fr/equipes/repmus/moreno rappresentano un
saldo riferimento per questo indirizzo analitico. In generale, il contributo informatico alla
disciplina analitica sembra anche fornire preziosi strumenti per uscire dall’impasse della
dialettica poietico-estesica. Il saggio di J.J.Nattiez, Il combattimento di Crono e Orfeo e
di Stéphane Roy, L’analyse des musiques électroacoustique: Modèles et proposition,
edizioni L’Harmattan 2003 sembrano, diremmo per necessità, approfondire le strategie
poietiche del compositore, mediante una continua reinterpretazione di strategie di
ascolto, quindi estesiche, indagate dal punto di vista psicoacustico e con il supporto del
mezzo informatico.
Riportiamo, un’ultima volta, le considerazioni di Giuseppe Longo:
“il calcolatore consente di (e obbliga a) scendere nei minuti particolari di
un’operazione e di osservare in filigrana i meccanismi e le strutture
soggiacenti altrimenti invisibili. L’esecuzione passo passo ci mette così di
fronte ai problemi che costituiscono quel “mare” che sta in mezzo tra il
“dire” e il “fare”.
Non pare affatto scontato ribadire che in tutta la dissertazione non si è fatto cenno alla
definizione di come comporre musica. La poietica (sinonimo di processo) e le sue
strategie rappresentano solo un primo momento di articolazione del materiale in cui
riconoscere l’emergenza di una idea già definita o, viceversa, riconoscere il germe di
una possibile idea ancora da strutturare. Nella terminologia del compositore e
musicologo Guerino Mazzola (Mazzola 2002) la poietica definisce l’insieme delle
strategie locali e globali per la definizione di topologie e di processi di trasformazione del
materiale9; altra cosa è la considerazione di una poetica globale che comprenda non
solo le prospettive deterministiche e non deterministiche10, ma anche livelli di
significazione più elevati come quelli narrativi culturali (Mazzola 2002).
E’ certo che la genesi della forma, a cui si è fatto cenno in questa dissertazione, riguardi
quindi esclusivamente gli aspetti quantitativi del comporre. Laddove il compositore
attribuisce un qualsiasi significato alla natura della sua creazione, se ne assume la piena
responabilità etica ed estetica. In particolare ciò vale per i processi deterministici che si
sono considerati in questa dissertazione11.
Al fascino immortale della macchina pensante, al progetto di un’Intelligenza Artificiale, il
senso comune sembra oggi rispondere con la banalizzazione dei processi automatici
9
In breve: la trasformazione si distingue dalla topologia in quanto “trasfigura” un materiale in modo tale da
non rendere riconoscibile la fonte da cui esso proviene. Una deformazione topologica mantiene inalterate
proprietà strutturali e percettive-gestaltiche tali da riconoscere un principio di identità e causalità (cfr.Baboni
Schilingi 2005) tra il materiale creato, quello generato e sviluppato. Il confine tra trasformazione e
deformazione topologica è essenzialmente culturale.
10
O del modo in cui queste vengono investite di una finalità semantica; ci si chiede: quale significato
estetico il compositore attribuisce ad una particolare procedura?
11
Sono molte, oggi, le applicazioni di informatica musicale che offrono una banalizzazione delle procedure
automatiche con semplici sonificazioni, di solito ritmico melodico, dei processi caotici e aleatori.
che di quel sogno furono la prima manifestazione. “Al cuore dell’avvenire prevedibile si
trovano il byte e il numero”, è la posizione critica dell’umanista George Steiner (Steiner
1989). Certamente, è possibile sostenere che, oggi, l’opinione corrente, sia talmente
mutata che è auspicabile, con Steiner, il sostegno ad una critica radicale del pensiero
“creativo” che si modelli esclusivamente su “schermi e modelli narrativi di algoritmi
formali”.
Ma l’ars subtilior musicale mai ha fatto parte del senso comune. L’eterna condizione di
musica reservata delle prassi artigianali qui considerate, hanno fatto della musica un
momento privilegiato del rapporto tra arte e scienza. E nel porre continuamente i loro
problemi che i compositori hanno contribuito alla realizzazione di un software complesso
come OpenMusic. Viceversa, è nel disporre di tale complessità che il compositore ha
reso possibile l’emergenza e la strutturazione di nuove possibilità formali. Tutto ciò,
naturalmente, è necessario desiderarlo affinchè possa esistere.
“E’importante in questo momento definire un rapporto equilibrato con le macchine,
musicali e non, che sempre più entrano a far parte della nostra vita. Non dobbiamo né
temerle né mitizzarle. Ciò che vi si immette sono solo idee, e solo se sono efficaci
funzioneranno…” (Luca Francesconi, L’uomo polifonico, in programma del Festival
Regola Gioco 1998)
Dal punto di vista musicale, si è detto a proposito dell’interazione, sulla quantità (prima
manifestazione di un processo ricorsivo), il compositore può intervenire per ottenere l’
espressione sensibile di una sua intenzione, di un suo desiderio. In questo “le arti
delineano e creano sistemi che sono analoghi a una condizione di esistenza che si
desidera” come vera e reale (Brün 1970).
E’questo desiderio che muove il pensiero critico, di chi compone e di chi sente ed
ascolta musica. E’quindi fondamentale non dimenticare la complessità delle interazioni
psicologiche che contribuiscono alla formazione dell’esperienza musicale “come
concretizzazione di intenzioni/progetti determinati, di significazioni culturali e di
comunicazioni sociali, che trovano le loro determinazioni finali solo in una dinamica
gamma di eventi e situazioni interpersonali”. (John R.Searle in Longo 1998)
Totalmente immerso in questa immensa rete di possibilità espressive è, per ora, ancora
l’uomo.
APPENDICE I
G A B
D E F
C
Enfin, la troisième colonne donne la fréquence (exprimée en Hertz) des notes, sur l'étendue du registre du piano.
Marc Battier, 1996
Midi Pitch Midi Pitch Frequency Midi Pitch Frequency Midi Pitch Frequency
Midi Pitch Midi Pitch Frequency Midi Pitch Frequency Midi Pitch Frequency
AAVV., Disputa sull’atto di creazione, a cura di Societas Raffaello Sanzio, Edizioni Casa
del Bello Estremo 1990
AAVV. I quaderni della Civica Scuola di Musica, Anno 6 n°13 Dicembre 1986
AAVV. I quaderni della Civica Scuola di Musica, Anno 14 n°26 Gennaio 1999
AA.VV. La composition assistée par ordinateur - Bilan 1992, les cahiers de l’IRCAM
1993
AAVV., Musical Signal Processing, edited by Curtis Roads, Stephen Travis Pope, Aldo
Piccialli, Giovanni De Poli, Swets&Zeitlinger Publishers 1997
Agon A.C.A., OpenMusic: Un langage visuel pour la composition musicale assisté par
ordinateur These de doctorat de l’Université Paris 6, 1998
Agon C., G. Assayag, “Outils informatiques pour la composition musicale assistée par
ordinateur: un état de l’art” in PRISMA 01 Euresis edizioni
Ariza C., Navigating the landscape of computer aided algorithmic composition systems:
a definition, seven descriptors, and a lexicon of systems and research 2005
www.flexatone.net/docs/nlcaacs.pdf
Assayag G., CAO: vers la partition potentielle, in La composition assistée par ordinateur
Bilan 1992, Les cahiers de l’IRCAM 1993
Assayag G., CAO: vers la partition potentielle, in La composition assistée par ordinateur
Bilan 1992, Les cahiers de l’IRCAM 1993
Azzaroni L., Canone infinito Lineamenti di teoria della musica, CLUEB 1997
Baboni Schilingi J., Composizione per Modelli Interattivi 2005 in I Quaderni della Civica
Scuola di Musica Anno 14, N°26 1999
Baboni Schilingi J., M. Malt Profile - Library for the control of melodic profiles, IRCAM
1998
Baroni M., L.Callegari, Musical grammars and computer analysis Olschki, Firenze 1984
Baroni M., Dalmonte R., Jacoboni C., Le regole della musica - Indagine sui meccanismi
della comunicazione, EDT 1999
Barriere J.B., C. Bourgois a cura di, Le timbre. Métaphore pour la composition, Christian
Bourgois, Paris, 1991
Boulanger R., Introduction to Sound Design in Csound in AAVV The Csound Book –
Perspective in software synthesis, sound design, signal processing, and programming,
Cambridge Massachussets, The MIT Press, 2000
Carozzo M., Cimagalli C., Storia della musica occidentale dalle origini al Cinquecento,
Armando Editore 2001
Ciammaichella M., Architettura in NURBS Il disegno digitale della deformazione, Testo &
Immagine 2002
Colombetti M., Appunti sul linguaggio Lisp dispense dal Dipartimento di elettronica e
informazione Politecnico di Milano 2003
Cormen T.H., C.E. Leiserson, R.L. Rivest, Introduzione agli algoritmi e strutture di dati,
McGraw Hill 2005
Desain P., H. Honing Lisp as a second language, composing programs and music 1997
http://recherche.ircam.fr/equipes/repmus/LispSecondLanguage/index.html
Desain P., H. Honing CLOSe to the edge? Advanced object-oriented techniques in the
representation of musical knowledge 1997
http://www.nici.kun.nl/mmm/papers/dh-97-e.html
Di Scipio A., “Kairos: sulla morfologia dinamica del suono e del tempo” in Sonus
materiali per la musica contemporanea Fascicolo 12 1994
Di Scipio A., a cura di, Teoria e prassi della musica nell’era dell’informatica, Giuseppe
Laterza Editore 1995
Di Scipio A., “Question concerning music technology” in Angelaki: journal of the
theoretical humanities 3:2 1998
Essl K. www.essl.at
Fober D., S. Letz, Les logiciels d’aide à la composition musicale, documento GRAME-
laboratoire de rechreche
Forte A., The structure of atonal music, Yale University Press, 1973
Galante F., N. Sani, Musica espansa Percorsi elettroacustici di fine millennio, Ricordi e
LIM Le Sfere 2000
Giomi F., “An Early case of algorithmic composition in Italy” in Organised Sound
1(3) 1999 Cambridge University Press
Gozza P., a cura di, La musica nella rivoluzione scientifica del Seicento, Il Mulino 1989
Lartillot O., Modélisation du style musical par apprentissage statistique: une application
de la théorie de l’information à la musique, DEA ATIAM Université Pierre et Marie Curie,
Paris VI, 2000
Lerdahl F., R. Jackendoff , A generative theory of tonal music, MIT Press, 1983
Levy S., Hackers gli eroi della rivoluzione informatica, ShaKe edizione underground
1996
Longo G. O., Il nuovo Golem, come il computer cambia la nostra cultura editori Laterza
1998
Maeda J., Maeda@Media , Thames & Hudson 2000
Mazzola G., The Topos of Music Geometric logic of concepts, Theory and Performance,
Birkhäuser 2002
Pearce M., D. Meredith, G. Wiggins, “Motivations and Methodologies for the automation
of the compositional process”, in Musica Scientiae 6(2) 2002
Piana G., Numero e figura - idee per un’epistemologia della ripetizione, CUEM
1999
Plebe A., Il linguaggio come calcolo - Dalla logica di Boole alle reti neuronali, Armando
editore 2004
Roads C., Esperienze di composizione assistita dal calcolatore in I profili del suono -
Musica Verticale 1987
Roads C., “Artificial Intelligence and Music “ Computer Music Journal, Vol. 4, No. 2,
Summer 1980
Roads C., The computer music tutorial, The MIT Press 1996
Ronchi della Rocca S., de’ Liguoro U., “Teoria della programmazione e -calcolo”, in Le
Scienze Quaderni n°121 2001
Solbiati A., Ah, lei fa il compositore? E che genere di musica scrive? Quattro saggi e
un’esperienza, Quaderni di cultura contemporanea n°3 2002 del Teatro Comunale di
Monfalcone
Stroppa M., Open Music omChroma - Paradigms for the high-level musical control of
sonic processing using omChroma, IRCAM 2000
Supper M., “A few remarks on algorithmic composition”, Computer Music Journal 25.1
2001
Touretzky D., LISP: A Gentle Introduction to Symbolic Computing, Harper & Row, New
York, N.Y., 1983
Truchet C., Constraintes, recherche locale et composition assisté par ordinateur Thèse
de doctorat de l’Universitè Pari 7 Denis Diderot UFR Informatique 2004
Trudu A., La “scuola” di Darmstad I Ferienkurse dal 1946 a oggi, Ricordi Unicopli 1992
Vaggione H., “Suono tempo oggetto sintassi: Verso un apprroccio multi-scala nella
composizione assistita da computer”, Musica/Realtà Anno XX, numero 60 1999
Verdi L., Organizzazione delle altezze nello spazio temperato, Diastema Analisi 1998
Wiggins G., A. Smaill, Musical knowledge: what can Artificial Intelligence bring to the
musicians?, documento del Department of Artificial Intelligence, University of Edinburgh
Winkler T. Composing Interactive Music, Techniques and Ideas Using MAX The MIT
Press 1999
Zanarini G., “Livelli irriducibili. Per una epistemologia della complessità” in Nuova Civiltà
dell Macchine N°1-2 1995 anche online
http://diea.ing.unibo.it/ncdm/articolo.php?id=407&numero=1-2&anno=1995