Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico...

34
Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Progetto di Valent Valent Cristina Cristina Corso di Linguaggi e Modelli Computazionali LS

Transcript of Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico...

Page 1: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Tablabla Tablabla

Università degli Studi di Bologna – Ingegneria Informatica SpecialisticaAnno Accademico 2007/2008

Progetto di Valent CristinaValent Cristina

Corso di

“Linguaggi e Modelli Computazionali LS”

Prof. Enrico Denti

Page 2: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Agenda

• Obiettivo• Tablature: per saperne di più• Grammatica: realizzazione ed analisi• Esempi di frasi• Progetto: implementazione • Sviluppi futuri

Page 3: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Obiettivo

Il progetto si propone di realizzare un linguaggio per la

generazione automatica di tablature per chitarra classica a:• 19 tasti• 6 corde• accordatura standard.

Page 4: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Tablature: Tablature:

per saperne di piùper saperne di più

Page 5: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Tablature: spiegazione

Sono un metodo per scrivere partiture di chitarra e basso

usando una notazione in codice ASCII.

Ciò consente di facilitare:

• la lettura e scrittura di partiture da parte di musicisti meno esperti

• lo scambio di partiture via internet

Page 6: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Tablature: rappresentazione

La tablatura presenta 6 righe.

Ciascuna riga:• realizza graficamente una diversa corda della chitarra

• inizia con un carattere alfabetico che indica l’accordatura della corda a cui la riga è associata.

L’accordatura standard è:• e per I corda (mi cantino)• B per II corda (si)• G per III corda (sol)• D per IV corda (re)• A per V corda (la)• E per VI corda (mi grave)

Solitamente le accordature riportano i nomi delle note in inglese

Page 7: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Tablature: rappresentazione

In ogni istante una corda può:• non essere suonata• essere suonata

La riga associata a ciascuna corda riporterà:• il simbolo “-” nel caso di corda non suonata• il numero del tasto da premere nel caso di corda suonata

(i numeri vanno da 0 a 19 dove 0 significa corda suonata a vuoto)

Più corde suonate contemporaneamente costituiscono un accordo.

Page 8: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Tablature: esempio

e-----------0-------------------------------

B---3---------------------------1-----------

G-------------------------------------------

D-------------------------------2-----------

A-------------------------------3-----------

E-------------------------------------------

Significa suonare II corda terzo tasto

Rappresenta l’accordatura (standard)

Accordo (in questo caso è un DO)

Significa suonare I corda a vuoto

Significa non suonare la corda

Page 9: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Tablature: tecniche (1)

E’ possibile inoltre indicare delle tecniche esecutive:

• hammer on (passaggio da nota grave a nota acuta)Si pizzica la prima nota e con movimento rapidoe deciso si preme la nota successiva

• pull off (passaggio da nota acuta a nota grave)Si pizzica la prima nota, si trascina la corda (tipo bending) la si rilascia facendola vibrare e si suona così la seconda nota

• bending (aumento dell’altezza della nota)Si pizzica la prima nota normalmente, si spinge la corda verso l’alto per alzarla di un numero di toni pari alla differenza con la seconda nota riportata

Page 10: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Tablature: tecniche (2)

• release (diminuzione dell’altezza della nota)Si tiene la corda in tensione (tramite bendind) e successivamentela si rilascia gradualmente riportando la nota nella posizionedi quiete

• slide up (slittamento da nota grave a nota acuta)Si pizzica la prima nota, si slitta lungo la tastiera verso il corpo della chitarra

• slide down (slittamento da nota acuta a nota grave)Si pizzica la prima nota, si slitta lungo la tastiera verso la palettadella chitarra

Page 11: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Tablature: tecniche (3)

• vibrate (diminuzione dell’altezza della nota)Sono piccoli spostamenti della corda rispetto al tasto (si sfrutta il principio del bending)

• palm mute (blocco della vibrazione della corda)Si appoggia il palmo della mano a ridosso del ponte in modo

da sfiorarne le corde

• stopped (smorzamento del suono)Si allenta la presa delle dita che agiscono sulla tastieradurante l'esecuzione del brano

Page 12: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Grammatica:Grammatica:

realizzazione ed analisirealizzazione ed analisi

Page 13: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Grammatica (1)

<Scopo> ::= (<GruppoNote> ; <Durata> . )+<GruppoNote> ::= <NotaCorda> , <NotaCorda> , <NotaCorda>,

<NotaCorda> , <NotaCorda> , <NotaCorda> <NotaCorda> :: = <SPECIAL_SYMBOL> |

(<UNARY_SYMBOL>)? <Tasto> ( <BINARY_SYMBOL> (<UNARY_SYMBOL>)? <Tasto>

)*<Tasto> ::= 0 | <CIFRA_TASTO> | 1(<Cifra>)?<Cifra> ::= 0 | <CifraNonNulla><CifraNonNulla> ::= 1 | <CIFRA_TASTO><Durata> ::= 0 | <CifraNonNulla>(<Cifra>)*

Page 14: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Grammatica (1)

<Scopo> ::= (<GruppoNote> ; <Durata> . )+<GruppoNote> ::= <NotaCorda> , <NotaCorda> , <NotaCorda>,

<NotaCorda> , <NotaCorda> , <NotaCorda> <NotaCorda> :: = <SPECIAL_SYMBOL> |

(<UNARY_SYMBOL>)? <Tasto> ( <BINARY_SYMBOL> (<UNARY_SYMBOL>)? <Tasto>

)*<Tasto> ::= 0 | <CIFRA_TASTO> | 1(<Cifra>)?<Cifra> ::= 0 | <CifraNonNulla><CifraNonNulla> ::= 1 | <CIFRA_TASTO><Durata> ::= 0 | <CifraNonNulla>(<Cifra>)*

I corda

VI corda

Notazione posizionaleNum. Corda = Posizione Durata qualitativa della

configurazione di GruppoNote

Page 15: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Grammatica (2)

<SPECIAL_SYMBOL> ::= x | -

<UNARY_SYMBOL> ::= v | m

<BINARY_SYMBOL> ::= h | p | b | r | u | d

<CIFRA_TASTO> ::= [ 2 – 9 ]

stopped corda non suonata

vibrate palm mute

slide down

pull off

bending

release

hammer on slide up

Page 16: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Tipologia grammatica

Le regole di produzione hanno la forma

A → βdove A є VN e β є V+

Secondo la classificazione di Chomsky la grammatica risulta essere di tipo 2 (context - free).

Page 17: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Tipologia linguaggio

La grammatica non presenta self-embedding, ovvero non prevede simboli non terminali autoinclusivi del tipo:

A → β A δdove A є VN e δ,β є V+

il linguaggio generato è di tipo 3 (linguaggio regolare)

*

Significa

Page 18: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

ε - rules

La grammatica è priva di ε – rules.Non presenta nemmeno la regola di produzione

S → εdove S rappresenti lo scopo della grammatica.

Il linguaggio quindi non prevede l’uso della stringa vuota, anche perché una tablatura vuota non avrebbe alcun senso.

Page 19: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Analisi grammatica

In sintesi il linguaggio è:• context-free• privo di ε – rulesSi può verificare se è analizzabile in maniera deterministica dalle tecniche LL, auspicando che nel caso possa essere LL(1).

Visto che la grammatica non genera la stringa vuota, condizione necessaria e sufficiente perché una grammatica sia LL(1) è che per ogni metasimbolo, che appare alla sinistra di più produzioni, gli starter symbol corrispondenti alle parti destre delle produzioni alternative siano disgiunti.

Page 20: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Starter Symbols

Sapendo che <CIFRA_TASTO> :: = [2 - 9]

<Tasto> ::= 0 | <CIFRA_TASTO> | 1(<Cifra>)?SS(0) = {0}SS(<CIFRA_TASTO>) = {2..9}SS(1(<Cifra>)?) = {1}

<CifraNonNulla> ::= 1 | <CIFRA_TASTO>SS(1) = {1}SS(<CIFRA_TASTO>) = {2..9}

<Cifra> ::= 0 | <CifraNonNulla>SS(0) = {0}SS(<CifraNonNulla>) = {1..9}

<Durata> ::= 0 | <CifraNonNulla>(<Cifra>)*SS(0) = {0}SS(<CifraNonNulla>(<Cifra>)*) = {1..9}

DISGIUNTI!

DISGIUNTI!

DISGIUNTI!

DISGIUNTI!

Page 21: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Starter Symbols

Sapendo che:

<SPECIAL_SYMBOL> ::= x | -

<UNARY_SYMBOL> ::= v | m

<NotaCorda> :: = <SPECIAL_SYMBOL> |

(<UNARY_SYMBOL>)? <Tasto>

( <BINARY_SYMBOL> (<UNARY_SYMBOL>)? <Tasto>)*

SS(<SPECIAL_SYMBOL>) = {x, -}

SS((<UNARY_SYMBOL>)? <Tasto> ( <BINARY_SYMBOL> (<UNARY_SYMBOL>)? <Tasto> )* ) = {v,m,0..9}

DISGIUNTI!

Page 22: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Starter Symbols

Sapendo che:

<SPECIAL_SYMBOL> ::= x | -

<UNARY_SYMBOL> ::= v | m

<NotaCorda> :: = <SPECIAL_SYMBOL> |

(<UNARY_SYMBOL>)? <Tasto>

( <BINARY_SYMBOL> (<UNARY_SYMBOL>)? <Tasto>)*

SS(<SPECIAL_SYMBOL>) = {x, -}

SS((<UNARY_SYMBOL>)? <Tasto> ( <BINARY_SYMBOL> (<UNARY_SYMBOL>)? <Tasto> )* ) = {v,m,0..9}

DISGIUNTI!

La grammaticaè LL(1)

Page 23: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Esempi Esempi

di frasidi frasi

Page 24: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Esempi di comandi

Esempio:

-,5,-,-,-,-;3.

-,-,-,1h2pv1,-,-;4.

-,3u5,-,-,-,-;2.

-,a4,-,-,-,-;3.

-,-,-,-,3h,-;3.

Esempio di sequenza di tecniche

Errore lessicale!“a” non appartiene al linguaggio

Errore sintattico!Dopo “h” deve esserci un numero o un simbolo unario {v,m} seguito da un numero

Page 25: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Errori semantici

Esempi:

-,2h1,-,-,-,-;3.

-,2b1,-,-,-,-;3.

-,2u1,-,-,-,-;3.

-,1p2,-,-,-,-;3.

-,1r2,-,-,-,-;3.

-,1d2,-,-,-,-;3.

-,v0,-,-,-,-;3.

Tasto 1 {h,b,u} Tasto2Tasto1 < Tasto2

Tasto 1 {p,r,d} Tasto2Tasto1 > Tasto2

v TastoTasto > 0

Page 26: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Progetto:Progetto:

implementazioneimplementazione

Page 27: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Tablabla

Il sistema accetta le frasi del linguaggio e genera lerelative tablature, effettuando un controllo semantico relativo alle note in funzione delle tecniche esecutive.

Si compone dei seguenti package:• gui. Contenente tutte le classi per generare l’interfaccia

grafica• syntaxtree. Contenente le classi per l’APT• parser. Contenente le classi per scanner e parser• visitor. Contenente le classi per il visitor

Page 28: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Pattern Visitor

Per coniugare i vantaggi del metodo funzionale con quelli del modello object-oriented, per l’implementazione del è stato utilizzato il pattern di progetto che va sotto il nome di Visitor.

E’ il visitor che si occupa di realizzare l’analisi semantica, per mantenere una separazione da quella sintattica realizzata dal parser.

Essendo presente solo una interpretazione esiste un solo Visitor chiamato TabVisitor all’interno del progetto.

Page 29: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Inserimentocomandi

Lexer Parser

APTVisitor Visita

Produce

la tablatura

Funzionamento

Page 30: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Lexer e Parser

Il lexer:• è generato dal parser e si trova nella classe TabParserTokenManager

• effettua il controllo lessicale della frase inserita.

Il parser effettua:• il controllo sulla sintassi delle frasi inserite• la creazione dell’albero sintattico.Si trova all’interno della classe TabParser.Viene generato una sola volta e poi reinizializzato(parser.ReInit(new StringReader(areaCommand.getText());

Page 31: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

TabVisitor

Il TabVisitor in sostanza esegue i seguenti passi:

1. visita l’albero generato dal parser

2. effettua i controlli semantici relativi alle note in funzione delle tecniche esecutive

3. produce le tablature che verranno poi visualizzate nell’interfaccia utente e che potranno poi essere salvate su file

Page 32: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Strumenti utilizzati

Il progetto è stato realizzato in java (versione 1.6).

Gli strumenti usati sono:• JavaCC per la generazione automatica del parser• JTB per la costruzione automatica dell’albero sintattico e

i relativi Visitor di base

Il tutto è stato implementato usando come tool di sviluppo Eclipse 3.0.

Page 33: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

ConclusioniConclusioni

Page 34: Tablabla Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008 Valent Cristina Progetto di Valent Cristina.

Sviluppi futuri

Il progetto riesce già a realizzare tablature di qualità, ma si

potrebbe arricchirlo con altre funzionalità come:

• la possibilità di indicare graficamente gli armonici (spesso indicati fuori tablatura) siano essi:

– naturali

– artificiali

• la possibilità di indicare accordature differenti da quella standard