Upload
giuseppa-spano
View
215
Download
1
Embed Size (px)
Citation preview
DARMS
Lezione 13
Programmazione per la Musica | Prof. Luca A. Ludovico
Rappresentazione alfanumerica della musica
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Rappresentazione alfanumerica della musica
• In un formato di rappresentazione alfanumerica della musica, ogni simbolo musicale è rappresentato da un carattere ASCII o da un’apposita combinazione. L’idea originaria era poter usare una comune macchina da scrivere per creare equivalenti informativi delle partiture.
• Principali vantaggi: motivi storici, affinità al linguaggio naturale, compattezza, interoperabilità, interscambiabilità, formati aperti e niente royalties
• Svantaggi: complessità nel supportare tutti i simboli, lontananza dall’aspetto grafico della musica.
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Finalità della lezione
• Durante la lezione ci si concentrerà su un particolare formato, il DARMS. Però le finalità sono più generali:
1. Conoscere i linguaggi di codifica alfanumerica della musica, alcuni dei quali sono ancora in uso e dispongono di librerie di centinaia di migliaia di brani
2. Convertire informazione simbolica da un formato (ad esempio quello alfanumerico basato su testo semplice) a un altro formato (ad esempio una rappresentazione interna basata su classi)
Piè di pagina: spazio libero per eventuale nome struttura o altro
Esempi
• Descrizione tramite testo semplice (logica)– ABC http://abcnotation.com/
– GUIDO http://guidolib.sourceforge.net/doc/GUIDO-Music%20Notation%20Format.html
– Plaine & Easie Code http://www.iaml.info/en/activities/projects/plain_and_easy_code
• Compilazione di testo semplice (grafica)– LilyPond http://www.lilypond.org/
• XML musicale• MusicXML http://www.musicxml.com/
• IEEE 1599 http://emipiu.di.unimi.it/
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
DARMS (Digital Alternate Representation of Musical Scores)
• Il formato DARMS (primi anni ‘60) rappresenta elementi della notazione musicale in formato alfanumerico, attraverso stringhe di testo semplice.
• La sua sintassi è fortemente orientata all’ordine e alla funzione dei singoli elementi, giungendo in tal modo a una significativa eliminazione delle ridondanze.
• Codici che non appaiono nella posizione corretta potrebbero essere mal interpretati o ignorati, a seconda delle implementazioni.
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Approccio
• DARMS è stato originariamente concepito per la tipografia musicale, e dunque codifica I simboli anziché il loro significato.
• Per conoscere il significato di un simbolo (ad esempio l’altezza di una nota) è necessario avere una conoscenza più globale di altri simboli (ad esempio la chiave, l’armatura, le alterazioni precedenti, ecc.): è necessaria una nozione di “stato”
• Per i caratteri alfabetici, DARMS usa sempre maiuscole
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Codifica del pitch
• A differenza di molti altri linguaggi, DARMS non attribuisce una codifica alle altezze, ma piuttosto alla posizione sul pentagramma– Si noti che quindi ricostruire l’altezza richiede quanto
meno la conoscenza della chiave
• La codifica avviene tramite numeri interi detti space codes. Le linee e gli spazi sono numerati da 21 a 29, e i tagli addizionali vengono computati di conseguenza
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Codifica del pitch
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Scorciatoie
• Ai fini di migliorare la compattezza nella scrittura, il linguaggio introduce numerose scorciatoie. Ad esempio:
1. Soppressione del 2 (two suppression): I codici da 20 a 29 possono essere codificati solo con l’ultima cifra. Per distinguerli rispetto agli space code 0..9 ammessi per i tagli addizionali, a questi ultimi si premette obbligatoriamente lo zero: 00..09.
2. Se una nota ha lo stesso space code della precedente, è possibile ometterlo (specificando solo la sua durata).
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Alterazioni e chiavi
• Le alterazioni si codificano aggiungendo se necessario i caratteri # (diesis), - (bemolle) e * (bequadro) allo space code. Mettendo in serie più simboli si codificano doppio diesis, doppio bemolle, ecc.
• Le chiavi si codificano facendo seguire al ! i simboli G, F o C per le chiavi di Sol, di Fa e di Do rispettivamente. Per posizionare in modo non standard le chiavi sul pentagramma si utilizzano gli space code (vedi esempi più avanti)
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Specchietto riassuntivo
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Aspetti ritmici
Per i simboli musicali la durata è specificata dai duration code, che cercano di richiamare i nomi delle durate (in inglese) dal punto di vista mnemonico:
WWW Longa S SedicesimoWW Breve T TrentaduesimoW Intero (Whole) X SessantaquattresimoH Metà (Half) Y CentoventottesimoQ Quarto (Quarter) Z …E Ottavo (Eighth) ZZ …
G Abbellimento (Grace Note) . Punto di valore
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Aspetti ritmici
• Il duration code normalmente segue uno space code, oppure l’alterazione se presente, oppure il carattere R se si tratta di una pausa. I punti di valore se presenti seguono il duration code.
• Se la durata è la stessa del simbolo precedente, può essere omessa.
• Esempio: R H Q E.
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Travi
• Le travi sono codificate dal numero di parentesi aperte e chiuse. Per queste note non si usa il duration code, che può essere inferito (ad eccezione dei gruppi irregolari)– L’esempio mostra la codifica completa delle note, ossia
travi e pitch (con two suppression)
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Segnatura di tempo
• Codifica standard: !MxxxAd esempio: !M3/4 oppure !M5:8
• Notazioni complesse:
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Definizione dei gruppi irregolari
• E’ necessario definire e marchiare univocamente un gruppo irregolare prima di poterlo utilizzare.
• Notazione: !n1dur1id:n2dur2
Significato: n1 note di valore dur1 occupano lo spazio di n2 note di valore dur2, e al gruppo si attribuisce l’identificativo id
• Esempio: !3H7:2HLettura: 3 metà nello spazio di 2 metà, identificativo 7
• Esempio: !5Q3:4Lettura: 5 quarti nello spazio di 4, identificativo 3
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Utilizzo dei gruppi irregolari
• Notazione: !n1dur1id:n2dur2
Significato: n1 note di valore dur1 occupano lo spazio di n2 note di valore dur2, e al gruppo si attribuisce l’identificativo id
• Una volta definito il gruppo irregolare, lo si attribuisce alle note aggiungendo l’identificatore del gruppo al duration code
• Esempio: dopo aver definito !5Q3:4, la notazione Q3 Q.3 E3 RQ3 Q3 corrisponde a
• Esempio: dopo aver definito !3E4:Q,la notazione (E.4 (S4) E4) corrisponde a
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
Delimitatori di battuta e legature di valore
• Delimitatori di battuta (assomigliano graficamente al risultato in partitura):
• Legature di valore: si fa seguire il duration code dalla lettera J, nella nota che dà avvio alla legatura. La lettera J può seguire direttamente lo space code se il duration code è stato soppresso. – E’ possibile numerare partenza (n, dispari) e arrivo delle legature (n+1,
pari)
• Esempio:
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS
ESEMPIO / ESERCIZIO
DarmsParsingExample.javaSi implementi un convertitore da DARMS a strutture dati interne, con la definizione di molteplici classi per descrivere i diversi simboli musicali.L’inserimento della stringa contenente il DARMS ha luogo attraverso il passaggio parametri iniziale.
Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS