Tablabla Progetto di Valent Cristina

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

INFORMATICA Altre Istruzioni di I/O
Modulo 4 – Seconda Parte Foglio Elettronico
Interazione Uomo - Macchina
I linguaggi di programmazione
Sintassi (prima parte)
Analizzatori Sintattici con Cup Giuseppe Morelli.
Traduttore diretto dalla sintassi (seconda parte)
Parser Bottom UP Giuseppe Morelli. Parser Bottom UP Un parser Bottom Up lavora costruendo il corrispondente albero di parsing per una data stringa di.
Inizio… Linguaggi Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi Formali Linguaggi.
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente.
Fondamenti di Informatica I a.a Il linguaggio C Il preprocessore La sostituzione di macro Le compilazioni condizionali Linclusione di file C.
Programmazione Procedurale in Linguaggio C++
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Inizio nuovo lavoro.
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 91 Il modello OAI (Object-Action Interface) Sintassi e semantica: la sintassi specifica.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Unità Didattica 2 I Linguaggi di Programmazione
Windows Sistema operativo con interfaccia grafica per PC IBM compatibili (varie versioni dal 95) La gestione dei file viene fatta secondo le modalità.
I File.
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
Progetto per lesame di Linguaggi e Modelli Computazionali LS Chiara Chiara Gualtieri.
ANTLR V.3 Renzi Alberto.
Linguaggi e Modelli Computazionali M Prof. Enrico Denti
Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti.
Linguaggi e Modelli Computazionali LS - Prof E.Denti
CineMan Linguaggio per la descrizione della programmazione di cinema
Il mondo della chitarra
Facoltà di Ingegneria – Università di Bologna
Corso di Laurea Specialistica in Ingegneria Informatica Itinerari aerei Progetto per lesame di Linguaggi e Modelli Computazionali LS realizzato da Stefano.
S ::= Formazione Formazione ::= NomeSquadra Team NomeSquadra ::= Team ::= Schema Tabellino | Tabellino Schema ::= Difesa Tabellino ::= ElencoTitolari.
Linguaggio per la generazione di biglietti da visita
Gianfranco Zampolini Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.
Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.
EXCEL E FTP.
Paragrafi e allineamenti
Linguaggi e modelli computazionali LS
Progetto di un linguaggio e interprete per giocare a MemoryPlus Progetto di:Docente: Vito La PortaEnrico Denti.
Corso di Laurea Specialistica in Ingegneria Informatica Previsione dei Consumi Elettrici = Progetto per lesame di Linguaggi e Modelli Computazionali LS.
Un linguaggio ed un interprete per il gioco Citadels
Progetto don’t you forget
Progetto Fireworks Simulatore di spettacoli pirotecnici
SQL File Manager un nuovo modo di gestire il filesystem….
Università degli Studi di Bologna Facoltà di Ingegneria Anno Accademico 2007/2008 Laurea Specialistica in Ingegneria Informatica Linguaggi e Modelli Computazionali.
Chess Game Visualizer Un interprete per Short Algebraic Notation Progetto per lesame di Linguaggi e modelli computazionali LS prof. Denti – A.A. 2007/08.
Linguaggi e modelli computazionali LS Manni Tiziano
Interrogare il database
ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014.
Lezione 3 Struttura lessicale del linguaggio
Lezione 11 Riccardo Sama' Copyright  Riccardo Sama' Excel.
Introduzione a Javascript
Tag FRAMESET. I frame sono un particolare tipo di struttura HTML, che consente di suddividere la finestra del browser in diversi riquadri distinti. Un'insieme.
MUSICA PITAGORICA.
DRAUGHTS Linguaggi e Modelli Computazionali LS Linguaggio e interprete per effettuare una partita di dama inglese contro un’intelligenza artificiale Progetto.
Giannicola Spezzigu Accordo: sovrapposizione di 3 o più suoni Ogni sigla denota un accordo, ossia i suoni da cui esso è formato Accordi e.
Trading EToro Un linguaggio per descrivere e gestire operazioni di borsa Progetto di Linguaggi e Modelli Computazionali LS Prof. Enrico Denti Mancini Laura.
Progetto di Linguaggi e modelli computazionali M Prof. Enrico Denti Progetto di: Francesco Paci.
DerIntCalculator La calcolatrice per integrali e derivate Progetto di Linguaggi e Modelli Computazionali M Prof. Enrico Denti Realizzato da: Gabriella.
Linguaggi e Modelli Computazionali LS Anno Accademico 2007/2008 Alessio Della Motta Un linguaggio per descrivere partite di Maraffone: il gioco più popolare.
Linguaggi di programmazione: panoramica Linguaggi di programmazione ad alto livello: – –Programmazione procedurale – –Programmazione object oriented –
CAKE Ambiente per la scrittura e la riproduzione audio di ricette per torte Linguaggi e Modelli Computazionali LSElisabetta Visciotti.
Eye Computer Sistema per l'interazione con un computer dotato di controllo oculare Linguaggi e modelli computazionali LS Realizzato da: Ciavarella Primiano.
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
Microsoft Access Filtri, query. Filtri Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo.
Programmazione orientata agli Oggetti Introduzione a Java.
Impariamo ad usare Excel. Utilizzare l’interfaccia Avviare Excel e iniziare ad esplorare l'interfaccia per acquisire familiarità con esso… Non c'è modo.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Microsoft Word Idoneità Informatica. Inserire simboli Clic su Inserisci, nella Barra dei menu. Clic su Simbolo. Nella finestra Simbolo, vengono visualizzati.
Transcript della presentazione:

Tablabla Progetto di Valent Cristina 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ù Grammatica: realizzazione ed analisi Esempi di frasi Progetto: implementazione Sviluppi futuri

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.

Tablature: per saperne di più

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

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

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.

Tablature: esempio Rappresenta l’accordatura (standard) 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) E’ possibile inoltre indicare delle tecniche esecutive: hammer on (passaggio da nota grave a nota acuta) Si pizzica la prima nota e con movimento rapido e 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) release (diminuzione dell’altezza della nota) Si tiene la corda in tensione (tramite bendind) e successivamente la si rilascia gradualmente riportando la nota nella posizione di 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 paletta della chitarra

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 tastiera durante l'esecuzione del brano

realizzazione ed analisi Grammatica: realizzazione ed analisi

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

Notazione posizionale Num. Corda = Posizione Grammatica (1) Notazione posizionale Num. 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) <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 hammer on slide up bending pull off release

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

il linguaggio generato è di tipo 3 (linguaggio regolare) 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

ε - 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 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 DISGIUNTI! DISGIUNTI! DISGIUNTI! DISGIUNTI! 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} <Cifra> ::= 0 | <CifraNonNulla> SS(<CifraNonNulla>) = {1..9} <Durata> ::= 0 | <CifraNonNulla>(<Cifra>)* SS(<CifraNonNulla>(<Cifra>)*) = {1..9} DISGIUNTI! DISGIUNTI! DISGIUNTI! DISGIUNTI!

Starter Symbols <NotaCorda> :: = <SPECIAL_SYMBOL> | 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 Symbols <NotaCorda> :: = <SPECIAL_SYMBOL> | 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 di frasi

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

Errori semantici Esempi: -,2h1,-,-,-,-;3. -,2b1,-,-,-,-;3. -,2u1,-,-,-,-;3. -,1p2,-,-,-,-;3. -,1r2,-,-,-,-;3. -,1d2,-,-,-,-;3. -,v0,-,-,-,-;3. Tasto 1 {h,b,u} Tasto2 Tasto1 < Tasto2 Tasto 1 {p,r,d} Tasto2 Tasto1 > Tasto2 v Tasto Tasto > 0

Progetto: implementazione

Tablabla 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 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 Lexer Parser Inserimentocomandi Produce la tablatura Visitor Visita APT

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

TabVisitor 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 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

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