Relatore: Dott. F. Minazzi Studente:Brugnoli Massimiliano
Correlatore: Prof G. Haus Mat. N¡ 370872
RIASSUNTO TESI
STUDIO E REALIZZAZIONE DI UN CONVERTITORE SEGNALE AUDIO/M.I.D.I. BASATO SU DSP 56000.
Il presente lavoro realizza un sistema per l'analisi in tempo
reale di una molteplicit di segnali provenienti da uno strumento
musicale.
A tale scopo ci si avvale di strumenti informatici quali una scheda
D.S.P. Digidesign modello Audiomedia II (con processore Motorola
56001), costruita per il campionamento dei segnali audio, ed un
computer Macintosh modello Quadra 950; quest'ultimo comunica i
risultati dell'analisi, mediante il protocollo di comunicazione
standard M.I.D.I., ad un expander, che una periferica musicale
avente il compito di riprodurre attraverso uno speaker gli eventi
sonori corrispondenti ai messaggi M.I.D.I. ricevuti.
Fig.1- Schema generale del sistema di pitch detection.
Il collegamento dello strumento musicale alla scheda D.S.P.
ha richiesto la realizzazione di una apposita interfaccia hardware
che ha il compito di campionare i singoli segnali (operare cio
una discretizzazione in ampiezza e nel tempo dei segnali analogici,
trasformandoli in una serie di dati numerici) provenienti da un
trasduttore (pick-up) esafonico e poi di interfogliarli generando
un unico flusso di dati. Quest'ultima operazione stata
dettata dalla necessit di trasportare sei segnali paralleli
in una unica linea, poich unico l'ingresso alla scheda
D.S.P. Il flusso di dati interfogliati costruito secondo
le specifiche del formato di interscambio S/P-DIF, naturalmente
il D.S.P. conosce l'ordine con cui arrivano i dati che
stato semplicemente stabilito come segue: campione segnale 1,
campione segnale 2, campione segnale 3, campione segnale 4, campione
segnale 5, campione segnale 6, campione segnale 1...,il pattern
si ripete.
La realizzazione del software ha richiesto una consistente parte
di codice di basso livello scritta in Assembler 56000 che viene
caricata sulla RAM del D.S.P. al momento dell'esecuzione, ed una
parte minore di codice ad alto livello scritta in C++ utilizzando
l'ambiente di sviluppo Symantec.
Come si pu intuire dalla Figura 1, lo scopo finale
quello di consentire ad un esecutore di pilotare in tempo reale
la strumentazione elettronica M.I.D.I. eseguendo la sua performance
su di uno strumento musicale convenzionale, in grado cio
di produrre solo segnali analogici.
Il cuore del sistema chiamato pitch detector (letteralmente
rilevatore di altezza) ed responsabile del processo di
analisi del segnale, nel nostro caso un micro-programma
assembler, che implementa un algoritmo basato sull'analisi delle
caratteristiche secondarie del segnale.
Questo metodo opera nello stesso dominio di origine del segnale
(dominio del tempo) evitando in tal modo trasformazioni onerose
dal punto di vista computazionale, inoltre esso si basa sulla
valutazione di particolari caratteristiche che sono indipendenti
dall'inviluppo del segnale stesso conferendo al metodo robustezza
ed elasticit e rendendolo facilmente adattabile a vari tipi
di segnale.
L'elaborazione viene effettuata su sezioni del segnale di 20 msec
l'una (300 campioni a 14700 Hz di frequenza di campionamento),
inizialmente viene calcolata una soglia adattiva che evidenzia
solo determinati picchi, dai quali vengono ricavate particolari
misure che caratterizzano la loro forma (energia, rapporto ampiezza/energia,
estensione temporale, e posizione temporale) e che sono chiamate
caratteristiche secondarie.
In tal modo viene costruito un vettore in cui ogni elemento
costituito dalla n-pla di caratteristiche secondarie che descrivono
il singolo picco, il vettore ha quindi una lunghezza pari al numero
di picchi contenuti in quella particolare porzione di segnale.
Il passo successivo consiste nel ricercare i due picchi che hanno
il maggiore grado di somiglianza stabilendo cos" il periodo
del segnale, il quale espresso in numero di campioni; questo
dato infine viene usato per effettuare una ricerca in una look-up
table contenete la corrispondenza tra i periodi e i codici M.I.D.I.
di pitch.
Per quanto concerne la localizzazione temporale degli eventi si
parte dall'osservazione che l'estensione della nota prodotta dallo
strumento pi
grande di quella della finestra di analisi, pertanto l'algoritmo
possiede un automa a stati finiti in grado di concatenare i risultati
dei frame precedenti (storia), al fine di posizionarsi in uno
stato corretto. I possibili stati sono: nota attiva (Note On),
ossia l'artista sta suonando una particolare nota; nota disattivata
(Note Off), regione di silenzio, di rumore o gap esistenti tra
note successive); evento di nota nuova (New Note Event) caratterizzato
dall'interruzione della nota corrente a causa dell'esecuzione
di una nuova nota mentre la precedente era ancora attiva. é
chiaro che l'automa deve essere in grado di 'seguire' in tempo
reale l'intenzione musicale espressa dall'esecutore.
Il punto critico del progetto risiede nella gestione dei tre seguenti
processi concorrenti di comunicazione: acquisizione dei campioni
nella memoria del D.S.P. tramite un servizio di interrupt; comunicazione
dei risultati dalla scheda all'host computer tramite un servizio
di interrupt richiesto dal D.S.P.; spedizione immediata dei dati
alla porta seriale collegata ad una apparecchiatura M.I.D.I. in
ascolto, tale operazione scatena un interrupt al gestore della
porta.
Il D.S.P. e la C.P.U. dell'host computer lavorano in modalit
reale parallela e poich quest'ultimo mono processore
esso non in grado di gestire in modo corretto due interrupt
contemporanei (uno di ricezione dati dal D.S.P. che pu giungere
in qualsiasi istante, ed uno di spedizione dati alla porta M.I.D.I.),
pertanto stato implementato un semaforo che gestisce la
regione critica di transito dei dati nella memoria dell'host.
é importante sottolineare che durante la stesura del codice
in assembler si cercato di sfruttare il pi
possibile il parallelismo di esecuzione di cui capace il
processore Motorola 56001 (versione per sviluppo software del
chip 56000) grazie alla sua architettura Dual-Harvard caratterizzata
da una memoria programma e doppia memoria dati gestite indipendentemente
l'una dalle altre con bus dedicati, in tal modo si dispone ancora
di un ampio margine di potenza di calcolo per ulteriori sviluppi
futuri che possono ad esempio integrare nell'algoritmo una analisi
della dinamica o della timbrica del segnale.