Tablabla
Download
1 / 34

Tablabla - PowerPoint PPT Presentation


  • 108 Views
  • Uploaded on

Università degli Studi di Bologna – Ingegneria Informatica Specialistica Anno Accademico 2007/2008. Tablabla. Progetto di Valent Cristina Corso di “ Linguaggi e Modelli Computazionali LS ” Prof. Enrico Denti. Agenda. Obiettivo Tablature: per saperne di più

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Tablabla' - yukio


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Tablabla

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

Tablabla

Progetto di Valent Cristina

Corso di

“Linguaggi e Modelli Computazionali LS”

Prof. Enrico Denti


Agenda
Agenda Informatica Specialistica

  • Obiettivo

  • Tablature: per saperne di più

  • Grammatica: realizzazione ed analisi

  • Esempi di frasi

  • Progetto: implementazione

  • Sviluppi futuri


Obiettivo
Obiettivo Informatica Specialistica

Il progetto si propone di realizzare un linguaggio per la

generazione automatica di tablature per chitarra classica a:

  • 19 tasti

  • 6 corde

  • accordatura standard.


Tablature: Informatica Specialistica

per saperne di più


Tablature spiegazione
Tablature: spiegazione Informatica Specialistica

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


Tablature rappresentazione
Tablature: rappresentazione Informatica Specialistica

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


Tablature rappresentazione1
Tablature: rappresentazione Informatica Specialistica

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 0significa corda suonata a vuoto)

    Più corde suonate contemporaneamente costituiscono un

    accordo.


Tablature esempio
Tablature: esempio Informatica Specialistica

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

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

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

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

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

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

Rappresenta l’accordatura (standard)

Significa suonare I corda a vuoto

Significa suonare II corda terzo tasto

Significa non suonare la corda

Accordo (in questo caso è un DO)


Tablature tecniche 1
Tablature: tecniche (1) Informatica Specialistica

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


Tablature tecniche 2
Tablature: tecniche (2) Informatica Specialistica

  • 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


Tablature tecniche 3
Tablature: tecniche (3) Informatica Specialistica

  • 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


Grammatica: Informatica Specialistica

realizzazione ed analisi


Grammatica 1
Grammatica (1) Informatica Specialistica

<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>)*


Grammatica 11
Grammatica (1) Informatica Specialistica

Notazione posizionaleNum. Corda = Posizione

Durata qualitativa della configurazione di GruppoNote

<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


Grammatica 2
Grammatica (2) Informatica Specialistica

<SPECIAL_SYMBOL> ::= x | -

<UNARY_SYMBOL> ::= v | m

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

<CIFRA_TASTO> ::= [ 2 – 9 ]

corda non suonata

stopped

vibrate

palm mute

slide down

hammer on

slide up

bending

release

pull off


Tipologia grammatica
Tipologia grammatica Informatica Specialistica

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).


Tipologia linguaggio
Tipologia linguaggio Informatica Specialistica

La grammatica nonpresenta 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


Rules
ε Informatica Specialistica- 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.


Analisi grammatica
Analisi grammatica Informatica Specialistica

In sintesi il linguaggio è:

  • context-free

  • privo di ε– rules

    Si 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.


Starter symbols
Starter Symbols Informatica Specialistica

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!


Starter symbols1
Starter Symbols Informatica Specialistica

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!


Starter symbols2
Starter Symbols Informatica Specialistica

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}

La grammaticaè LL(1)

DISGIUNTI!


Esempi Informatica Specialistica

di frasi


Esempi di comandi
Esempi di comandi Informatica Specialistica

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


Errori semantici
Errori semantici Informatica Specialistica

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


Progetto: Informatica Specialistica

implementazione


Tablabla1
Tablabla Informatica Specialistica

Il sistema accetta le frasi del linguaggio e genera le

relative 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


Pattern visitor
Pattern Visitor Informatica Specialistica

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.


Funzionamento Informatica Specialistica

Lexer

Parser

Inserimentocomandi

Produce la tablatura

Visitor

Visita

APT


Lexer e parser
Lexer e Parser Informatica Specialistica

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());


Tabvisitor
TabVisitor Informatica Specialistica

Il TabVisitor in sostanza esegue i seguenti passi:

  • visita l’albero generato dal parser

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

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


Strumenti utilizzati
Strumenti utilizzati Informatica Specialistica

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.


Conclusioni Informatica Specialistica


Sviluppi futuri
Sviluppi futuri Informatica Specialistica

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


  • ad