Massimiliano Pancini LIM-Laboratorio di Informatica Musicale Il formato NIFF Massimiliano Pancini LIM-Laboratorio di Informatica Musicale
Il formato NIFF Cos’e’ il NIFF ?
Il formato NIFF MIDI Files: Descrizione simbolica dell’informazione musicale rivolta all’esecuzione N.I.F.F. (Notation Interchange File Format)
POVERO DI INFORMAZIONI: GRAFICHE E MUSICOLOGICHE Il formato NIFF MIDI Files: Descrizione simbolica dell’informazione musicale rivolta all’esecuzione POVERO DI INFORMAZIONI: GRAFICHE E MUSICOLOGICHE
Obiettivi: Il formato NIFF 1) Completezza notazionale (editoria, acquisizione da scanner) 2) Equivalenza con il MIDI (informazione relativa all’esecuzione) 3) Espandibilita’, Flessibilita’ e Compattezza
Il formato NIFF Form List e Chunk Tag Elementi principali: Segue le regole dettate dalla specifica per il formato RIFF Microsoft (Resource Interchange File Format) Elementi principali: Form “contenitore” List e Chunk Lunghezza variabile Tag Parti opzionali
Il formato NIFF Form “contenitore principale” All’inizio del file, Segue le regole dettate dalla specifica per il formato RIFF Microsoft (Resource Interchange File Format) Form “contenitore principale” All’inizio del file, contiene tutti gli altri list e chunk RIFF/ RIFX Dimensione dati in Form Tipo di file (NIFF) DATI (list & Chunk)
Il formato NIFF Form RIFF/ RIFX Dimensione dati in Form Segue le regole dettate dalla specifica per il formato RIFF Microsoft (Resource Interchange File Format) RIFF/ RIFX Dimensione dati in Form Tipo di file (NIFF) DATI (list & Chunk) Form Chunk LIST … LIST … … Chunk Chunk ……… Chunk
Il formato NIFF Form RIFF/ RIFX Dimensione dati in Form Segue le regole dettate dalla specifica per il formato RIFF Microsoft (Resource Interchange File Format) Form RIFF/ RIFX Dimensione dati in Form Tipo di file (NIFF) DATI (list & Chunk) Nome del chunk(4 byte ) POINTER (4 byte ) Chunk Length Table
Il formato NIFF Form Chunk Length Table POINTER 1 Nome del chunk 1 Segue le regole dettate dalla specifica per il formato RIFF Microsoft (Resource Interchange File Format) Form Chunk Length Table POINTER 1 Nome del chunk 1 Nome del chunk 2 POINTER 2 POINTER 3 Nome del chunk 3 POINTER 4 Nome del chunk 4 POINTER 5 Nome del chunk 5
Il formato NIFF Form Chunk Length Table Nome del chunk 2 POINTER Segue le regole dettate dalla specifica per il formato RIFF Microsoft (Resource Interchange File Format) Form Chunk Length Table Nome del chunk 2 POINTER CHUNK 1 CHUNK 2 Tag1 Tag2 Tag3 Tag4 …
Part Description Chunk Il formato NIFF Segue le regole dettate dalla specifica per il formato RIFF Microsoft (Resource Interchange File Format) Form RIFF/ RIFX Dimensione dati in Form Tipo di file (NIFF) DATI (list & Chunk) nome del chunk (4 byte ) POINTER (4 byte ) Part ID Part Name Part Abbreviation Max. num. di Pentagrammi MIDI Ch. & Cable number Transpose Part Description Chunk
Il formato NIFF Form Part List Segue le regole dettate dalla specifica per il formato RIFF Microsoft (Resource Interchange File Format) Form Part ID Part Name Part Abbreviation Max. num. di Pentagrammi MIDI Ch. & Cable number Transpose Part ID Part Name Part Abbreviation Max. num. di Pentagrammi MIDI Ch. & Cable number Transpose Part ID Part Name Part Abbreviation Max. num. di Pentagrammi MIDI Ch. & Cable number Transpose Part List
Il formato NIFF Form List “LIST” Dimensione dati Tipo dati DATI Segue le regole dettate dalla specifica per il formato RIFF Microsoft (Resource Interchange File Format) DATI (list & Chunk) Form List = struttura, contenitore “LIST” LIST … … Dimensione dati Chunk Tipo dati DATI
Il formato NIFF Form Chunk Tipo di Chunk Dimensione dati DATI Segue le regole dettate dalla specifica per il formato RIFF Microsoft (Resource Interchange File Format) DATI (list & Chunk) Form Chunk =informazione codificata LIST … … Tipo di Chunk Dimensione dati Chunk DATI
Il formato NIFF Il TAG Tipo di Chunk Dimensione dati DATI =parte opzionale del chunk Tag Tipo di Chunk Tag Dimensione dati Chunk Chunk DATI Tag …
Il formato NIFF Il TAG =parte opzionale del chunk Tag
Il formato NIFF Il TAG Tipo di Tag Dimensione dati DATI =parte opzionale del chunk Tipo di Tag Tag Dimensione dati DATI
Un “ perché ” importante Il formato NIFF ? Un “ perché ” importante Nei tipi di dati dove e’ definita la parte variabile troviamo sempre indicata la dimensione dell’area riservata ai dati Questo permette al linguaggio di soddisfare il requisito di flessibilita’
Il formato NIFF ? Infatti, questo mette in grado il programma che utilizza il formato NIFF di ignorare ogni dato che non riconosce. Questo implica la possibilita’ di definire nuovi tipi di dati da aggiungere al formato, salaguardando la compatibilita’ delle versioni precedenti.
Il formato NIFF ? I produttori di software commerciale o i ricercatori accademici possono definire nuovi chunk o tag propri , registrando un NIFF user ID riservato i chunk definiti da utente, avranno il codice identificativo “user”, e memorizzeranno nei primi due byte dello spazio riservato ai dati il NIFF user ID
I tag definiti da utente hanno il tag ID uguale a 255 (x’FF’) Il formato NIFF ? I produttori di software commerciale o i ricercatori accademici possono definire nuovi chunk o tag propri , registrando un NIFF user ID riservato I tag definiti da utente hanno il tag ID uguale a 255 (x’FF’) e memorizzeranno nei primi due byte dello spazio riservato ai dati del tag il NIFF user ID
Score Lo spartito… Il formato NIFF E’ presente in ogni file niff, Contiene tutte le informazioni di partitura
Part Lo spartito… Il formato NIFF Score E’ un flusso di eventi musicali. Il vero e proprio “spartito”, relativo ad uno o ad un gruppo di strumenti suonati dallo stesso strumentista
Voice Lo spartito… Il formato NIFF Score Part E’ un flusso di eventi musicali ritmicamente indipendenti all’interno di una parte
System Lo spartito… Il formato NIFF Score Part Voice E’ la struttura della pagina dello spartito Simboli che rappresentano eventi simultanei sono allineati verticalmente
Staff Lo spartito… Il formato NIFF Score Part Voice System Rappresenta il singolo pentagramma, su cui vengono visualizzati i simboli musicali
Time-slice Lo spartito… Il formato NIFF Score Part Voice System Staff E’ il meccanismo per temporizzare gli eventi all’interno della partitura Part Time-slice Voice Inizio Misura: tempo dall’inizio dello spartito System Staff Inizio Evento: tempo dall’inizio della misura
Il formato NIFF Lo spartito… Score Part Voice System Staff Time-Slice
La struttura Il formato NIFF Setup section Data section NIFF Information chunk (versione NIFF, provenienza, unita’ di misura, bpm) Chunk length table (tabella che configura la lunghezza fissa di ciascun chunk) Parts list (Chunk ID, Chunk Name, massimo numero di pentagrammi, Canale e strumento MIDI associati, ecc.)
La struttura Il formato NIFF Setup section Data section Pagina Informazione musicale Contiene la vera e propria informazione musicale sotto tutti gli aspetti: Notazionale Esecutivo Grafico… Pagina (accollatura) system Pentagramma …. simboli … (note, pause, indicazioni temporali)
La struttura Il formato NIFF Sono Liste: Pagina Composte da un header chunk e, di seguito, i chunk relativi ai vari simboli Pagina (accollatura) system Pentagramma …. simboli … (note, pause, indicazioni temporali)
La struttura Il formato NIFF Pagina Una LISTA-pentagramma puo’ contenere simboli musicali appartenenti a piu’ di una PART Pagina (accollatura) system Pentagramma Pentagramma …. simboli … (note, pause, indicazioni temporali)
La struttura Il formato NIFF 1 Part per pentagramma chunk chunk chunk Pentagramma (Staff Header Chunk) PART ID = numero della part chunk chunk chunk chunk chunk … simboli
La struttura Il formato NIFF Part diversi su un pentagramma chunk Pentagramma (Staff Header Chunk) xxxx chunk chunk chunk chunk chunk … …… … PartID = m …… … PartID = p …… … PartID = m …… … PartID = ..
La struttura Il formato NIFF Dentro al pentagramma chunk chunk chunk Pentagramma (Staff Header Chunk) chunk chunk chunk chunk chunk … Time slice Ch. …… … nota …… … … Time slice Ch. …… …
Unita’ di misura e sistema di coordinate Il formato NIFF Unita’ di misura e sistema di coordinate Scopi Configurabilita’ per programmi di editoria e OMR Sufficiente precisione grafica Interi VS floating point per le coordinate Congruenza delle informazioni grafiche e semantiche
Unita’ di misura e sistema di coordinate Il formato NIFF Unita’ di misura e sistema di coordinate Unita’ assolute Descritte nella sezione di Setup. Descrivono la densita’ di unita’ assolute per unita’ standard Rappresentati da : tipo di unita’ standard (inches, centrimetri, punti..) densita’ per unita’ standard
Unita’ di misura e sistema di coordinate Il formato NIFF Unita’ di misura e sistema di coordinate Staff step Riferimento verticale rispetto alla linea inferiore del pentagramma Il simbolo viene posizionato verticalmente nel pentagramma in base a questo valore
Unita’ di misura e sistema di coordinate Il formato NIFF Unita’ di misura e sistema di coordinate La pagina Altezza Unita’ assolute + Larghezza Lo 0 cartesiano e’ nell’angolo in alto a sinistra +
Unita’ di misura e sistema di coordinate Il formato NIFF Unita’ di misura e sistema di coordinate Dimensione dei font di testo : E’ espressa in twips (1/20 di punto) Permette, nei programmi in cui e’ previsto, di proporzionare il testo in modo fine rispetto alla dimensione “punto”
Unita’ di misura e sistema di coordinate Il formato NIFF Unita’ di misura e sistema di coordinate Dimensione dei font musicali : E’ espressa in due differenti modi: dimensione (in twips) Altezza dello spazio occupato(in unita’ assolute) (quest’ultimo per ovviare alla non univocita’ del concetto di “size” nel caso di tipi di font diversi)
Il formato NIFF Rappresentazione temporale Obiettivi : Il NIFF e’ stato progettato per poter contemporaneamente fornire informazioni sulle durate precise per l’aspetto simbolico, e sufficienti per l’esecuzione tramite un sequencer o la trasformazione a MIDI.
Il formato NIFF Rappresentazione temporale Start time Durata (Istante di inizio) Rappresenta il punto di inizio della nota. A livello simbolico si rappresenta con una frazione, che indica la distanza temporale dall’inizio della battuta A livello esecutivo la frazione e’convertita in MIDI ticks (con la relazione “MIDI ticks per quarto” ), a cui verranno aggiunti un offset dovuto all’interpretazione
Il formato NIFF Rappresentazione temporale Start time Durata A livello simbolico si rappresenta con una frazione, pari alla durata della figura della nota I gruppi irregolari sono espressi come rapporto tra la durata quella che avrebbero le note che li costituiscono e quella effettiva. Ancora, a livello esecutivo la frazione e’convertita in MIDI ticks a cui verranno aggiunti un offset dovuto all’interpretazione
Caratteristiche grafiche Il formato NIFF Rappresentazione temporale Caratteristiche grafiche Nel formato NIFF sono rappresentati tramite chunk associati alle note alcune indicazioni grafiche, tra cui la forma della testa della nota, o il numero di punti o di gambi della nota, o al contrario informazioni notazionali che compensano e permettano l’assenza di tutte le note necessarie a completare una battuta, o abbellimenti i cui valori non vengono calcolati.
Caratteristiche grafiche Il formato NIFF Rappresentazione temporale Caratteristiche grafiche Barra della battuta: e’ un chunk che viene notato come fine della battuta anziche’ l’inizio (come da teoria musicale) e quindi cade prima del time slice chunk di inizio battuta
Caratteristiche grafiche Il formato NIFF Rappresentazione temporale Caratteristiche grafiche Cambio di chiave, armatura o tempo: Anche questo e’ rappresentato da un chunk che , pur seguendo il Barline chunk, viene posto anch’esso prima del time slice chunk di inizio battuta. Nel caso in cui siano posti all’inizio del pentagramma, seguono invece immediatamente il time slice chunk di inizio battuta. Nel caso in cui il cambio sia in mezzo a una battuta, essi seguono il chunk che rappresenta l’evento successivo
Il formato NIFF I FONT CUSTOM in un file NIFF si possono definire tipi di Font speciali Nella sezione setup, puo’ esistere una tabella opzionale chiamata Font Description List. E’ composta da una serie di Font Description Chunks. Essi vengono indentificati come FONTIDX data type Nome Font Dimensione del font Stile (NCGS) Posizione nel file (Se presente) E’ un puntatore ad un font Post Script, nella Custom Graphic List
Il formato NIFF I FONT CUSTOM La Custom Graphic List e’ una tabella opzionale che contiene i Font (in formato Post Script Type 1 o Type 3) e elementi grafici proprietari (in formato EPS, encapsulated Post Script ) in una struttura di chunk
Un file MIDI puo’ essere integrato in un file NIFF Il formato NIFF Integrazione MIDI Un file MIDI puo’ essere integrato in un file NIFF Nella sezione setup, ciascuna part puo’ essere globalmente assegnata ad un numero di canale MIDI e si puo’ fissare il numero nel part description chunk. pu
Il formato NIFF Integrazione MIDI Setup section Data section Nella sezione setup, ciascuna part puo’ essere globalmente assegnata ad un numero di canale e periferica MIDI e si puo’ fissare il numero nel part description chunk. Tramite il Part Description Override tag si puo’ modificare in ogni momento della partitura la configurazione MIDI attuale
Il formato NIFF Integrazione MIDI Setup section Data section Nella sezione data, sono utilizzati i MIDI Data Stream chunk e i MIDI Performance tag. A seconda della notazione ci sono 4 possibili relazioni tra i simboli musicali e I dati MIDI
Correlazione uno a uno: Il formato NIFF Integrazione MIDI Setup section Data section Correlazione uno a uno: e’ il caso di note (il simbolo “testa della nota”) che genera un messaggio di Note On. Vengono forniti dal MIDI Performance Tag, aggiunto al simbolo della nota, altezza, dinamica, e i tempi assoluti di partenza e durata in MIDI Ticks
Correlazione uno a molti: Il formato NIFF Integrazione MIDI Setup section Data section Correlazione uno a molti: e’ l’esempio di un trillo , in cui un solo simbolo grafico viene “esploso” in diversi dettagli esecutivi,e rappresentato in NIFF da un MIDI Data Stream chunk, ancorato al simbolo grafico in questione.Contiene il numero di eventi, a partire da dove si inserisce
Correlazione molti a molti: Il formato NIFF Integrazione MIDI Setup section Data section Correlazione molti a molti: e’ l’esempio di un portamento , cioe’ una combinazione di simboli grafici che genera un traffico di segnali MIDI. In questo caso il MIDI Data Stream chunk,e’ un simbolo composto da piu’ nodi, dove ogni nodo corrisponde ad un simbolo notazionale.Nell’esempio, solo il primo nodo contiene la serie di messagi MIDI Pitch Bend
Il formato NIFF Integrazione MIDI Setup section Data section Nessuna correlazione La notazione non ha una interpretazione esecutiva (MIDI) univoca, o non esiste un equivalente nello standard MIDI. E’ l’esempio del simbolo grafico “espressivo” o dei valori MIDI di informazioni sul PANNING
Informazione rappresentabile in entrambi i formati Il formato NIFF Integrazione MIDI Setup section Data section Nessuna correlazione NIFF MIDI Informazione rappresentabile in entrambi i formati
Il formato NIFF Integrazione MIDI Setup section Data section In questo caso il MIDI Data Stream chunk contiene tutte le informazioni MIDI non rappresentabili simbolicamente e viene ancorato al Time Slice
______________________________________ Il formato NIFF Altre possibilita’ ______________________________________ TAB Intavolatura per chitarra Simboli per chitarra Nomi di spartiti e pentagrammi Numerazione delle battute e segni di richiamo Ritornelli e code Trombe{ 1 2 3. In la
Attivazione e disattivazione di un Tag Il formato NIFF Altre possibilita’ Attivazione e disattivazione di un Tag Esempio: Un passaggio con note di dimensione piu’ piccola: viene inserito il Tag Activate Chunk per il tag Small Size all’inizio della sequenza dei simboli “nota” all’interno del pentagramma, e il Tag Activate Chunk alla fine della medesima.
Attivazione e disattivazione di un Tag Il formato NIFF Altre possibilita’ Attivazione e disattivazione di un Tag Questa possibilita’ puo’ essere anche impiegata selettivamente, solo sui simboli relativi ad una voce o ad una parte Questo e’ possibile in quanto i simboli sono rappresentati tramite chunk, e al loro interno si puo’ scegliere quelli che abbiano un determinato Voice ID o Part ID
Simboli dipendenti e loro ancore Il formato NIFF Ancoraggio Simboli dipendenti e loro ancore In NIFF, un simbolo dal cui posizionamento dipenda quello di uno o piu’ simboli e’ chiamato ancora. Per ogni tipo di chunk che porta un simbolo e’ definito un chunk ancora.
Simboli dipendenti e loro ancore Il formato NIFF Ancoraggio Simboli dipendenti e loro ancore Il simbolo dipendente appare fisicamente nel file prima possibile dopo la sua ancora. Quando ci sono piu’ tipi di simboli dipendenti dalla stessa ancora essi compaiono in ordine di prossimita’ grafica, dal piu’ vicino al piu’ lontano
Simboli dipendenti e loro ancore Il formato NIFF Ancoraggio Simboli dipendenti e loro ancore Vediamo come esempio il caso della nota, che e’ un accordo degenere: il “gambo” della nota (stem)e’ l’ancora, e la testa della nota (notehead) e’ dipendente. Infatti dove viene posizionata l’asta della nota, c’e’ anche la testa.
Simboli dipendenti e loro ancore Il formato NIFF Ancoraggio Simboli dipendenti e loro ancore Qualora sia un accordo con seconde, il chunk dipendente (notehead) puo’ adattare il posizionamento del simbolo grazie al valore di “offset” che muove il posizionamento del carattere dal punto “caldo” (coordinata del carattere).
Il formato NIFF Fig. 2a Stem Notehead, staff step=3, duration=1/4 Fingering, shape=1 Notehead, staff step=7, duration=1/4 Ornament, shape=short trill Accidental, shape=sharp, Small Size, Anchor Override=Ornament, Logical Placement=above
Il formato NIFF Fig.2b Time-Slice, type=event,start time=0/4 Stem Notehead, staff step=5, duration=1/4 Articulation, shape=staccato Parenthesis, shape = "(", Anchor Override=Articulation,Logical Placement = left, ID=1, Number of Nodes=2 [multi-node] Time-slice, type=event, start-time=1/4 Stem Notehead, staff step=5, duration=1/4 Articulation, shape=staccato Time-slice, type=event, start-time=2/4 Note, staff step=5, duration=1/4 Parenthesis, shape = ")", Anchor Override=Articulation,Logical Placement = right, ID=1
Il formato NIFF Fig.3 a sinistra Staff 1) Time-slice, type=event, start time=1/8 Stem Beam, ID=1, Number of Nodes=3,parts to left=1, parts to right=1 Notehead, staff step= 2, duration=1/8 Time-slice, type=event, start time=2/8 Stem Beam, ID=1, part to left=1, parts to right=0 Notehead, staff step=5, duration=1/8 (Staff 2) Time-slice, type=event, start-time=0/8 Beam, ID=1,parts to left=0, parts to right =1 NoteHead, Staff step = 6, duration = 1 / 8
Il formato NIFF Fig.3 a destra (Staff 1) Time-slice. type=event, start-time=0/8 Rest, duration=1/8 Time-slice. type=event, start-time=1/8 Rest, duration=1/8 Time-slice. type=event, start-time=2/8 Stem, ID=1, Number of nodes=2 Notehead, staff step=2, duration=1/4 Notehead, staff step=-1, duration=1/4 (staff 2) Time-slice. type=event, start-time=0/8 Stem Notehead, staff step=6, duration=1/8 Stem, ID=1 Notehead, staff step=7, duration=1/4
Il formato NIFF Disposizioni Disposizione di default l’unica informazione di impaginazione e’ la sintassi musicale Il programma utilizza i suoi defaults per l’impaginazione Disposizione Logica Fornisce le relazioni tra simboli dipendenti e le loro ancore Disposizione Assoluta Viene indicato per ogni simbolo esattamente dove questo debba essere posizionato
Criteri di scelta tra posizionamenti diversi Il formato NIFF Disposizioni Criteri di scelta tra posizionamenti diversi Sebbene la disposizione per misure assolute possa sembrare la piu’ precisa, ecco alcuni casi che mettono in crisi la sua fedelta’ con l’originale il programma che legge il file NIFF non ha a disposizione gli stessi font del programma che l’ha prodotto.
Criteri di scelta tra posizionamenti diversi Il formato NIFF Disposizioni Criteri di scelta tra posizionamenti diversi Sebbene la disposizione per misure assolute possa sembrare la piu’ precisa, ecco alcuni casi che mettono in crisi la sua fedelta’ con l’originale Se nel programma che legge il file NIFF non e’ implementato il concetto di layout di pagina, il posizionamento assoluto devono essere scartati, e quindi restano sempre validi solo i posizionamenti LOGICI
Criteri di scelta tra posizionamenti diversi Il formato NIFF Disposizioni Criteri di scelta tra posizionamenti diversi Sebbene la disposizione per misure assolute possa sembrare la piu’ precisa, ecco alcuni casi che mettono in crisi la sua fedelta’ con l’originale L’utente puo’ decidere di utilizzare per motivi di funzionalita’ ed efficacia ai suoi scopi le features del programma che utilizza per leggere il file NIFF, tralasciando le indicazioni associate dall’editore del file NIFF originale
Un esempio: Il Bolero di Ravel Il formato NIFF Un esempio: Il Bolero di Ravel <!DOCTYPE niff SYSTEM "intdtd.sgm"> <niff> <setup> <info>6b 1</info> <partsL> <part><id>p0<name>part0</part> <part><id>p1<name>part1</part> <part><id>p2<name>part2</part> <part><id>p3<name>part3</part> <part><id>p4<name>part4</part> <part><id>p5<name>part5</part> <part><id>p6<name>part6</part> <part><id>p7<name>part7</part> <part><id>p8<name>part8</part> <part><id>p9<name>part9</part> <part><id>p10<name>part10</part> <part><id>p11<name>part11</part> <part><id>p12<name>part12</part> <part><id>p13<name>part13</part> <part><id>p14<name>part14</part> <part><id>p15<name>part15</part> </partsL> </setup>
Un esempio: Il Bolero di Ravel Il formato NIFF Un esempio: Il Bolero di Ravel <data> <pageL> <systemL> <staffL> <stafhedC></stafhedC> <ts><tstype>2</tstype><top>0<bottom>4</ts> <clef><type>treble<octave>0</octave></clef> <timesig><top>4</top><bottom>4</bottom></timesig> <rest><duration><top>4<bottom>4<tag><partid>p0</partid></rest> <ts><tstype>2</tstype><top>4<bottom>4</ts> <ts><tstype>1</tstype><top>4<bottom>4</ts> <ts><tstype>1</tstype><top>8<bottom>4</ts> <ts><tstype>1</tstype><top>12<bottom>4</ts> <rest><duration><top>3<bottom>4<tag><partid>p0</partid></rest> <ts><tstype>2</tstype><top>3<bottom>4</ts> <stem></stem> <notehead><stafstep>5<duration><top>1<bottom>4 <tag><partid>p0</partid></notehead> </tie> <ts><tstype>1</tstype><top>16<bottom>4</ts>
Un esempio: Il Bolero di Ravel Il formato NIFF Un esempio: Il Bolero di Ravel <notehead><stafstep>5<duration><top>1<bottom>8<tag><partid>p0</partid></notehead> </tie> <ts><tstype>2</tstype><top>1<bottom>8</ts> <stem></stem> <notehead><stafstep>4<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>3<bottom>16</ts> <notehead><stafstep>5<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>1<bottom>4</ts> <notehead><stafstep>6<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>5<bottom>16</ts> <ts><tstype>2</tstype><top>3<bottom>8</ts> <notehead><stafstep>1<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>7<bottom>16</ts> <stem></stem> <notehead><stafstep>3<duration><top>1<bottom>16 <tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>2<bottom>4</ts> <ts><tstype>2</tstype><top>5<bottom>8</ts>
Un esempio: Il Bolero di Ravel Il formato NIFF Un esempio: Il Bolero di Ravel <notehead><stafstep>5 <duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>11<bottom>16</ts> <stem></stem> <notehead><stafstep>3 <duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>3<bottom>4</ts> <notehead><stafstep>5 <duration><top>1<bottom>4<tag><partid>p0</partid></notehead> </tie> <ts><tstype>2</tstype><top>4<bottom>4</ts> <ts><tstype>1</tstype><top>20<bottom>4</ts> </staffL> <staffL> <stafhedC></stafhedC> <ts><tstype>2</tstype><top>0<bottom>4</ts> <clef><type>treble<octave>0</octave></clef> <timesig><top>4</top><bottom>4</bottom></timesig> <rest> <duration><top>4<bottom>4<tag><partid>p1</partid></rest> <ts><tstype>1</tstype><top>4<bottom>4</ts> <rest><duration><top>4<bottom>4<tag><partid>p1</partid></rest> <ts><tstype>1</tstype><top>8<bottom>4</ts> <ts><tstype>1</tstype><top>12<bottom>4</ts>
Un esempio: Il Bolero di Ravel Il formato NIFF Un esempio: Il Bolero di Ravel <rest><duration><top>4<bottom>4<tag><partid>p1</partid></rest> <ts><tstype>2</tstype><top>4<bottom>4</ts> <ts><tstype>1</tstype><top>16<bottom>4</ts> <ts><tstype>1</tstype><top>20<bottom>4</ts> </staffL> <rest><duration><top>4<bottom>4<tag><partid>p15</partid></rest> </systemL> </pageL> <pageL> <systemL> <staffL> <stafhedC></stafhedC> <ts><tstype>2</tstype><top>0<bottom>4</ts> <clef><type>treble<octave>0</octave></clef> <stem></stem> <notehead><stafstep>5<duration><top>1<bottom>8<tag><partid>p0</partid></notehead> </tie> <ts><tstype>2</tstype><top>1<bottom>8</ts> <notehead><stafstep>4<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>3<bottom>16</ts>
Un esempio: Il Bolero di Ravel Il formato NIFF Un esempio: Il Bolero di Ravel <notehead><stafstep>5<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>1<bottom>4</ts> <stem></stem> <notehead><stafstep>3<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>5<bottom>16</ts> <notehead><stafstep>2<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>3<bottom>8</ts> <notehead><stafstep>0<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>7<bottom>16</ts> <notehead><stafstep>1<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>2<bottom>4</ts> <notehead><stafstep>2<duration><top>1<bottom>2<tag><partid>p0</partid></notehead> </tie> <ts><tstype>2</tstype><top>4<bottom>4</ts> <ts><tstype>1</tstype><top>24<bottom>4</ts> <ts><tstype>2</tstype><top>1<bottom>16</ts> <ts><tstype>2</tstype><top>1<bottom>8</ts>
Un esempio: Il Bolero di Ravel Il formato NIFF Un esempio: Il Bolero di Ravel <notehead><stafstep>0<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>3<bottom>16</ts> <stem></stem> <notehead><stafstep>-1<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>1<bottom>4</ts> <ts><tstype>2</tstype><top>5<bottom>16</ts> <notehead><stafstep>1<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>3<bottom>8</ts> <notehead><stafstep>2<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>7<bottom>16</ts> <notehead><stafstep>3<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>2<bottom>4</ts> <notehead><stafstep>2<duration><top>1<bottom>2<tag><partid>p0</partid></notehead> </tie> <ts><tstype>2</tstype><top>4<bottom>4</ts> <ts><tstype>1</tstype><top>28<bottom>4</ts> </staffL>
Un esempio: Il Bolero di Ravel Il formato NIFF Un esempio: Il Bolero di Ravel <pageL> <systemL> <staffL> <stafhedC></stafhedC> <ts><tstype>2</tstype><top>0<bottom>4</ts> <clef><type>treble<octave>0</octave></clef> <stem></stem> <notehead><stafstep>2<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> </tie> <ts><tstype>2</tstype><top>1<bottom>16</ts> <notehead><stafstep>3<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>1<bottom>8</ts> <notehead><stafstep>4<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>3<bottom>16</ts> <ts><tstype>2</tstype><top>1<bottom>4</ts> <ts><tstype>2</tstype><top>5<bottom>16</ts> <notehead><stafstep>1<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>3<bottom>8</ts> <notehead><stafstep>0<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>7<bottom>16</ts>
Un esempio: Il Bolero di Ravel Il formato NIFF Un esempio: Il Bolero di Ravel <notehead><stafstep>-1<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>2<bottom>4</ts> <stem></stem> <notehead><stafstep>0<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>9<bottom>16</ts> <ts><tstype>2</tstype><top>5<bottom>8</ts> <notehead><stafstep>-2<duration><top>1<bottom>4<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>7<bottom>8</ts> <notehead><stafstep>-2<duration><top>1<bottom>16<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>15<bottom>16</ts> <ts><tstype>2</tstype><top>4<bottom>4</ts> <ts><tstype>1</tstype><top>32<bottom>4</ts> <notehead><stafstep>0<duration><top>1<bottom>8<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>1<bottom>8</ts> <notehead><stafstep>1<duration><top>1<bottom>8<tag><partid>p0</partid></notehead> <ts><tstype>2</tstype><top>1<bottom>4</ts> <notehead><stafstep>-1<duration><top>1<bottom>8<tag><partid>p0</partid></notehead>
Un esempio: Il Bolero di Ravel Il formato NIFF Un esempio: Il Bolero di Ravel <notehead><stafstep>2<duration><top>1<bottom>2<tag><partid>p0</partid></notehead> </tie> <ts><tstype>2</tstype><top>4<bottom>4</ts> <ts><tstype>1</tstype><top>36<bottom>4</ts> </staffL> <staffL> <stafhedC></stafhedC> <ts><tstype>2</tstype><top>0<bottom>4</ts> <clef><type>treble<octave>0</octave></clef> <rest><duration><top>4<bottom>4<tag><partid>p1</partid></rest> <ts><tstype>1</tstype><top>32<bottom>4</ts>
Riferimenti Il formato NIFF Definizione: http://niffty.sourceforge.net/NIFF6b/NIFF6b.html Tesi interne: Tonino Mendicino Prototipo software per il trattamento integrato di codici MIDI e NIFF-Modelli formali di strutture musicali Stefano Guagnini (Capitolo 2) Metodi e strumenti per la segmentazione automatica di partiture musicali rappresentate in NIFF