1 / 15

Progetto di Linguaggi e modelli computazionali M

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.

bob
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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Progetto di Linguaggi e modelli computazionali M Prof. Enrico Denti Progetto di: Francesco Paci

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

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

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

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

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

  7. 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> ";"

  8. 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> ";"

  9. 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"] >

  10. Strumenti di realizzazione • Java Tree Builder • JavaCCeclipse plug-in • Eclipse - ambiente di sviluppo

  11. Esempi di utilizzo • LiveSession{ • keyboard tast1{ • channel 1; • options (1:50){ • bank 56; • transpose -4; • } • } • }

  12. 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; • } • } • }

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

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

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

More Related