Web MIDI API - Esempi Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)
Prerequisiti Competenze Rudimenti di programmazione per il Web HTML + CSS + JavaScript Catena MIDI: sintetizzatore MIDI hardware o software (virtuale) collegato alla macchina Esempi: CoolSoft VirtualMIDISynth (Windows), SimpleSynth (Mac), FluidSynth (multipiattaforma) Browser: Chrome / Chromium Programmazione MIDI (Prof. Luca A. Ludovico) 17. Web MIDI API
Esempio: xilofono Caratteristiche: Invio di messaggi di NoteOn, NoteOff e Program change Parametrizzazione del pitch MIDI a seconda dell’area cliccata Possibilità di scelta tra gli output MIDI rilevati nel sistema xilofono.html Programmazione MIDI (Prof. Luca A. Ludovico) 17. Web MIDI API
Esercizio: tastiera virtuale Questo esercizio richiede l’associazione di eventi MIDI (in particolare NoteOn e NoteOff) a eventi generati dall’interazione dell’utente con la pagina Web (in particolare onmousedown, e onmouseup/onmouseout). Si chiede di simulare graficamente una tastiera usando <div> o <canvas>. Deve essere consentito all’utente di scegliere il timbro da associare al controller virtuale, inviando messaggi opportuni di Program Change. tastiera_virtuale.html Programmazione MIDI (Prof. Luca A. Ludovico) 17. Web MIDI API
Esempio: armonizzatore Questo esempio introduce l’invio di messaggi su vari canali, a ciascuno dei quali viene associata inizialmente una patch. E’ possibile creare tipi di armonizzazione differente, a seconda della scelta da parte dell’utente: triadi maggiori (n, n+4, n+7) triadi minori (n, n+3, n+7) secondo rivolto della triade maggiore, ossia quarta giusta e sesta maggiore (n, n+5, n+9). Come esercizio, si aggiungano altri modelli di accordo. armonizzatore.html Programmazione MIDI (Prof. Luca A. Ludovico) 17. Web MIDI API
Esempio 3: esecuzione_melodia.html Questo esempio mostra come sfruttare il differimento nell’invio di messaggi per eseguire un’intera melodia. Problema: una volta lanciata l’esecuzione, non c’è modo di stopparla fino alla sua naturale conclusione (quando l’ultimo messaggio viene consumato). Soluzione: implementare la lettura della struttura dati attraverso un timer, anziché differire nel tempo l’invio di messaggi. esecuzione_melodia.html Programmazione MIDI (Prof. Luca A. Ludovico) 17. Web MIDI API