Progetto di
This presentation is the property of its rightful owner.
Sponsored Links
1 / 15

Progetto di Linguaggi e modelli computazionali M PowerPoint PPT Presentation


  • 90 Views
  • Uploaded on
  • Presentation posted in: General

Progetto di Linguaggi e modelli computazionali M. Prof. Enrico Denti. Progetto di: Francesco Paci. Presentazione del progetto. KeyBoard Pattern è un linguaggio per assegnare delle caratteristiche proprie del linguaggio Midi ad un set di tastiere.

Download Presentation

Progetto di Linguaggi e modelli computazionali M

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


Progetto di linguaggi e modelli computazionali m

Progetto di

Linguaggi e modelli computazionali M

Prof.

Enrico Denti

Progetto di:

Francesco Paci


Progetto di linguaggi e modelli computazionali m

Presentazione del progetto

  • KeyBoard Pattern è un linguaggio per assegnare delle caratteristiche proprie del linguaggio Midi ad un set di tastiere.

  • È possibile creare dei pattern di caratteristiche sonore.

  • Il software realizzato permette di collegare una tastiera midi ad un Personal Computer e di elaborare il segnale che essa fornisce in ingresso secondo le caratteristiche volute, modellate dal linguaggio.


Progetto di linguaggi e modelli computazionali m

Standard Midi

  • Lo standard midi è stato introdotto all’inizio degli anni ’80

  • Esso consiste di un insieme di hardware e software che concorrono alla standardizzazione della comunicazione di strumenti musicali.

  • Nel contesto del mio lavoro è stato studiato come vengono inviate le informazioni all’interno del protocollo midi.


Progetto di linguaggi e modelli computazionali m

Messaggi Midi

  • I messaggi scambiati tra i Midi Devicesono di due tipi:

    • ChannelMessage

      • Channel Voice Message

      • Channel System Message

    • System Message

  • I messaggi che scambiano le informazioni relative alla pressione dei tasti e al canale utilizzato sono i Channel Voice Message.

  • Ogni midi Device può utilizzare 16 canali di trasmissione in modalità MONO (trasmette su un solo canale alla volta)

  • Le caratteristiche che il midi consente di modellare su ogni tasto sono le seguenti:

    • Banco (Timbro del suono)

    • Transpose

    • Pitch Wheel (valori tra -8192 e 8191)

    • Modulation (valori tra 0 e 127)


Progetto di linguaggi e modelli computazionali m

Scopo del linguaggio

  • Lo scopo del progetto è poter assegnare le caratteristiche dei channel voice message ad un insieme di tasti. L’insieme dei tasti a cui assegnarle è arbitrario e specificabile tramite il linguaggio.

  • Quindi è possibile ognuno dei 16 canali in tanti gruppi di note ed assegnare ad ognuno di questi delle caratteristiche, indipendenti dalle altre.

  • I gruppi possono essere composti da un numero qualsiasi di note compreso tra 1 e 128 per ogni canale.

  • Non possono essere immessi dei gruppi sovrapposti

  • Lo stesso banco può essere assegnato a più canali ed anche a più gruppi appartenenti allo stesso canale.


Progetto di linguaggi e modelli computazionali m

Midi in Java

  • In java il protocollo midi può essere sfruttato tramite le classi appartenenti alla libreria javax.sound.midi

  • Questa libreria mette a disposizione tutti i metodi per accedere ai Midi Device presenti nel sistema.

  • Per intercettare i messaggi scambiati è stata implementata la classe astratta Receiver che permette di implementare il metodo send.

  • Attraverso questo metodo è possibile intercettare i messaggi midi in ingresso e modificarli prima che vengano inviati al sintetizzatore.


Progetto di linguaggi e modelli computazionali m

Grammatica

  • Non Terminali:

  • <scope> : < LIVESESSION > "{" (<body>)+ "}" < EOF >

  • <body> : < KEYBOARD > <NOME> "{" <statement > "}“

  • <statement>: <canale> <contenuto>+

  • <canale> : < CHANNEL > <NUMERO> ";"

  • <contenuto> : < OPTIONS > "(" < TASTI > ")" "{" <opzioni> "}“

  • <opzioni> : <strumento> <transpose>? <pitch>? <modulation>?

  • <strumento> : < BANK > <NUMERO> ";“

  • <transpose> : < TRANSPOSE > <NUMERO> ";“

  • <pitch> : < PITCH > <NUMERO> ";“

  • <modulation> : < MODULATION > <NUMERO> ";"


Progetto di linguaggi e modelli computazionali m

Grammatica alternativa

  • Non Terminali:

  • <scope> : < LIVESESSION > "{" (<body>)+ "}" < EOF >

  • <body> : < KEYBOARD > <NOME> "{" <statement > "}“

  • <statement>: <canale> <contenuto>+

  • <canale> : < CHANNEL > <NUMERO> ";"

  • <contenuto> : < OPTIONS > "(" < TASTI > ")" "{" <opzioni>+ "}“

  • <opzioni> : <strumento> | <transpose> | <pitch> |<modulation>

  • <strumento> : < BANK > <NUMERO> ";“

  • <transpose> : < TRANSPOSE > <NUMERO> ";“

  • <pitch> : < PITCH > <NUMERO> ";“

  • <modulation> : < MODULATION > <NUMERO> ";"


Progetto di linguaggi e modelli computazionali m

Grammatica

  • Terminali:

  • < LIVESESSION: "LiveSession" >

  • < KEYBOARD: "keyboard" >

  • < ACTIVE: "active" >

  • < CHANNEL: "channel" >

  • < OPTIONS: "options" >

  • < BANK: "bank" >

  • < TRANSPOSE: "transpose" >

  • < PITCH: "pitch" >

  • < MODULATION: "modulation" >

  • < TASTI: <NUMERO> ":" <NUMERO> >

  • <NOME: <CARATTERE> (<CARATTERE> | <CIFRA>)*>

  • <CARATTERE: ["a"-"z","A"-"Z","_","\'"]>

  • <NUMERO: (< SEGNO >)? (<CIFRA>)+ >

  • <SEGNO: "+" | "-" >|

  • <CIFRA: ["0"-"9"] >


Progetto di linguaggi e modelli computazionali m

Strumenti di realizzazione

  • Java Tree Builder

  • JavaCCeclipse plug-in

  • Eclipse - ambiente di sviluppo


Progetto di linguaggi e modelli computazionali m

Esempi di utilizzo

  • LiveSession{

  • keyboard tast1{

  • channel 1;

  • options (1:50){

  • bank 56;

  • transpose -4;

  • }

  • }

  • }


Progetto di linguaggi e modelli computazionali m

Esempi di utilizzo

  • LiveSession{

  • keyboard tast1{

  • channel 12;

  • options (1:50){

  • bank 3;

  • transpose 4;

  • }

  • }

  • keyboard tast2{

  • channel 2;

  • options (1:100){

  • bank 12;

  • transpose 4;

  • pitch 23;

  • }

  • }

  • }


Progetto di linguaggi e modelli computazionali m

Test

  • Bome’s mouse keyboard– per comodità

  • LoopBevirtual midi port – per far credere al sistema operativo che stiamo usando un ingresso midi “reale”

  • Possibilità di utilizzo di qualsiasi tastiera come output Standard MIDI


Progetto di linguaggi e modelli computazionali m

Limiti del linguaggio

  • Linguaggio di tipo 3

  • Seppure la grammatica sia in grado di generare un linguaggio infinito, il linguaggio in oggetto è limitato a causa delle caratteristiche modellate.


Progetto di linguaggi e modelli computazionali m

Sviluppi futuri

  • Integrazione pannello di scelta input e output midi.

  • Possibilità di definizione di tastiere non associate ad un canale per avere una più vasta gamma di scelta senza modificare la grammatica.

  • Migliorare l’interfaccia grafica per interazione con l’utente, in conseguenza anche al punto precedente.

  • Estendere le modifiche dei parametri al supporto di canali live controllati da tastiera


  • Login