MIDI FILES & MIDI TIME CODE

Похожие документы
Musical Instrument Digital Interface (MIDI)

Il MIDI: Musical Instrument Digital Interface. MIDI - Vincenzo Lombardo

DAE Digital Audio Experience

Musica e MIDI. Musical Instrument Digital Interface

MIDI & COMPUTER. Corso di Informatica Applicata alla Musica. Prof. Goffredo Haus Relatore: Maurizio Longari

Il MIDI: Musical Instrument Digital Interface

STANDARD MIDI FILE (SMF)

PROTOCOLLI DI COMUNICAZIONE MIDI OSC

Somma di numeri binari

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

Lo Standard MIDI. Corso di Informatica Applicata alla Musica. Prof. Goffredo Haus Relatore: Maurizio Longari

APPUNTI DI TECNOLOGIA INFORMATICA Rappresentazione delle informazioni nel mondo digitale

Informatica Generale 02 - Rappresentazione numeri razionali

Rappresentazione di numeri relativi (interi con segno) Rappresentazione di numeri interi relativi (con N bit) Segno e Valore Assoluto

La codifica del testo

Notazione posizionale. Codifica binaria. Rappresentazioni medianti basi diverse. Multipli del byte

Il sistema binario: bit e Byte Codifica del testo Il Byte come U.d.M. dell'informazione Multipli del Byte

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni

Codifica dell Informazione

4.3: La Codifica dei Suoni e dei Video

Codifica dei Numeri. Informatica ICA (LC) 12 Novembre 2015 Giacomo Boracchi

Codifica dell Informazione

la trasmissione è regolata solamente dall algoritmo per il controllo del flusso prima di inviare l ACK.

Codifica binaria. Rappresentazioni medianti basi diverse

Audio e musica. Livelli di rappresentazione. La rappresentazione della musica. Dove si posiziona il MIDI. MIDI - Musical Instrument Digital Interface

Tipi di linea. Tipi di Linea - R.Virili 1

Il MIDI Musical Instrument Digital Interface

Archiviazione dei dati audio

Laboratorio di Architettura degli Elaboratori A.A. 2014/15 Programmazione Assembly

Lezione n.3 LIVELLO TRASPORTO

Configurazione delle interfacce di rete

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Detail ELETTRONICA INDUSTRIALE

TW-IDU-NODE-2 IOT Protocollo di comunicazione Versionamento FW

LabVIEW parte II. Ing. Gianfranco Miele November 3, 2010

Costanti e Variabili

FUNZIONI BOOLEANE. Vero Falso

La rappresentazione delle informazioni

Rappresentazione e Codifica dell Informazione

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Specifica dei Requisiti di Sistema Sottosistema di Terra SSC. Allegato 4 Specifica del Telegramma

UD 3 PROTOCOLLO ISO-OSI

Esercitazioni su rappresentazione dei numeri e aritmetica. Interi unsigned in base 2

La codifica dei suoni

Pag. 1. La Rappresentazione e la Codifica delle informazioni (parte 2) Tipi di dati. Informatica Facoltà di Medicina Veterinaria

Architettura del calcolatore (Seconda parte)

Introduzione alla programmazione in linguaggio C

Транскрипт:

MIDI FILES & MIDI TIME CODE Corso di Informatica Applicata alla Musica Prof. Goffredo Haus Relatore: Maurizio Longari

MIDI FILES! L'esigenza di fare uno standard per i MIDI File Standard MIDI File Il MIDI Studio SMPTE e MIDI Time Code

L'esigenza di fare uno standard per i MIDI File Proliferazione di strumenti MIDI Mancanza di un formato di file standard per lo scambio di MIDI Songs. Ogni produttore di sequencer aveva sviluppato un proprio formato, legando di fatto gli utenti ai propri prodotti.

1988- International MIDI Association (IMA) pubblica lo Standard MIDI Files 1.0 Formato binario.! I MIDI file contengono una o più sequenze MIDI in cui ogni singolo dato è temporizzato.! Si possono memorizzare intere song, tracce, informazioni sul tempo metronometrico, sul tempo musicale, stringhe di testo e altre informazioni di carattere descrittivo.!

Formato a chunk! Intestazione dei chunk di 8 byte:! 4 caratteri (4 char) che definiscono il tipo di chunk! 32 bit (longint) per esprimere la lunghezza in byte del chunk stesso (eclusi gli 8 byte di intestazione)!

Header Chunk e Track Chunk! MThd <lunghezza dei dati dello header> <dati dello header> MTrk <lunghezza dei dati della track> <dati della track> MTrk <lunghezza dei dati della track> <dati della track>..

Header Chunk! <Header Chunk> = <chunk type><length><format><ntrks><division> <chunk type> = MThd 4 byte <length> = 6 4 byte <format> = 0, 1 o 2 2 byte <ntracks> = n. di traccie 2 byte <division> = formato delta time 2 byte

Il campo division:! metrical time! time-code-based time. Se il bit 15, il bit più alto, è uguale a zero, i bit dal 14 allo 0 rappresentano il numero di tick in cui viene divisa una nota da un quarto.! Se division vale 96, per rappresentare un intervallo di un ottavo fra due eventi successivi dovrò scrivere nel delta-time la metà del numero dei tick che rappresentano una nota da un quarto, cioé 48.

Se il bit 15 è uguale a 1 i delta-time faranno riferimento a come si suddivide il secondo, inteso come unità di tempo, in modo consistente con SMPTE e MIDI Time Code:! I bit da 14 a 8 contengono i valori -24, -25, -29, -30 (espressi in complemento a due) che corrispondono agli standard SMPTE e MTC (con il -29 si identifica il formato 30 drop frame) e rappresentano il numero di frame per secondo. I bit da 7 a 0 (espressi normalmente) rappresentano la risoluzione all'interno di un frame, per esempio 4 cioé la risoluzione del MIDI Time Code.

Track Chunk! <Track Chunk> = <chunk type> <length> <MTrk event>+ <chunk type> = MTrk 4 byte <length> = lunghezza della track in byte 4 byte <MTrk event> = <delta-time> <event> <delta-time> = temporizzazione evento <event> = messaggio MIDI

Il delta Time! Rappresenta l ammontare di tempo che deve trascorrere prima dell inizio del prossimo evento, se due eventi sono contemporanei si utilizza un delta time pari a 0. Questa quantità viene rappresentata in lunghezza variabile, ovvero con una metodologia che rappresenta i numeri utilizzando 7 bit per byte. Ogni byte nella rappresentazione a lunghezza variabile ha il bit più significativo posto ad un valore fissato in modo da poterlo riconoscere. Tutti i byte hanno questo bit posto a 1 tranne l ultimo il quale ha il bit settato a zero.

Il delta Time! Tutti gli altri bit sono utilizzati per contenere i bit che compongono il numero da rappresentare. Es: il numero 00000080 Hex viene rappresentato in lunghezza variabile con 81 00 infatti se guardiamo la rappresentazione in bit:

Eventi! <event> = <MIDI event> <sysex event> <meta-event> <MIDI event> = qualsiasi channel message, con running status <sysex event> = F0 <length> <System Exclusive bytes> <meta-event> = FF <type> <length> <bytes> informazioni di tipo descrittivo

Meta-event:! "Text Event", "Copyright Notice", "Sequence/ Track Name"! Meta-event Set Tempo (FF 51 03 tt tt tt):! specifica la velocità metronometrica e permette infine di dare un valore assoluto nel tempo ai nostri eventi MIDI. (numero di microsecondi per nota da un quarto)! Di solito, negli SMF di tipo 1, tutte le informazioni di tempo (metronometrico e musicale) vengono sistemate nella traccia 1. Se non specificato si assume di 120 bpm.! indica che il tempo metronometrico è cambiato.

MIDI Studio Sincronizzazione software con apparecchi analogici tramite il codice SMPTE

SMPTE Codice SMPTE: HR:MM:SS:FF FF frame per second: 24: Film 25: Video Europea (PAL, SECAM) 30 drop: Video a colori Americana e Giapponese (NTSC) 30: Video bianco e nero Americana e Giapponese

MIDI Time Code (MTC) Il MTC Full Message (10 byte)! F0 7F <chan> 01 <sub-id 2> hr mn sc fr F7 F0 7F = Real Time Universal System Exclusive Header <chan> = 7F (messaggio destinato all'intero sistema) 01 = <sub-id 1>, 'MIDI Time Code' <sub-id 2> = 01, Full Time Code Message hr = ora e tipo di SMPTE: 0 yy zzzzz yy = type 00 = 24 Frames/Second 01 = 25 Frames/Second 10 = 30 Frames/Second (drop frame) 11 = 30 Frames/Second zzzzz = ora (00->23) mn = Minuti (00-> 59) sc = Secondi (00-> 59) fr = Frames (00-> 29)

MIDI Time Code (MTC) Il MTC Quarter Frame Message (2 byte)! F1 <message> F1 = System Common Status Byte <message> = 0nnn dddd dddd = 4 bit di dati associabili al messaggio. nnn = Messagge Type: 0 = Frame Count LS 1 = Frame Count MS 2 = Seconds Count LS 3 = Seconds Count MS 4 = Minutes Count LS 5 = Minutes Count MS 6 = Hours Count LS 7 = Hours Count MS and SMPTE Type

MIDI Time Code (MTC) Il MTC Quarter Frame Message (2 byte)! Il Quarter Frame Message fornisce il clock al sistema e deve essere pensato come un gruppo di 8 messaggi che insieme riescono a definire una precisa locazione SMPTE.! Il tempo si considera "running" dopo aver ricevuto il primo QFM dopo il Full Message.! Se il device in ascolto viene attivato mentre il codice è in running, non trovando il Full Message deve attendere la ricezione di una serie completa di 8 QFM per potersi agganciare. Il device che legge arriverà a determinare la posizione in SMPTE spostata di due frame (il tempo di invio complessivo di 8 QFM) e si dovrà sincronizzare ai due sub frame successivi. F1 0X F1 1X F1 2X F1 3X F1 4X F1 5X F1 6X F1 7X