UN SISTEMA APERTO PER LO SVILUPPO VERTICALE DI LINEE MELODICHE
Riassunto
Il seguente lavoro di tesi rientra nell'area di ricerca dell'Informatica
Musicale che si occupa della Composizione come modellazione e
generazione della musica algoritmicamente, con l'ausilio in particolar
modo di tecniche e metodi dell'Intelligenza Artificiale.
Il linguaggio utilizzato per la realizzazione del sistema é
il Common Lisp nella versione Allegro CL per ambiente Macintosh.
Il concetto musicale principale che si é cercato di formalizzare
é l'armonizzazione, intesa come combinazione simultanea
di piu' suoni, detti accordi, collegati tra loro secondo regole
di armonia.
L'armonia, infatti, al contrario della melodia che si costruisce
orizzontalmente, ha struttura verticale, e per questo si parla
di "sviluppo verticale di una linea melodica" per comprendere
con questa definizione piu' generale regole di armonizzazione
non sempre confacenti alla teoria classica tradizionale.
La formalizzazione del problema dell'armonizzazione é avvenuta
in realtà in due fasi successive determinate dalla realizzazione
di due sistemi distinti dei quali il secondo costituisce un ampliamento
e miglioramento del primo e quindi quello maggiormente dettagliato
e portato come progetto finale.
Considerando l'armonizzazione come un processo sequenziale, cioé
un insieme di istruzioni da eseguire in successione, il problema
si é prestato ad essere inquadrato come "processo
di ricerca in uno spazio di stati".
Nella prima versione del sistema si é concentrata l'attenzione
sull'implementazione dell'algoritmo di ricerca. Il tipo di regime
che si é rilevato piu' adatto é "backtracking
informato".
Si é trascurata invece la formalizzazione delle regole,
limitandosi a fornire al sistema definizioni per default di semplici
regole della teoria dell'armonizzazione tradizionale nell'ambito
del sistema tonale di scala maggiori e minori. (Teoria che ha
rappresentato la fonte principale di nozioni musicali da formalizzare
anche per il secondo progetto)
Cio' che si é ottenuto é un programma che armonizza
nota per nota una melodia data in accordi perfetti a quattro voci
corrispondenti ai quattro timbri fondamentali basso, tenore, contralto
e soprano, in una forma semplice e scolare.
Nella seconda versione del sistema un miglioramento qualitativo
nella descrizione e formalizzazione del problema dell'armonizzazione
é dovuto, in primo luogo, alla sua impostazione come Sistema
Basato su Regole.
In particolare si sono identificate le componenti computazionali
che caratterizzano un Sistema di Produzione, quali: database globale,
che descrive la situazione corrente di armonizzazione; regole
di produzione, che rappresentano le regole per il collegamento
degli accordi; strategia di controllo, basata su diversi criteri
di valutazione caratteristici del problema e su un algoritmo di
ricerca, anche in questo caso, di tipo "backtracking informato",
implementato come procedura ricorsiva.
Inoltre, e cio' lo identifica come "sistema aperto",
le regole per il collegamento armonico sono definibili interattivamente,
nei limiti delle specifiche di un semplice linguaggio, (definito
utilizzando la tecnica delle MACRO) la cui sintassi tiene conto
del tipo di informazioni musicali necessarie , e nei limiti di
un insieme di dati e funzioni predefinite che agiscono da "test"
o "azione" (cioé elaborazione) riconoscendo forme
e situazioni musicali (come : presenza in un accordo di voci
parallele, intervalli nascosti o paralleli, valutazione di distanze
armoniche e melodiche delle voci nell'accordo, valutazioni di
accentri metrici e note di fioritura, ecc).
E' cosi' possibile allo stato attuale di realizzazione modificare
la base di regole del sistema intervenendo a due livelli : un
livello in cui é possibile creare, modificare, eliminare,
aggiungere regole di armonizzazione tramite la sintassi del linguaggio
creato; un secondo livello in cui é possibile aggiungere
nuove funzioni per il riconoscimento di ulteriori situazioni musicali,
da utilizzare nelle regole stesse, la cui definizione pero', nella
versione attuale, é implementabile in Lisp. In ogni caso
l'implementazione globale del sistema non richiede ulteriori valutazioni
o compilazioni.
Si é inoltre raggiunto in buona parte l'obbiettivo di parametrizzabilità
delle informazioni musicali sia nelle specifiche per la definizione
delle regole (come la possibilità di costruire gli accordi
secondo pattern basati sui rapporti numerici verticali di una
voce con l'altra) che nell'assegnamento di parametri (come la
scala di armonizzazione , anch'essa definita tramite un pattern
basato sui rapporti numerici orizzontali tra le note ad essa appartenenti;
l'assegnamento del'estensione delle note per ogni voce; l'assegnamento
dei gradi della scala sui quali é consentito armonizzare;
la selezione delle regole stesse di armonizzazione).
Tuttavia alcune limitazioni sono state imposte per semplicità
nella realizzazione attuale, come ad esempio il vincolo di creare
sempre accordi a quattro voci.
L'elaborazione del sistema puo' essere riassunta nel seguente
modo.
L'input principale é costituito dalla linea melodica intesa
come sequenza di note ognuna descritta in altezza, durata, dinamica.
(Piu' altre informazioni necessarie alle specifiche Midi)
Il sistema ha bisogno inoltre come dati di input, l'assegnazione
dei parametri come la scala, l'estensione delle voci, i gradi
di armonizzazione ammessi, e naturalmente la selezione delle regole
di armonizzazione precedentemente definite. Il tutto costituisce
una specie di ambiente o logica di armonizzazione in cui la strategia
di controllo attua le sue scelte.
Gli assegnamenti di tali parametri sono gestiti graficamente da
menu, finestre, dialoghi secondo l'interfaccia grafica propria
del sistema Macintosh.
Quindi il sistema organizza le varie informazioni secondo una
rappresentazione interna (basata sulla struttura dati STRUCTURE
del Lisp) che rappresenta il database globale del sistema.
A questo punto é in grado di applicare le regole selezionate
a una melodia data, ossia alla sua rappresentazione interna di
database globale, secondo la strategia di controllo.
I criteri di scelta su cui si basa la strategia sono ripartiti
in varie informazioni e valutazioni.
In primo luogo é bene spiegare che per il sistema esistono
due tipi di regole di armonizzazione : le REGOLE-COLLEGAMENTO
che rappresentano le regole di produzione vere e proprie che sono
applicate al database globale corrente, cioé alla situazione
di armonizzazione corrente, e ne provocano la modifica; le REGOLE-CAMBIO-ACCORDO
invece hanno una specie di funzione di MetaRegole rispetto alle
prime in quanto, dalla valutazione di situazioni musicali piu'
generali come aspetti ritmici e melodici della melodia (es. accenti
metrici) determinano l'applicazione delle REGOLE-COLLEGAMENTO.
Quindi le REGOLE-CAMBIO-ACCORDO forniscono un criterio di scelta
delle regole di produzione.
Anch'esse sono definibili interattivamente secondo la sintassi
del linguaggio specificato, anche se nella versione attuale sono
stati previsti dei tipi predefiniti che sono determinanti nell'ordine
di attivazione nel sistema di tali regole.
Un altro criterio di scelta delle REGOLE-COLLEGAMENTI é
implicito nella loro classificazione che avviene in base al grado
che sono destinate collegare. Infatti il processo di armonizzazione
é stato impostato in modo che la scelta del grado successivo
e la creazione dell'accordo corrispondente avviene sempre in base
al grado precedente. Quindi se l'ultimo accordo realizzato é
di grado G, le REGOLE-COLLEGAMENTI attivate per la creazione dell'accordo
successivo saranno solo quelle classificate come G, poiché
collegano il grado G con un qualsiasi altro grado.
Il risultato dell'elaborazione del sistema é una sequenza
di accordi a quattro voci che costituisce l'armonizzazione della
melodia di partenza.
Chiaramente il sistema é in grado di riconoscere e segnalare
situazioni in cui le regole a disposizione non sono sufficienti
per ottenere l'armonizzazione.
La versione attuale del sistema non ha certamente la pretesa di
essere definitiva e completa, sia dal punto di vista implementativo
che dal punto di vista piu' generale delle scelte fatte per la
modellazione della teoria compositiva di armonizzazione.
Come implementazione é ancora molto carente nelle modalità
di definizione delle regole; la sintassi del linguaggio per la
loro definizione é molto semplice e fornisce all'utente
poche e limitate possibilità di descrivere e utilizzare
nozioni musicali.
Sarebbe auspicabile fornire strumenti di definizione piu' flessibili
e nello stesso tempo a un livello piu' alto di implementazione
del Lisp stesso, come invece é necessario per ora almeno
per quanto riguarda le funzioni che fungono da test e azione.
Cio' richiederebbe un analisi piu' approfondita dei concetti musicali
necessari, a un livello sempre di maggior dettaglio.
Anche l'algoritmo di ricerca e i criteri di scelta delle regole
potrebbero essere piu' sofisticati sia tecnicamente che qualitativamente
se si arricchisse il sistema di maggiori informazioni musicali.
Indubbiamente un tale sistema richiederebbe anche un interfaccia
piu' sofisticata e flessibile.
Come impostazione della modellazione, il problema puo' essere
affrontato a vari livelli di difficoltà e complessità
a cui corrispondono ovviamente risultati differenti qualitativamente.
Se ci si limita a formalizzare la teoria e le sue regole negli
aspetti piu' tecnici ed essenziali, la soluzione fornita puo'
essere corretta, ma quasi certamente scolare, ripetitiva, fredda.
Cio' che in parte si é ottenuto con la prima versione del
sistema.
Se invece si vuole allargare l'orrizzonte delle possibilità
integrando anche aspetti che nella pratica reale sono determinanti
nella scelta armonica, come aspetti ritmici e melodici, che dipendono
da molteplici fattori, non per ultimi quelli creativi e artistici,
allora la formalizzazione del sistema e delle regole diviene piu'
problematica e quasi certamente deve venire a dei compromessi.
Si puo' comunque affermare che i risultati ottenuti dal sistema
attuale sono soddisfacenti sia tecnicamente che musicalmente