150 likes | 391 Views
JAZZ CHORDS INTERPRETER Interprete per il linguaggio delle sigle degli accordi jazz. LINGUAGGI E MODELLI COMPUTAZIONALI LS aa 2008/2009. Giannicola Spezzigu 0000197799. Accordi e il sistema delle Sigle.
E N D
JAZZ CHORDS INTERPRETER Interprete per il linguaggio delle sigle degli accordi jazz • LINGUAGGI E MODELLI COMPUTAZIONALI LS • aa 2008/2009 • Giannicola Spezzigu • 0000197799
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. • Accordo: sovrapposizione di 3 o più suoni • Ogni sigla denota un accordo, ossia i suoni da cui esso è formato note in inglese: C = do D = re E = mi F = fa G = sol A= la B = si Esempi di sigle: • Sigla C : indica l’accordo di C maggiore, formato dai suoni C, E, G • Il sistema è intricato e presenta diverse regole: può essere difficile per l’allievo inesperto interpretare le sigle nel modo corretto. • Sigla C7: indica l’accordo di C settima dom, formato dai suoni C, E, G, Bb • 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
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)
Grammatica EBNF <accordo> ::= <tonica> [<caratteristica>] [<estensione>] [<sus>] [<Lpar>( <specificazione>)+ <Rpar>] <specificazione> ::= <intervallo Alterato> | <aggiunta> | <omissione> | <MagSette> <caratteristica> ::= <MagSimbol> | <minSimbol> token <sus> ::= sus | sus4 <tonica> ::= <nota> [ <alterazione> ] <estensione> ::= <intervallo> | 7 |<otherextension> token <Lpar> ::= ( token <Rpar> ::= ) <aggiunta> ::= add ( [ <alterazione>] <intervallo>| <MagSette> ) <intervallo Alterato> ::= <alterazione> <intervallo> <omissione> ::= <omit> (<intervallo>|7 ) <MagSette>::= <MagSimbol> 7 token <nota> ::= C | D | E | F | G | A | B <alterazione>:: = # | b token <MagSimbol> ::= Ma | MA | Maj <minSimbol> ::= m | mi | min token <intervallo> ::= 2| 3 | 4 | 5 | 6 | 9 | 11 | 13 <otherextension> ::= 6/9| alt | 7alt | 0 | 07|dim <MagSette>::= <MagSimbol> 7 token <omit> ::= no | omit <intervallo> ::= 2| 3 | 4 | 5 | 6 | 9 | 11 | 13 token <alterazione>:: = # | b <intervallo> ::= 2| 3 | 4 | 5 | 6 | 9 | 11 | 13 • token • <alterazione>:: = # | b • <intervallo> ::= 2| 3 | 4 | 5 | 6 | 9 | 11 |13 token <MagSimbol> ::= Ma | MA | Maj token <MagSimbol> ::= Ma | MA | Maj
Grammatica (osservazioni) • la grammatica è di tipo 2 • Secondo la classificazione di Chomsky, la grammatica è di tipo 2 in quanto le produzioni non sono regolari <accordo> ::= <tonica> [<caratteristica>] [<estensione>] [<sus>] [<Lpar>( <specificazione>)+ <Rpar>] • il linguaggio generato è di tipo 3 <tonica> ::= <nota> [ <alterazione> ] <caratteristica> ::= <MagSimbol> | <minSimbol> <estensione> ::= <intervallo> | 7 |<otherextension> Es: trasformando in BNF <tonica>:= <nota> <tonica>:= <nota><alterazione> SS non disgiunti!! • la grammatica è sostanzialmente LL(1) • Non è presente self-embedding,quindiil linguaggio generato dalla grammatica è di tipo 3 <specificazione> ::= <intervallo Alterato> | <aggiunta> | <omissione> | <MagSette> <intervallo Alterato> ::= <alterazione> <intervallo> <aggiunta> ::= add ( [ <alterazione>] <intervallo>| <MagSette> ) Il problema è solo apparente, raccogliendo a fattor comune: <tonica>:= <nota><X> <X>:= ε | <alterazione> Il linguaggio è riconoscibile tramite analisi ricorsiva discendente • LL(1):sono presenti varie produzioni formalmente non LL(1) <omissione> ::= <omit> (<intervallo>|7 ) <MagSette>::= <MagSimbol> 7 <nota> ::= C | D | E | F | G | A | B<sus> ::= sus | sus4 <Lpar> ::= (<Rpar> ::= ) <alterazione>:: = # | b<MagSimbol> ::= Ma | MA | Maj <minSimbol> ::= m | mi | min<intervallo>::= 2| 3 | 4 | 5 | 6 | 9 | 11 | 13 <otherextension> ::= 6/9| alt | 7alt | 0 | 07|dim<omit> ::= no | omit Produzione sostanzialmente LL(1) Idem per le altre produzioni È sempre possibile distinguere la fine di una stringa da una stringa non vuota
Tecnologie & Strumenti • Java 1.6 • JavaCCper la generazione automatica del parser top-down • Java Tree Builderstrumento aggiuntivo a JavaCC per la generazione automatica delle classi necessarie a creare l’albero sintattico e relativo visitor • Eclipse 3.4.0IDE utilizzato per lo sviluppo del progetto • NetBeans 6.5IDE utilizzato solo per la generazione automatica della GUI • jMusicA Queensland University of Technology (QUT) music research project. Libreria Java utilizzata per la gestionedell’outputsonoro e dei MIDI file
Progetto Funzionalità avanzate aggiunte in fase di progetto Funzionalità previste in analisi • Per poter riconoscere sequenze di sigle è stata perciò aggiunta la produzione di top level: <sequenza>::= (<accordo>) +
Test & Collaudo • 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 • 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.
Sviluppi futuri • 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 lshttp://edenti.deis.unibo.it/Ling/2008-2009/ • Franco d’Andrea – Attilio Zanchi: “Enciclopedia comparata delle scale e degli accordi” ed. Carish 1991. • QueenslandUniversityofTecnology: http://jmusic.ci.qut.edu.au/index.html