network musical performance: rtp midi lezione 15 programmazione midi (prof. luca a. ludovico)

Click here to load reader

Post on 01-May-2015

220 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

  • Slide 1
  • Network Musical Performance: RTP MIDI Lezione 15 Programmazione MIDI (Prof. Luca A. Ludovico)
  • Slide 2
  • Network Musical Performance Obiettivo: permettere a musicisti geograficamente distribuiti di interagire e suonare assieme via rete Problema: latenze (o ritardi) Insite nella produzione fisica del suono (velocit di propagazione nellaria v = 344 m/s) Introdotte dal sistema informatico, che si sovrappone a quelle di natura precedente Catena di acquisizione Propagazione dei pacchetti in rete Catena di riproduzione Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1)
  • Slide 3
  • Esempi Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1)
  • Slide 4
  • Esempi di latenza di rete Trasmissione di un pacchetto su rete dedicata Da Berkeley a Stanford Distanza: 40 miglia Latenza simmetrica: 2.1 ms Similitudine: musicisti a 0.72 m di distanza Da Berkeley a Caltech (California) Distanza: 375 miglia Latenza simmetrica: 14.2 ms Similitudine: musicisti a 4.88 m di distanza Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1)
  • Slide 5
  • Minimizzare i ritardi Cuffie e microfono minimizzano la propagazione del suono nellaria Schede audio con Direct Memory Access minimizzano i ritardi di buffering interni alla macchina Non usare compressione minimizza il ritardo algoritmico Per Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1)
  • Slide 6
  • Minimizzare i ritardi: aspetti fondamentali Formato dellinformazione inviata Compresso o non compresso? Audio o performance? Caratteristiche fisiche della rete e suo utilizzo Rete dedicata e banda disponibile Distanze Numero di host e congestionamento Protocollo di trasporto su rete: affidabilit o velocit? Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1)
  • Slide 7
  • Livello di trasporto: TCP vs UDP L'oggetto della comunicazione di TCP il flusso di byte mentre quello di UDP il singolo datagramma UDP non offre nessuna garanzia dell'arrivo dei datagrammi n sul loro ordine di arrivo (best effort) TCP garantisce la consegna ordinata dei dati, anche se al costo di un maggiore overhead meccanismi di acknowledgement e di ritrasmissione su timeout UDP invia solo i datagrammi richiesti dal livello applicativo TCP un protocollo orientato alla connessione per stabilire, mantenere e chiudere una connessione necessario inviare pacchetti di servizio i quali aumentano l'overhead di comunicazione. Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1)
  • Slide 8
  • La sfida di una Network Musical Performance Contesto: reti su cui non sia praticabile lo streaming audio, a causa della limitazione della banda, del congestionamento e delle garanzie sulla qualit del servizio. In una rete di questo genere, smarrimento di pacchetti e ritardi nella consegna sono inevitabili. Obiettivo: ricreare performance geograficamente distribuite 1.senza introdurre eccessivo ritardo (non tollerabile per un musicista) 2.senza generare artefatti o smarrire eventi di fondamentale importanza nella performance Soluzione: utilizzare UDP per veicolare informazioni di performance (e non audio) in real time Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1)
  • Slide 9
  • MIDI in tempo reale su rete Consentire performance live geograficamente distribuite con feedback per gli esecutori Far comunicare via rete (cablata o wireless) dispositivi per la produzione e la gestione del suono in formato MIDI Promuovere il MIDI a formato standard per la sonorizzazione su Internet in contesti caratterizzati da poca banda disponibile Aggiungere una sonorizzazione MIDI ad applicazioni multimediali quali web conference Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1)
  • Slide 10
  • RTP MIDI Sezione 15.1 Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1)
  • Slide 11
  • Il protocollo RTP (Real Time Protocol) Standard per trasportare stream multimediali su reti IP Adatto: per applicazioni interattive che richiedono bassa latenza per applicazioni di trasporto di contenuto Linformazione viene suddivisa in pacchetti Progettato per funzionare sia con UDP (interpretazione prevalente) sia con TCP E estensibile: sufficiente definire un nuovo formato per il payload Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1)
  • Slide 12
  • Formato del pacchetto RTP Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1)
  • Slide 13
  • Numerazione dei pacchetti e timestamp in RTP Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1) I pacchetti sono numerati con un valore incrementale a 16 bit. Il destinatario pu accorgersi dello smarrimento di un pacchetto quando rileva un gap nella sequenza dei numeri dordine. I pacchetti presentano un timestamp a 32 bit che rappresenta il primo istante di codifica del pacchetto. Il timestamp lavora in riferimento a una frequenza stabilita in fase di setup del protocollo. Esempio: fissata f = 44100 Hz, allistante t = 2 s corrisponde timestamp = 88200 Esempio: fissata f = 1 Hz, allistante t = 5 s corrisponde timpestamp = 5
  • Slide 14
  • Altri campi del pacchetto Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1) Altri campi riguardano la specifica RTP Ad esempio, il campo V (2 bit) serve a specificare la versione del protocollo in uso. Al momento, la versione pi recente la 2 (codifica 01 2 ) Documenti ufficiali: RFC 1889 (http://www.ietf.org/rfc/rfc1889.txt)http://www.ietf.org/rfc/rfc1889.txt RFC 3550 (http://www.ietf.org/rfc/rfc3550.txt)http://www.ietf.org/rfc/rfc3550.txt
  • Slide 15
  • RTP MIDI Proposta di protocollo standard per la trasmissione di messaggi MIDI in pacchetti RTP su reti non affidabili Problemi dovuti a latenza o smarrimento di pacchetti: introduzione di artefatti Transienti (ad esempio, smarrimento di un NoteOn) Indefiniti (ad esempio, smarrimento di un NoteOff o di un MIDI Control Change per il controller 7 Channel Volume) Obiettivo: minimizzare gli artefatti transienti ed eliminare quelli indefiniti, ma senza trasmissione di pacchetti di acknowledgment dal destinatario al mittente Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1)
  • Slide 16
  • Formato del payload RTP MIDI Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1) Il payload la parte estensibile di un pacchetto RTP. Ci che caratterizza il protocollo RTP MIDI il payload. Il formato del payload mappa uno stream di comandi MIDI su uno stream RTP 16 voice channels system commands In generale, il payload strutturato nel seguente modo: header MIDI list, ossia coppie (Delta Time, comando), eventualmente con codifica Running status Recovery Journal (opzionale)
  • Slide 17
  • Formato del payload RTP MIDI: campo LEN Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1) Il campo LEN ha lunghezza variabile e specifica la lunghezza della MIDI list. La sua lunghezza dipende dal flag B (vedi slide successiva) Se ha un valore non nullo, questo il numero di ottetti (ossia di gruppi di 8 bit = 1 byte) che compongono la MIDI list. Pu essere nullo, in tal caso la MIDI list vuota.
  • Slide 18
  • Formato del payload RTP MIDI: flag B Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1) Flag B se B = 0, allora LEN ha dimensione 4 bit e la MIDI list fatta di massimo 15 ottetti Modalit pensata per applicazioni interattive: un comando MIDI per pacchetto minimizza la latenza di codifica se B = 1, allora LEN ha dimensione 12 bit e la MIDI list fatta di massimo 4095 ottetti Modalit pensata per applicazioni di streaming, con molti comandi MIDI per pacchetto in modo da minimizzare gli overhead dellheader e del journal (vedi pi avanti)
  • Slide 19
  • Formato del payload RTP MIDI: MIDI list Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1) Strutturazione della MIDI list
  • Slide 20
  • Codifica dei tempi delta tra comandi MIDI Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1) Il tempo delta fa riferimento al timestamp base del pacchetto RTP La codifica dei tempi delta tra comandi in un singolo pacchetto una versione modificata della specifica SMF, usando da 1 a 4 ottetti per codificare valori su 32 bit. Un esempio di codifica e decodifica mostrato alla slide successiva. Tutti gli istanti iniziali dei comandi nel pacchetto n devono precedere il timestamp del pacchetto n+1. Codifica comoda per trascrivere da SMF, meno per convertire da temporizzazione implicita (ad es. i comandi che passano su cavo DIN)
  • Slide 21
  • Codifica dei tempi delta tra comandi MIDI Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1)
  • Slide 22
  • Formato del payload RTP MIDI: flag Z Programmazione MIDI (Prof. Luca A. Ludovico) 15. RTP MIDI (parte 1) Flag Z Se Z = 1, la MIDI list strutturata come una sequenza di coppie ordinate (Delta Time, Comando) se Z = 0, allora il primo campo Delta Time assente dalla MIDI list e il primo comando viene eseguito al tempo del timestamp RTP Il caso Z = 0 tipico quando si codifica un singolo comando MIDI per pacchetto. In tal caso sufficiente il timestamp.