Modelli di riconoscimento automatico dellinterpretazione musicale a partire

  • Slides: 21
Download presentation
Modelli di riconoscimento automatico dell’interpretazione musicale a partire dal MIDI Tesi di Laurea in

Modelli di riconoscimento automatico dell’interpretazione musicale a partire dal MIDI Tesi di Laurea in Informatica di Rosario Squillante Relatore: prof. Goffredo Haus Correlatore: dott. Ing. Luca Andrea Ludovico a. a. 2006/07

3 livelli per la musica • • 1) livello fisico 2) livello strutturale (MIDI)

3 livelli per la musica • • 1) livello fisico 2) livello strutturale (MIDI) – Eventi sonori • 3) livello notazionale

3 livelli per la musica • • 1) livello fisico 2) livello strutturale (MIDI)

3 livelli per la musica • • 1) livello fisico 2) livello strutturale (MIDI) – Eventi sonori • 3) livello notazionale

Problematica • Passare dal livello 1 al livello 3 possibile per segnali semplici* •

Problematica • Passare dal livello 1 al livello 3 possibile per segnali semplici* • Passare dal livello 2 al livello 3 obiettivo del nostro lavoro *Manuel Davy, Simon J. Godsill and J´erˆome Idier “Bayesian Analysis of Western Tonal Music”, Journal of the Acoustical Society of America (JASA), Volume 119, Number 4, pp. 2498 -2517, April 2006.

Problematica (2) • Generale (ottenere informazioni interpretabili partendo da informazioni univoche) • Specifica (ottenere

Problematica (2) • Generale (ottenere informazioni interpretabili partendo da informazioni univoche) • Specifica (ottenere informazioni musicali partendo da informazioni MIDI)

MIDI vs Notazione musicale • I messaggi MIDI identificano univocamente cosa e come suonare

MIDI vs Notazione musicale • I messaggi MIDI identificano univocamente cosa e come suonare e per quanto tempo • La notazione musicale, pur nella sua ricchezza e rigorosità, da origine ad illimitate diverse esecuzioni

MIDI vs Notazione musicale Altri problemi del MIDI rispetto alla notazione – Ambiguità –

MIDI vs Notazione musicale Altri problemi del MIDI rispetto alla notazione – Ambiguità – Limiti numerici – Mancanze di alcune informazioni

Metodologia Funzioni dell’applicazione scritta in C++. NET con MFC e con namespace STD File

Metodologia Funzioni dell’applicazione scritta in C++. NET con MFC e con namespace STD File MIDI Modello interpretativo Struttura dati Partitura In XML Parser

L’Output MX L’MX è una grammatica di XML studiata per descrivere in maniera esauriente

L’Output MX L’MX è una grammatica di XML studiata per descrivere in maniera esauriente un brano musicale. Layer di MX 1. 2. 3. 4. 5. 6. general music logic a. spine b. los (logically organized symbols) c. layout structural notation performance audio <!DOCTYPE mx SYSTEM “mx. dtd"> <mx> <general> … </general> <logic> <spine> … </spine> <los> PUNTO DI INSERIMENTO DELLA PARTITURA </los> </logic> … </mx>

L’Output MX Sub-Layer los • descrive gli oggetti in partitura Sub-Layer spine • contiene

L’Output MX Sub-Layer los • descrive gli oggetti in partitura Sub-Layer spine • contiene la funzione di mappatura spaziotemporale

La struttura dati • Programmazione modulare – Tante classi quanti sono gli elementi e

La struttura dati • Programmazione modulare – Tante classi quanti sono gli elementi e layer di MX • Al loro interno le strutture adatte al singolo caso • Stampa su file del relativo elemento

La struttura dati MXMaintitle. h class CMXMovement_title { CString movement_title; MXEvent. h class CMXEvent

La struttura dati MXMaintitle. h class CMXMovement_title { CString movement_title; MXEvent. h class CMXEvent { CString id; unsigned long start; int timing, hpos; MXSpine. h class CMXSpine { vector <CMXEvent*> m_Events;

La struttura dati MXPart. h #include "MXMeasure. h" #include "MXVoice_list. h" #include "MXStaff_id. h“

La struttura dati MXPart. h #include "MXMeasure. h" #include "MXVoice_list. h" #include "MXStaff_id. h“ typedef map <long, class CMXMeasure*> MEASURE_ID_MAP; class CMXPart { CString id; class CMXVoice_list m_voice_list; vector <CMXMeasure*> m_measure; MEASURE_ID_MAP map_measure; CMXStaff_id* staff_ref;

Il modello interpretativo hex Status byte Data bytes 80 Chan 1 Note Off Note

Il modello interpretativo hex Status byte Data bytes 80 Chan 1 Note Off Note number (0 -127) Note Velocity (0 -127) 90 Chan 1 Note On “ “ C 0 Chan 1 Program Change Patch (0 -127) N/a F 2 Song Position Pointer LSB MSB Delta time 00 00 60 60 C 1 91 90 05 2 E 43 40 4 C 20 Program Change Note On

Il modello interpretativo la traduzione in tre passaggi 1. Inserimento diretto dei dati MIDI,

Il modello interpretativo la traduzione in tre passaggi 1. Inserimento diretto dei dati MIDI, opportunamente interpretati (note, battute ecc. ) 2. Visitiamo l’albero in profondità per verificare ed inserire i dati mancanti o errati seguendo le regole della teoria musicale (pause, battute vuote, segnature, legature ecc. ) 3. Ordinamento spazio temporale degli eventi

Il modello interpretativo • Elementi della notazione musicale ottenuti – Accollature e pentagrammi –

Il modello interpretativo • Elementi della notazione musicale ottenuti – Accollature e pentagrammi – Note, alterazioni, pause – Segnature – Battute – Durate – Dinamica* – Cambi segnatura* – Legature di valore

L’applicazione MIDI 2 MX

L’applicazione MIDI 2 MX

L’applicazione MIDI 2 MX

L’applicazione MIDI 2 MX

Esempio 1 – Chopin preludi n° 2 e n° 20, op. 28

Esempio 1 – Chopin preludi n° 2 e n° 20, op. 28

Esempio 2 – Beethoven fur Elise

Esempio 2 – Beethoven fur Elise

Conclusioni e sviluppi Una ricerca in continua evoluzione • Risultati ottenuti – Scrittura di

Conclusioni e sviluppi Una ricerca in continua evoluzione • Risultati ottenuti – Scrittura di file MX automatica, sfruttando l’archivio MIDI – Un modello interpretativo valido – Un codice modulare e dalle buone prestazioni • Sviluppi e miglioramenti – Aggiunta o modifica del parser MIDI – Completamento ed eventuale miglioramento del modello interpretativo – Evoluzione dell’MX – Layout grafico con SVG o con altre librerie