Relatore: Prof. G. Haus
Correlatore: Dott. A. Ballista
Matr.: 352018
Studente: Frazzini Giuseppe
Riassunto di tesi di laurea in Scienze dell'Informazione
Anno Accademico 1994/95
Conversione automatica di processi audio analogici in processi MIDI
Un interprete, posto di fronte ad una partitura musicale, molto
difficilmente (potremmo dire forse mai) produrrà una esecuzione
corrispondente in modo assoluto a quanto scritto sulla carta.
Il lavoro svolto in questo progetto, svolto presso il Laboratorio
di Informatica Musicale (L.I.M) del Dipartimento di Scienze dell'Informazione
dell'Università degli Studi di Milano, rappresenta un primo
passo verso il riconoscimento e la formalizzazione della interpretazione
musicale. Con tecniche di elaborazione del segnale digitale vengono
estratti dai file audio i seguenti parametri per ciascuna nota:
- altezza, - durata, - intensità.
che vengono poi tradotti in accordo con il protocollo MIDI (Musical
Instruments Digital Interface), scelto in quanto rappresenta sicuramente
il linguaggio di comunicazione musicale di maggior diffusione.
A causa delle limitazioni intrinseche del MIDI si è deciso
di produrre anche una rappresentazione grafica di quanto analizzato,
utilizzando un sistema a griglia simile a quello di molti sequencer
commerciali e, per motivi di puro spazio fisico disponibile su
un monitor di un calcolatore, ci si è limitati al confronto
di due sole esecuzioni alla volta.
L'applicazione Syrinx può essere considerata una sorta
di traduttore da file audio a Standard MIDI File. I due file audio
in ingresso devono essere nel formato Sound Designer II, campionati
con una frequenza di 44100 Hz, a 16 bit e possono essere sia monofonici
sia stereofonici (i file stereo vengono ridotti a mono dalla applicazione
mediante una semplice semisomma dei due campioni contemporanei).
L'elaborazione del segnale audio digitalizzato viene effettuata
senza uscire dal dominio del tempo attraverso l'applicazione della
funzione di autocorrelazione :
f(m) = (1/N) ?n=0..N-1 [x(n)w(n)] [x(n+m)w(n+m)]
con 0 = m = M0 - 1
che, applicata ad una finestra ampia 10 millisecondi (441 campioni
nel nostro caso) della forma d'onda analizzata, presenta il massimo
assoluto all'inizio ed il primo massimo relativo ad una distanza
corrispondente al periodo della frequenza fondamentale presente
nella finestra. Prima però di essere passato alla funzione
di autocorrelazione il segnale viene pretrattato attraverso tre
funzioni non lineari che hanno lo scopo di esaltare la frequenza
fondamentale presente in esso. Gli output di queste funzioni non
lineari possono essere correlati in dieci modi diversi; sperimentalmente
si é visto che una delle correlazioni fornisce i migliori
risultati e quindi viene utilizzata per default, ma l'utente volendo
ha la possibilità di cambiare questa scelta.
Una volta ottenuto un vettore delle altezze e dell'energia, i
dati ottenuti vengono organizzati in una struttura a lista in
cui ciascun elemento è costituito da otto campi:
- un puntatore all'elemento successivo della lista;
- un puntatore all'elemento precedente della lista;
- l'altezza della nota;
- la durata della nota (in millisecondi);
- il momento di inizio della nota;
- il momento della fine della nota;
- un puntatore ad una lista con l'andamento dell'energia lungo
la durata della nota;
- un puntatore ad una lista con l'andamento delle deviazioni dalla
frequenza base lungo la durata della nota.
Le informazioni così organizzate vengono visualizzate sullo schermo attraverso due griglie che possono rappresentare le altezze, il volume oppure le deviazioni dalle altezze teoriche. Ciascuna griglia ha la possibilità di scorrere e di essere dilatata/contratta indipendentemente dall'altra in modo da facilitare il confronto fra le due esecuzioni.
Scandendo la lista precedentemente costruita vengono anche
generati gli Standard MIDI File delle due esecuzioni analizzate.
Viene quindi prodotto un messaggio di Note On ogni volta che si
passa ad un nuovo elemento della lista ed il valore di velocity
associato al Note On viene calcolato in base all'energia presente
nel segnale dopo la fase transitoria dell'attacco. Poichè
si è visto sperimentalmente che moduli sonori diversi presentano
diverse funzioni dell'energia in funzione del valore di key velocity
e che queste funzioni seguono andamenti che non si possono definire
né lineari né esponenziali, si è scelto di
mappare i valori di energia e di key velocity in modo lineare
lasciando poi all'eventuale sintetizzatore utilizzato per la riproduzione
del MIDI file il compito di interpretare secondo la sua logica
questi valori. A questo punto è sorto il problema che per
il flauto, come per tutti gli strumenti a fiato, il valore di
velocity all'inizio non è assolutamente sufficiente per
descrivere la dinamica della nota in quanto l'interprete, aumentando
o diminuendo la pressione del fiato, può aumentare o diminuire
l'intensità all'interno di una singola nota. Il protocollo
MIDI fornisce, oltre al valore di key velocity, solamente un controller
che va ad agire sul volume generale dello strumento (limitazione
dovuta evidentemente al fatto che il linguaggio MIDI è
nato prevalentemente per far comunicare tra loro strumenti a tastiera)
per cui si è deciso di usare uno fra i controller non definiti
"immagazzinando" l'informazione ottenuta in attesa che
sia possibile in futuro tradurla più efficacemente. Per
rappresentare le deviazioni dalla frequenza base della nota è
invece presente il controller del pitch-bend il cui valore viene
quindi modificato con la risoluzione temporale decisa dall'utente.
Come esempio di applicazione di Syrinx si è scelto di mostrare
il confronto fra una esecuzione meccanica di un brano, l'esecuzione
da parte di un interprete e l'esecuzione prodotta secondo l'insieme
di regole interpretative elaborate dai musicologi svedesi Friberg,
Fryden e Sundberg. Il brano scelto è la Allemande della
"Suite per flauto solo" dello autore francese del '900
Jean Francaix, e precisamente le battute dalla numero 35 alla
numero 40.
L'analisi può essere estesa da strumenti monofonici a strumenti
polifonici, e quindi a organici strumentali, costringendo però
all'utilizzo di tecniche per l'elaborazione del segnale digitale
più raffinate della funzione di autocorrelazione utilizzata
finora. Sicuri miglioramenti potranno poi venire dall'adozione
di un formato di codifica dell'informazione musicale simbolica
più completo del protocollo MIDI, che permettano la completa
traduzione di tutte le informazioni ricavate dall'analisi del
segnale audio.