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