Lezione 18 MIDI e XML Programmazione MIDI (Prof. Luca A. Ludovico)

Slides:



Advertisements
Presentazioni simili
I Namespace Mario Arrigoni Neri.
Advertisements

Introduzione al DTD Mario Arrigoni Neri.
Introduzione ad XML Mario Arrigoni Neri.
Lezione 8 Anno accademico Titolare corso: Prof. Costanza Torricelli
HTML+XML= XHTML Il ritorno al futuro del WEB A cura di Barbara Lotti.
Unit à D1 Archivi: i concetti fondamentali. Obiettivi Conoscere le diverse organizzazioni logiche degli archivi Conoscere le operazioni di base che si.
A. FERRARI Alberto Ferrari. L'HyperText Markup Language (HTML) (traduzione letterale: linguaggio di marcatura per ipertesti) è un linguaggio usato per.
1 Introduzione ad XML. 2 Problemi con SGML Complesso da comprendere ed utilizzare Non è pensato per la rete: mancano link ipertestuali e specifiche grafiche.
Esercitazione su SMF Lezione 14
Document Type Definition per XML Presentazione 8.1 Informatica Generale (Prof. Luca A. Ludovico)
Introduzione a MakeMusic Finale
Sommario Nelle lezioni precedenti abbiamo introdotto tutti gli elementi che formano un particolare tipo di linguaggio logico, denominato linguaggio predicativo.
DTD Laurea Magistrale in Informatica Chapter 03 Modulo del corso Thecnologies for Innovation.
Query OQL e XQUERY a confronto
G. Mecca – – Università della Basilicata Tecnologie di Sviluppo per il Web XML: Dettagli e Approfondimenti versione 2.0 Questo lavoro è
Numerico-Vespignani, Informatica per le scienze umanistiche, Il Mulino, La rappresentazione dellinformazione testuale e i linguaggi di codifica.
XML Prof. Alfredo Pulvirenti. XML XML (eXtensible Markup Language) è un meta linguaggio. Può essere definito come un insieme di regole e convenzioni che.
1 Scoprire e capire HTML Creare semplici pagine WEB Maria Laura Alessandroni.
XML Prof. Barbara Pernici Politecnico di Milano. Introduzione a XML.
XML Prof. Barbara Pernici Politecnico di Milano aggiornato 10/12/2002.
XHTML Danilo Deana. XHTML2 XHTML (eXtensible HyperText Markup Language) XHTML è una riformulazione di HTML come applicazione XML. Utilizzando XHTML è
Componenti di un documento HTML Danilo Deana. Componenti di un documento HTML 2 Elementi HTML comprende elementi per rappresentare paragrafi, elenchi,
LHTML è un linguaggio per computer comprensibile da parte dei browser Web Le pagine Web sono scritte in HTML LHTML è necessario sul Web per formattare.
XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.
Architettura del World Wide Web
Un’introduzione a HTML (I)
Introduzione e nozioni fondamentali di sintassi
Linguaggi di markup1 LINGUAGGI DI MARKUP. Linguaggi di markup2 Documenti su Internet Internet permette (tra laltro) di accedere a documenti remoti In.
XML per documenti e applicazioni transazionali su Internet Alessio Saltarin Progetto XML Factory.
Lezione 2 Programmare in ASP
Esercizio 1 Convertire il seguente DTD (esercizio 1 sui DTD) in XML Schema:
XSLT Trasformazioni XSL Ing. Luca Sabatucci. XSLT Uno dei vantaggi principali nell'utilizzo dell'Extensible Markup Language è la facilità con cui si possono.
Informatica Umanistica A.A. 2009/2010 eXtensible Markup Language (XML)
Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.
Linguaggi di codifica.
HyperText Markup Language 17-23/6/08 Informatica applicata B Cristina Bosco.
Creare pagine web Xhtlm. Struttura di una pagina.
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
Il Linguaggio HTML “Profe, ma io a casa l’HTML non ce l’ho!“
HTML HyperText Markup Language Linguaggio per marcare un’Ipertesto
Hyper-Text Mark-Up Language
Introduzione a XML applicazioni in open archives Azalea III Incontro di Formazione, Roma 2-3 febbraio 2004.
Rappresentazione delle durate Lezione 7 Programmazione per la Musica | Prof. Luca A. Ludovico.
PHP - PHP: Hypertext Preprocessor. Introduzione PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è un linguaggio di scripting general-purpose.
Informatica Umanistica A.A. 2007/2008 LEZIONE 4 eXtensible Markup Language (XML) INTRODUZIONE.
Gli standard web W3C standard HTML CSS “…a set of standardized best practices for building web sites, and a philosophy of web design and development.
XHTML Corso linguaggi per il web a.s. 2011/2012 ITIS A. Righi – Corsico Relatore – Aldo Guastafierro.
HTML I tag HTML (parte 1). I tag HTML  I comandi che il browser interpreta  Etichette per marcare l’inizio e la fine di un elemento HTML  Formato e.
Laboratorio di XHTML a.s – 2012 Prof. Aldo Guastafierro.
Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi  Lezione 02: 06/03martedi  Lezione 03: 13/03martedi  Lezione 04:
Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido 
IV D Mercurio DB Lezione 2
HTML e CSS C. Gena, C. Picardi, J. Sproston HTML e CSS.
A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language.
Fondamenti di Markup Languages: Richiami di HTML © 2005 Stefano Clemente Stefano Clemente
Capitolo 3 … XML: eXtensible Markup Language  Introduzione  Logical Structures  Document Type Definition  Namespace  XML - Schema …
Cenni Su SGML, HTML, XML SGML (Standard Generalized Markup Language) è il padre di tutti i linguaggi "Markup" – Lo svantaggio è la "pesantezza" dei suoi.
Creazione di pagine per Internet Brevi note a cura di Emanuele Lana
Laboratorio di XHTML e CSS
2 Indice Un esempio Che cosa è A cosa serve Confronto con HTML Punti di forza La sua struttura.
XML (eXtensible Markup Language). XML è stato progettato per descrivere dati HTML è stato progettato per visualizzare dati XML (eXtensible Markup Language)
Il linguaggio XML per la rappresentazione dei dati Lo Extensible Markup Language o XML è stato concepito da un gruppo di lavoro del World Wide Web Consortium.
1 Il linguaggio XML per la rappresentazione dei dati Lo Extensible Markup Language o XML è stato concepito da un gruppo di lavoro del World Wide Web Consortium.
Transcript della presentazione:

Lezione 18 MIDI e XML Programmazione MIDI (Prof. Luca A. Ludovico)

Compenetrazioni tra MIDI e XML MIDI nasce nei primi anni ‘80, XML alla fine degli anni ’90. Quali compenetrazioni? Applicazioni affrontate nel corso: Midnam Meccanismo per memorizzare e importare patch per dispositivi MIDI esterni MIDI XML di Recordare Descrizione di un file di partitura MIDI in XML Livello Performance di IEEE 1599 Informazioni di performance collegabili a eventi musicali Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Introduzione XML (acronimo di eXtensible Markup Language) è un metalinguaggio di markup, ovvero un linguaggio di marcatura che definisce un meccanismo sintattico per definire altri linguaggi marcatori. Il nome indica quindi che si tratta di un linguaggio marcatore (markup language) estensibile (eXtensible) in quanto permette di creare tag personalizzati. Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

I tag in XML (1) In un documento XML possiamo “inventare” i tag La scelta dei tag può essere effettuata a seconda delle informazioni che interessa rappresentare. <?xml version="1.0"?> <PatchBank Name="User" > <MIDICommands> <ControlChange Control="0" Value="80" /> <ControlChange Control="32" Value="0" /> </MIDICommands> </PatchBank>

I tag in XML (2) I tag si dividono in: Tag di apertura (start tag): <MIDICommands … > Tag di chiusura (end tag): </MIDICommands> Tag vuoti (empty tag): <ControlChange … /> Nell’esempio alla slide precedente: La prima linea del documento (opzionale) identifica lo stesso come un XML ed indica anche la versione Il primo tag <PatchBank> identifica la radice del documento. In linguaggio naturale: “questo documento descrive un banco di patch”. I restanti tag specificano il contenuto tramite una serie di comandi MIDI L’ultimo tag </PatchBank> conclude la descrizione

<nometag>contenuto</nometag> Elementi Un elemento XML è tutto ciò che è compreso tra un tag di apertura (incluso) ed il corrispettivo tag di chiusura (incluso) Tra i due tag si trova il contenuto dell’elemento, che può essere: Simple content: se il contenuto è un semplice testo. Esempio: l’elemento <Model>Yamaha MU-80</Model> Element content: se il contenuto è costituito da altri elementi. Esempio: l’elemento <MIDICommands> Mixed content: se contiene testo inframezzato da altri elementi. Empty content: se il contenuto dell’elemento è vuoto Esempio: l’elemento <ControlChange></ControlChange> Per un elemento vuoto la coppia apertura/chiusura può essere sostituita da un tag vuoto Esempio: <ControlChange /> <nometag>contenuto</nometag> Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Esempio <MIDICommands> <ControlChange Control="0" Value="80" /> <ControlChange Control="32" Value="0" /> … </MIDICommands> Start tag Markup Content End tag Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Esempio Un elemento può contenere: Altri elementi (detti sotto-elementi) <MIDICommands> <ControlChange Control="0" Value="81" /> <ControlChange Control="32" Value="0" /> </MIDICommands> Testo semplice <Manufacturer>Roland</Manufacturer> Nessun contenuto Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Modello ad albero Gli elementi in XML sono in relazione tra di loro e queste relazioni determinano il modello del documento Il documento è organizzato come un albero, in cui la relazione di contenimento tra elementi è equivalente alla relazione nodo-sottonodo Es: <Author> e <MasterDeviceNames> sono sotto-elementi di <MIDINameDocument> L’entità che non è sottoentità di nessuno (es: <MIDINameDocument>) è l’elemento radice (root element) <?xml version="1.0"?> <MIDINameDocument> <Author>RayGriffin</Author> <MasterDeviceNames> <Manufacturer>Roland</Manufacturer> <Model>JV-2080</Model> </MasterDeviceNames> </MIDINameDocument> Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Attributi Gli attributi sono informazioni aggiuntive che possono essere inserite negli elementi XML per completarne o arricchirne l’informazione. Vengono inseriti solo nei tag di apertura (o nei tag vuoti) Sintassi: coppie nome = “valore” Il valore degli attributi è racchiuso o tra apici singoli o tra apici doppi Nome attributo deve essere univoco nell’elemento. <nometag attr1="val1" attr2="val2" ...>...</nometag> <ControlChange Control="0" Value="80" /> Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Attributi o elementi? Spesso le stesse informazioni possono essere rappresentate sia tramite attributi che tramite (sotto)elementi. Sottoelementi Attributi <note> <title>Appuntamento</title> <to>Luca</to> <from>Carlo</from> <message>ABC123</message> </note> <note title="Appuntamento"> <note title="Appuntamento" from="Carlo" to="Luca"> ABC123 Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Attributi o elementi? La scelta tra attributi o elementi (quando si progetta il linguaggio) è soggettiva, tuttavia le due soluzioni non sono in genere equivalenti. Problemi con gli attributi: Non possono contenere valori multipli <parent name=“Luca”><child>Marco</child><child>Mario</child></parent> Sono difficilmente espandibili (aggiunta di sottoelementi) Non possono descrivere strutture <book><author><name>..</name><surname>..</surname></author></book> E’ opportuno usare gli attributi per informazioni essenziali per l’elemento, come ad esempio gli identificativi (ID) Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Esempi <Patch Number="120" Name="Unearthly" ProgramChange="119" /> OK <Patch Number="120" Name="Unearthly" Number="119" /> NO, perché non posso avere più attributi con identico nome nello stesso elemento. <Patch Number="119,120" Name="Unearthly" /> Sintatticamente OK, però è difficile effettuare il parsing dei singoli valori.

Regole sintattiche Tutti i tag aperti devono essere chiusi. I tag devono essere correttamente annidati (innestati, nested) quindi l’ordine di chiusura deve essere inverso rispetto a quello di apertura. Corretto Non corretto <Manufacturer>Roland</Manufacturer> <Model /> <Manufacturer>Roland <Model>JV-2080 Corretto Non corretto <MasterDeviceNames><Model> JV-2080 </Model></MasterDeviceNames> </MasterDeviceNames></Model> Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Regole sintattiche Ogni documento XML deve avere uno ed un solo elemento radice. Se la rappresentazione dei dati implica l’uso di più nodi radice, è necessario sostituire il nodo radice scelto con uno di significato più generale. Ad esempio, se è necessario rappresentare tanti elementi <libro>…</libro>, l’elemento radice sarà più propriamente <biblioteca>…</biblioteca> contenitore di sottoelementi <libro>…</libro> Corretto Non corretto <PatchBank Name="Preset B" > <MIDICommands> <ControlChange Control="0" Value="81" /> <ControlChange Control="32" Value="1" /> </MIDICommands> </PatchBank> <PatchBank Name="Preset C" > Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Regole sintattiche I valori degli attributi devono sempre essere inclusi tra apici XML è “case sensitive”, cioè sensibile a maiuscole/minuscole In XML gli spazi vengono preservati I commenti possono essere inseriti tra i segni <!-- e --> Corretto Non corretto <PatchBank Name="Preset C"> <PatchBank Name='Preset C'> <PatchBank Name=Preset C> Corretto Non corretto <Model>JV-2080</Model> <model>JV-2080</Model> <MODEL>JV-2080</Model> <!-- Questo è un commento XML --> Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Esercitazione Sezione 16.1 Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Editing di XML con XML Copy Editor Editor XML Editing di XML con XML Copy Editor Software scaricabile da http://xml-copy-editor.sourceforge.net/ Ausili grafici (e non) per la generazione di sintassi XML ben formata Autocompletamento Colorazione dei tag Indentazione e pretty-print Verifica di Well-formedness, o correttezza della forma (e di Validity: vedi prossima lezione) Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Esempi di errori XML <MIDIMessages> <MIDIMessage>NoteOn <MIDIMessage>NoteOff</MIDIMessage> <MIDIMessage>Control Change</MIDIMessage> </MIDIMessages> <MIDIMessage>Control Change</MIDIMessage></MIDIMessage> Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Esempi di errori XML <MIDIMessages> <MIDIMessage>NoteOn</MIDIMessage> <MIDIMessage>NoteOff</MIDIMessage> <MIDIMessage>Control Change</MIDIMessage> </MIDIMessages> Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Esempi di errori XML <MIDIMessages> <MIDIMessage>NoteOn</MIDIMessage> <MIDIMessage>NoteOff</MIDIMessage> <MIDIMessage>Control Change</MIDIMessage> </midimessages> <MIDI Messages> <MIDI Message>NoteOn</MIDI Message> <MIDI Message>NoteOff</MIDI Message> <MIDI Message>Control Change</MIDI Message> </MIDI Messages> Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Esempi di errori XML <MIDIMessages> <MIDIMessage>NoteOn</MIDIMessage> <MIDIMessage>NoteOff</MIDIMessage> <MIDIMessage>ControlChange</MIDIMessage> </midimessages> <MIDIMessage channel='1'>NoteOn</MIDIMessage> <MIDIMessage channel="1">NoteOff</MIDIMessage> <MIDIMessage channel=1>ControlChange</MIDIMessage> <MIDIMessage>ControlChange</MIDIMessage channel="1"> </MIDIMessages > Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Esempio Obiettivo: rappresentare sequenze di messaggi MIDI non temporizzati Informazioni da codificare: Solo messaggi NoteOn e NoteOff, con relativo canale, pitch e velocity A titolo di esempio, si presenti un NoteOn e un NoteOff di un pitch 60 (C5) con velocity 100 In questo contesto, non avendo vincoli imposti sul formato da adottare, esistono numerose varianti, tutte ugualmente accettabili Utilizzo di soli elementi Utilizzo di elementi vuoti e attributi ... Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Rappresentazione alternativa 1 <messaggi_MIDI> <channel1> <note_on> <pitch>60</pitch> <velocity>100</velocity> </note_on> <note_off> </note_off> </channel1> <channel2> ... </channel2> ... </messaggi_MIDI> Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Rappresentazione alternativa 2 <messaggi_MIDI> <channel num="1"> <noteOn pitch="60" velocity="100" /> <noteOff pitch="60" velocity="100" /> ... </channel> <channel num="2"> ... </channel> </messaggi_MIDI> Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Rappresentazione alternativa 3 <MIDIMessages> <MIDIMessage> <StatusByte>NoteOn ch. 1</StatusByte> <FirstDataByte>Pitch C5</FirstDataByte> <SecondDataByte>Velocity 100</SecondDataByte> </MIDIMessage> <StatusByte>NoteOff ch. 1</StatusByte> </MIDIMessages> Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML

Rappresentazioni alternative 5 e 6 <MIDIMessages> <MIDIMessage StatusByte="NoteOn" Channel="1" Pitch="C5" Velocity="100" /> <MIDIMessage StatusByte="NoteOff" Channel="1" Pitch="C5" Velocity="100" /> </MIDIMessages> <MIDIMessage> <StatusByte>10010000</StatusByte> <FirstDataByte>00000010</FirstDataByte> <SecondDataByte>00110101</SecondDataByte> </MIDIMessage> <StatusByte>10000000</StatusByte> Programmazione MIDI (Prof. Luca A. Ludovico) Lezione 18. MIDI e XML