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.