Trasmettitori e ricevitori

Slides:



Advertisements
Presentazioni simili
Concetti fondamentali
Advertisements

Dispositivi MIDI in Java
Progetto di Linguaggi e modelli computazionali M Prof. Enrico Denti Progetto di: Francesco Paci.
Table View. Problemi ricorrenti Una situazione ricorrente è quella in cui il controller potrebbe avere un’altezza superiore a quella dello schermo. In.
Giuseppe Andronico CCR-WS10 Santa Tecla, 18 Maggio 2010 Introduzione MPI & GPU.
Realtà aumentata Prof. M. Bracardi Come creare AURA per la realtà aumentata Di cosa abbiamo bisogno? 1) App Aurasma (fare il download, funziona su sistemi.
Unità di apprendimento 6 Dal problema al programma.
21/09/2016Presentazione a cura di1 AVIPA 1. Il progetto delle interfacce: esempi di modelli Viterbo, 10 Dicembre 2008.
12/11/2016www.renatopatrignani.net1 DIETRO IL COMPUTER PORTE E PERIFERICHE.
Lezione 11 Architetture dei VI Obiettivi di apprendimento: A.Tecniche di gestione degli errori B.Architetture dei VIs E.VI templates.
Table View. Problemi ricorrenti Una situazione ricorrente è quella in cui il controller potrebbe avere un’altezza superiore a quella dello schermo. In.
I socket.
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
IL SOFTWARE (FPwin 6.0).
NAT, Firewall, Proxy Processi applicativi.
Introduzione alla programmazione MIDI
La comunicazione scritta
Java World Introduzione.
La comunicazione attraverso la rete
Java: concetti e costrutti base
1 Grandezze e unità 1.1 grandezza
Package javax.sound.midi
Applicazione web basata su web service e web socket
I FRUTTI DELL’ENERGIA.
Gestire la navigazione
Terza Lezione → Navigare nel file System → parte 2
Dispositivi MIDI in Java
Il Binding Nicolò Sordoni.
Editing digitale della partitura Creazione di plugin
Sistema Scrapers
Web MIDI API - Esempi Lezione 24
Report 21/11/2007 Giovanni d’Angelo
Programmazione a oggetti
Dati MIDI in Java Lezione 19
Programmazione a oggetti
La storia dei social è come vengono utilizzati
I BUS È un insieme di fili conduttori che permette il passaggio di dati tra le varie periferiche del pc.
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Corso Java Introduzione.
Messaggi Control Change
Valorizza il tuo centro estivo!
Introduzione alla nuova versione di PowerPoint
Introduzione alla nuova versione di PowerPoint
Modulo 6 I decibel.
Sviluppo di un programma
Lettura di input MIDI da Web MIDI API
© 2007 SEI-Società Editrice Internazionale, Apogeo
Lezione 16 Web MIDI API Programmazione MIDI (Prof. Luca A. Ludovico)
Standard MIDI File: eventi MTrk
Lezione 7 Laboratorio 1 Programmazione MIDI (Prof. Luca A. Ludovico)
Messaggi System Exclusive
Messaggi Channel Mode Lezione 5
Processi e thread in Windows 2000
Web MIDI API - Esempi Lezione 17
Messaggi System Common e System Real Time
Standard MIDI File Lezione 10
Introduzione alla nuova versione di PowerPoint
Esercitazione su SMF Lezione 12
Esercizi sulla Web MIDI API
Collegamento di input e output tramite Web MIDI API
Circuiti combinatori Laboratorio di Architetture degli Elaboratori I
Indicazioni: Usare queste diapositive e note per creare il progetto.
Fondamenti di Informatica
Uno step sequencer Lezione 18
Java Introduzione.
LA CONFIGUARAZIONE DEL PROGETTO
Transcript della presentazione:

Trasmettitori e ricevitori Lezione 21 Trasmettitori e ricevitori Programmazione MIDI (Prof. Luca A. Ludovico)

MIDI player parametrico Il codice EsempioMidiPlayer.java implementa un semplice MIDI player che emette un messaggio NoteOn seguito da un NoteOff opportunamente distanziato sul synth di default In ingresso è necessario specificare il numero dello strumento GM e il pitch della nota E’ presente quindi anche un primo messaggio di Program Change EsempioMidiPlayer.java Programmazione MIDI (Prof. Luca A. Ludovico) 21. Trasmettitori e ricevitori

Trasmettitori e ricevitori (ripasso) Ripasso: un MidiDevice può essere un trasmettitore di eventi MIDI, un ricevitore o entrambe le cose. Dunque MidiDevice deve mettere a disposizione istanze delle interfacce Transmitter o Receiver o entrambe. Tipicamente: le porte MIDI IN (che sono viste dal package come sorgenti di messaggi) presentano trasmettitori le porte MIDI OUT e i sintetizzatori presentano ricevitori i sequencer mettono a disposizione trasmettitori per il playback e ricevitori per le operazioni di registrazione Programmazione MIDI (Prof. Luca A. Ludovico) 21. Trasmettitori e ricevitori

Esempi Mittente Destinatari Porta MIDI In Synth Sequencer Midi Out 1 Trasmettitore Messaggio MIDI Ricevitore Mittente Destinatari Sequencer Midi Out 1 Midi Out 2 Trasmettitore 1 Messaggio MIDI Ricevitore Trasmettitore 2 Messaggio MIDI Ricevitore Programmazione MIDI (Prof. Luca A. Ludovico) 21. Trasmettitori e ricevitori

Invio di un messaggio a un ricevitore Abbiamo visto come creare direttamente un messaggio MIDI: ad esempio con il metodo di ShortMessage  void setMessage(int command, int channel, int data1, int data2) Una volta creato il messaggio, è possibile inviarlo a un oggetto Receiver (anche senza istanziare un trasmettitore) usando il metodo della classe Receiver void send(MidiMessage message, long timeStamp) Ricevitore.java Programmazione MIDI (Prof. Luca A. Ludovico) 21. Trasmettitori e ricevitori

Timestamp Il metodo della classe Receiver void send(MidiMessage message, long timeStamp) richiede di specificare un timestamp Se il dispositivo destinatario deve gestire il messaggio in tempo reale (ossia non appena possibile), va specificato il valore -1. In caso contrario, è possibile esprimere un timestamp in microsecondi Non è detto che il dispositivo ricevente sia in grado di gestire i timestamp, o che gestisca intervalli temporali negativi o futuri ma troppo lontani nel tempo Programmazione MIDI (Prof. Luca A. Ludovico) 21. Trasmettitori e ricevitori

Connessione di ricevitori e trasmettitori Il caso più comune però non è creare messaggi ex novo, senza usare un trasmettitore, ma connettere dispositivi MIDI che scambiano messaggi tra loro. E’ possibile connettere un dispositivo mittente a uno o più destinatari Attenzione alla differenza tra dispositivi (per noi “mittente” e “destinatario”) e ricevitori/trasmettitori (multipli per dispositivo) Analogamente, si può fare in modo che un dispositivo destinatario ascolti da più mittenti E’ possibile per un singolo ricevitore ascoltare più trasmettitori (ma non il viceversa!) TrasmettitoreRicevitore.java TrasmettitoreRicevitori.java Programmazione MIDI (Prof. Luca A. Ludovico) 21. Trasmettitori e ricevitori

Trasmettitori / ricevitori supportati Per conoscere il numero di trasmettitori / ricevitori supportati da un dato dispositivo, si possono usare i metodi di MidiDevice int getMaxTransmitters() int getMaxReceivers() Attenzione: si tratta del numero totale, non il numero di quelli attualmente disponibili Per sapere se un dato trasmettitore ha un ricevitore associato, si può invocare Transmitter.getReceiver() Programmazione MIDI (Prof. Luca A. Ludovico) 21. Trasmettitori e ricevitori

Chiusura delle connessioni Completato lo scambio di messaggi, è possibile liberare risorse invocando il metodo close() sui singoli ricevitori e trasmettitori Poiché un ricevitore può ascoltare da più trasmettitori, invocando il metodo Transmitter.setReceiver non si chiude la connessione precedentemente stabilita tra lo stesso ricevitore e un altro trasmettitore Si può anche invocare MidiDevice.close(), che disabilita un dispositivo chiudendo tutti i suoi ricevitori e trasmettitori Programmazione MIDI (Prof. Luca A. Ludovico) 21. Trasmettitori e ricevitori

Esempio conclusivo Obiettivo: recuperare tutti i trasmettitori dei device-mittente installati sulla macchina e associarli al ricevitore di default del synth di default. Esempio d’uso: collegando un dispositivo MIDI (ad esempio una tastiera virtuale tramite una porta MIDI In virtuale), gli eventi nota verranno renderizzati da parte del synth. AscoltoPortaMidi.java Programmazione MIDI (Prof. Luca A. Ludovico) 21. Trasmettitori e ricevitori