DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

20
DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico

Transcript of DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

Page 1: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

DARMS

Lezione 13

Programmazione per la Musica | Prof. Luca A. Ludovico

Page 2: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

Rappresentazione alfanumerica della musica

Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS

Page 3: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 4: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 5: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 6: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 7: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 8: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 9: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

Codifica del pitch

Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS

Page 10: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 11: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 12: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

Specchietto riassuntivo

Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS

Page 13: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 14: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 15: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 16: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

Segnatura di tempo

• Codifica standard: !MxxxAd esempio: !M3/4 oppure !M5:8

• Notazioni complesse:

Programmazione per la Musica - Prof. Luca A. Ludovico13. DARMS

Page 17: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 18: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 19: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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

Page 20: DARMS Lezione 13 Programmazione per la Musica | Prof. Luca A. Ludovico.

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