Giannicola Spezzigu
Accordo: sovrapposizione di 3 o più suoni Ogni sigla denota un accordo, ossia i suoni da cui esso è formato Accordi e il sistema delle Sigle Sistema temperato: l’ottava è suddivisa in 12 parti uguali, detti semitoni. Perciò i suoni musicali sono 12 ( e non 7!!). -Posso formare accordi a partire da ognuno di essi. -Posso costruire un accordo al max di 12 suoni. Sistema temperato: l’ottava è suddivisa in 12 parti uguali, detti semitoni. Perciò i suoni musicali sono 12 ( e non 7!!). -Posso formare accordi a partire da ognuno di essi. -Posso costruire un accordo al max di 12 suoni. Sigla C7 : indica l’accordo di C settima dom, formato dai suoni C, E, G, Bb Sigla C : indica l’accordo di C maggiore, formato dai suoni C, E, G note in inglese: C = do D = re E = mi F = fa G = sol A= la B = si Sigla CMA7(add13) : indica l’accordo di C maggiore - settima maggiore con 13ma aggiunta. E’ formato dai suoni: C, E, G, A, B Sigla Bb(add b9 add 13) : indica l’accordo di Bb maggiore con 9na e 13ma bemolle aggiunta. E’ formato dai suoni: Bb, D, F, Gb, C Esempi di sigle: o Il sistema è intricato e presenta diverse regole: può essere difficile per l’allievo inesperto interpretare le sigle nel modo corretto. 2
SCOPO DEL LAVORO Realizzazione di un interprete per le sigle degli accordi jazz L’idea è quella di un sistema software di supporto all’allievo di armonia Data una sigla deve tradurla nei suoni che compongono l’accordo Deve poter suonare l’accordo (ear training) 3
Grammatica EBNF ::= [ ] [ ] [ ] [ ( )+ ] token ::= C | D | E | F | G | A | B :: = # | b ::= [ ] token ::= Ma | MA | Maj ::= m | mi | min ::= | token ::= 2 | 3 | 4 | 5 | 6 | 9 | 11 | 13 ::= 6/9| alt | 7alt | 0 | 07| dim ::= | 7 | token ::= sus | sus4 token ::= ( token ::= ) token :: = # | b ::= 2 | 3 | 4 | 5 | 6 | 9 | 11 | 13 ::= | | | ::= token :: = # | b ::= 2 | 3 | 4 | 5 | 6 | 9 | 11 | 13 ::= add ( [ ] | ) ::= 7 token ::= Ma | MA | Maj ::= ( | 7 ) token ::= no | omit ::= 2 | 3 | 4 | 5 | 6 | 9 | 11 | 13 ::= 7 token ::= Ma | MA | Maj 4
Grammatica (osservazioni) ::= [ ] [ ] [ ] [ ( )+ ] ::= | ::= [ ] ::= | 7 | ::= | | | ::= ::= add ( [ ] | ) ::= ( | 7 ) ::= 7 ::= C | D | E | F | G | A | B ::= sus | sus4 ::= ( ::= ) :: = # | b ::= Ma | MA | Maj ::= m | mi | min ::= 2 | 3 | 4 | 5 | 6 | 9 | 11 | 13 ::= 6/9| alt | 7alt | 0 | 07| dim ::= no | omit Secondo la classificazione di Chomsky, la grammatica è di tipo 2 in quanto le produzioni non sono regolari Non è presente self-embedding, quindi il linguaggio generato dalla grammatica è di tipo 3 LL(1): sono presenti varie produzioni formalmente non LL(1) il linguaggio generato è di tipo 3 la grammatica è di tipo 2 Es: trasformando in BNF := SS non disgiunti!! Il problema è solo apparente, raccogliendo a fattor comune: := := ε | È sempre possibile distinguere la fine di una stringa da una stringa non vuota Produzione sostanzialmente LL(1) Idem per le altre produzioni la grammatica è sostanzialmente LL(1) Il linguaggio è riconoscibile tramite analisi ricorsiva discendente 5
Tecnologie & Strumenti Java 1.6 JavaCC per la generazione automatica del parser top-down Java Tree Builder strumento aggiuntivo a JavaCC per la generazione automatica delle classi necessarie a creare l’albero sintattico e relativo visitor Eclipse IDE utilizzato per lo sviluppo del progetto NetBeans 6.5 IDE utilizzato solo per la generazione automatica della GUI jMusic A Queensland University of Technology (QUT) music research project. Libreria Java utilizzata per la gestione dell’output sonoro e dei MIDI file 6
Progetto Funzionalità previste in analisi Funzionalità avanzate aggiunte in fase di progetto Per poter riconoscere sequenze di sigle è stata perciò aggiunta la produzione di top level: ::= ( ) + 7
Archittettura: Package 8
Classi: struttura 9
Classi: Interazione 10
Test & Collaudo 11 Le classi principali sono state testate manualmente prima ancora di essere inserite nell’applicazione. Ne è stato accertato il corretto comportamento anche dopo l’integrazione con le altre parti del sistema. Il collaudo è stato effettuato distribuendo l’applicazione a 5 musicisti Jazz e apportando correzioni, principalmente alle azioni semantiche dell’interprete, sulla base del loro feedback. Alcuni lo hanno trovato un utile strumento per la didattica
DEMO 12
Sviluppi futuri 13 Estendere il linguaggio con tutte le possibili notazioni equivalenti Riproduzione sonora: curare i voicing per ogni specie di accordo Sequencer: - poter scegliere fra diversi organici e diversi stili musicali - poter inserire più accordi per battuta - poter inserire ripetizioni o ritornelli Introduzione di un supporto per la creazione di melodie…… …... Il che farebbe diventare il sistema, non più un semplice interprete di accordi jazz, ma un vero e proprio strumento per la composizione musicale assistita dal computer
riferimenti Prof. Enrico Denti: corso di Linguaggi e Modelli Computazionali ls Franco d’Andrea – Attilio Zanchi: “Enciclopedia comparata delle scale e degli accordi” ed. Carish Queensland University of Tecnology: 14
15