La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Esercitazione su SMF Lezione 14 Programmazione MIDI (Prof. Luca A. Ludovico)

Presentazioni simili


Presentazione sul tema: "Esercitazione su SMF Lezione 14 Programmazione MIDI (Prof. Luca A. Ludovico)"— Transcript della presentazione:

1 Esercitazione su SMF Lezione 14 Programmazione MIDI (Prof. Luca A. Ludovico)

2 4D D B FF FF C0 00 FF FF 2F 00 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F 00 Analisi pratica di un breve file MIDI Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

3 Come segmentare uno SMF in chunk Esiste sicuramente uno e un solo chunk di intestazione (MThd), di lunghezza complessiva pari a 14 byte e posizionato allinizio del file Possono esistere uno o più chunk di traccia (MTrk), di lunghezza variabile e delimitati da [4D B … FF 2F 00] –Per i file MIDI di tipo 0 vi è un unico chunk MTrk, per il tipo 1 e 2 ne deve esistere almeno uno Il chunk MThd e il/i chunk MTrk riempiono completamente il file MIDI: nel file non vi sono byte non appartenenti ad uno di essi. Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

4 4D D B FF FF C0 00 FF FF 2F 00 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F 00 Ricerca dei chunk di header e di traccia Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

5 4D D B FF FF C0 00 FF FF 2F 00 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F 00 Come si capisce fin dove si estende? –E un chunk di lunghezza fissa –La sua lunghezza è comunque scritta nellheader del chunk –Dal byte successivo inizia il primo MTrk, riconoscibile dalla sequenza 4D B Analisi del chunk MThd Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

6 Analisi del chunk MThd Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF 4D … 4D : intestazione di 4 byte del MIDI Track header chunk : questi 4 byte informano che seguiranno 6 byte di dati 00 01: questi 2 byte informano che il file MIDI è di tipo 1 –E vero? Si contano le tracce, ossia i chunk MTrk. Verifica con viewer esadecimale 00 02: questi 2 byte informano che dopo il MThd seguiranno 2 blocchi di traccia MTrk –E vero? Verifica con viewer esadecimale 01 80: informazione che specifica la risoluzione in impulsi per quarto di nota. Risulta: PPQN = =

7 4D D B FF FF C0 00 FF FF 2F 00 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F 00 Come si capisce fin dove si estende? –E un chunk di lunghezza variabile, ma si può leggere il valore nellheader del chunk. Attenzione: aprendo il file con un viewer esadecimale, è scritto in base 16!!! –Si conclude con il meta di fine traccia FF 2F 00, seguito da un nuovo MTrk Analisi del primo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

8 Come segmentare i contenuti di MTrk Lintero contenuto di un chunk MTrk (per contenuto si intende la parte successiva allheader) è un susseguirsi di coppie [tempo delta, evento] I tempi delta vanno interpretati proseguendo la lettura dei byte finchè non si trova il byte che ha il bit più significativo posto a 0 –In molti casi il tempo delta si esprime su un unico byte; un caso particolare è il tempo delta posto a 00, per indicare simultaneità o occorrenza immediata Gli eventi devono essere segmentati secondo le regole di decodifica degli eventi MIDI o dei metaeventi tipici degli SMF –Ciascuno di essi ha una sua lunghezza, variabile da evento a evento ma predeterminata (ad es. i messaggi Note On e Note Off occupano 3 byte, il messaggio Program Change ne occupa 2, il metaevento Segnatura di tempo 7) Quello che segue una coppia [tempo delta, evento] è una nuova coppia Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

9 … 4D B FF FF C0 00 FF FF 2F 00 … 00: Tempo Delta. Questo byte posto a 0 stabilisce che il successivo evento rispetto al precedente si verificherà dopo 0 PPQN, quindi senza alcun ritardo FF : evento Meta di segnatura di tempo –03: Numeratore = 3 –02: Denominatore = 2^02 = 4 –60: 96 tick MIDI in una nota da ¼ –08: 8 note da 1/32 in una nota ¼ Segnatura di tempo per le misure è ¾ Analisi del primo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

10 … 4D B FF FF C0 00 FF FF 2F 00 … 00: Tempo Delta pari a 0 PPQN FF C0: evento Meta di tempo metronomico –0927C0 16 = = n; –Per definizione n = ( x d / 4) / bpm –Sono noti i valori di n e di d è possibile calcolare il bpm –bpm = 100 pulsazioni al minuto La velocità metronomica del brano MIDI è impostata a 100 bpm Analisi del primo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

11 … 4D B FF FF C0 00 FF FF 2F 00 … 00: Tempo Delta pari a 0 PPQN FF : evento Meta di tonalità –01: 1 diesis in chiave (Sol Maggiore/Mi minore) –00: la tonalità è maggiore Tonalità del brano è Sol Maggiore Analisi del primo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

12 … 4D B FF FF C0 00 FF FF 2F 00 … 00: Tempo Delta pari a 0 PPQN FF 2F 00: fine del blocco di traccia Analisi del primo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

13 4D D B FF FF C0 00 FF FF 2F 00 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F 00 Come si capisce fin dove si estende? –E un chunk di lunghezza variabile, ma si può leggere il valore nellheader del chunk. 2A 16 = –Si conclude con il meta di fine traccia FF 2F 00 Analisi del secondo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

14 … 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F 00 00: Tempo Delta pari a 0 PPQN B : Evento MIDI Control Change n. 7 (Volume) Ctrl Change (Ch. 1) Channel Volume Value: 100 Analisi del secondo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

15 … 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F 00 00: Tempo Delta pari a 0 PPQN B0 0A 30: Evento MIDI Control Change n. 10 (PanPot) Ctrl Change (Ch. 1) PanPot Value: 48 Analisi del secondo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

16 … 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F 00 00: Tempo Delta pari a 0 PPQN B0 5B 40: Evento MIDI Control Change n. 91 (Riverbero) Ctrl Change (Ch. 1) Riverbero Value: 64 Analisi del secondo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

17 … 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F 00 00: Tempo Delta pari a 0 PPQN B0 5D 10: Evento MIDI Control Change n. 93 (Chorus) Ctrl Change (Ch. 1) Chorus Value: 16 Analisi del secondo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

18 … 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F 00 00: Tempo Delta pari a 0 PPQN C0 04: Evento MIDI Program Change n. 4 (Piano Elettrico) Program Change (Ch.1) Value: 4 Analisi del secondo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

19 … 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F 00 00: Tempo Delta pari a 0 PPQN : Evento MIDI Note On, pitch 69 (La centrale), velocity Note On (Ch.1) Pitch: 69 Velocity: 100 Analisi del secondo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

20 … 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F : Tempo Delta pari a PPQN (1) (0) = La risoluzione al quarto era = , quindi è TΔ della minima : Evento MIDI Note Off, pitch 69 (La centrale), velocity Note Off (Ch.1) Pitch: 69 Velocity: 100 Analisi del secondo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

21 … 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F : Tempo Delta pari a PPQN (1) (0) = La risoluzione al quarto era = , quindi è TΔ della croma : Evento MIDI Note On, pitch 66 (Fa#), velocity Note On (Ch.1) Pitch: 66 Velocity: 100 Analisi del secondo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

22 … 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F : Tempo Delta pari a PPQN (1) (0) = La risoluzione al quarto era = , quindi è TΔ della croma : Evento MIDI Note Off, pitch 66 (Fa#), velocity Note Off (Ch.1) Pitch: 66 Velocity: 100 Analisi del secondo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

23 … 4D B A 00 B B0 0A B0 5B B0 5D C FF 2F 00 00: Tempo Delta pari a 0 PPQN FF 2F 00: Fine del chunk di traccia Analisi del secondo chunk MTrk Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

24 Visualizzazione nel sequencer Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF Legenda Griglia: linea scura quarto

25 ESERCITAZIONE Sezione 14.1 Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

26 4D C0 4D B F B0 7B FF 2F 00 Esercizio di analisi: 14_esercizio.mid Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

27 4D C0 4D B F B0 7B FF 2F 00 Legenda: Header dellMThd Header dellMTrk Lunghezza dellMThd Lunghezza dellMTrk Identificazione dei chunk e della loro lunghezza Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF

28 Analisi del chunk MThd Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF 4D C0 … 4D : intestazione di 4 byte del MIDI Track header chunk : questi 4 byte informano che seguiranno 6 byte di dati sino alla fine di questo chunk header 00 00: questi 2 byte informano che il file MIDI è di tipo 0 –E vero? Si contano le tracce, ossia i chunk MTrk : questi 2 byte informano che dopo il MThd seguirà 1 blocco di traccia MTrk –E vero? Verifica con viewer esadecimale 03 C0: informazione che specifica la risoluzione in impulsi per quarto di nota. Risulta: PPQN = 03C0 16 =

29 MTrk: suggerimenti Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF 4D C0 4D B F B0 7B FF 2F 00 Legenda: Note On Note Off Tempo Delta Controller Fine traccia Le frecce mettono in corrispondenza laccensione e lo spegnimento della stessa nota

30 Qualche osservazione Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF Considerando i soli nibble (4 bit) più significativi del byte di stato degli eventi MIDI, alcuni valori sono standard dal punto di vista dellinterpretazione della performance: –9x indica un messaggio NoteOn –8x indica un messaggio NoteOff –Bx indica un control change –Cx indica un program change –… Ovviamente, essendo messaggi di canale, il secondo nibble non è standard Come si riconoscono le coppie di apertura/chiusura di un evento musicale? Il NoteOff (8x) corrisponde a un precedente NoteOn (9x) ove la x è la stessa e il primo byte di dati è uguale.

31 Visualizzazione nel sequencer Programmazione MIDI (Prof. Luca A. Ludovico) 14. Esercitazione su SMF Legenda Griglia: linea scura quarto; linea chiara s edicesimo Colori: mattone ch. 1; oliva ch. 2


Scaricare ppt "Esercitazione su SMF Lezione 14 Programmazione MIDI (Prof. Luca A. Ludovico)"

Presentazioni simili


Annunci Google