Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MIDI.
Corso: Elettronica III Studente: Giancarlo Todone
Materiali
1 x microcontrollore Microchip PIC18F452 2 x 3-to-8 demux 74hc138 Alimentazione stabilizzata a 5v tramite integrato 78ls05 e un paio di condensatori Clock da 20 MHz con quarzo e condensatori stabilizzatori Resistenze da 2.2K e 10K (+ 1 da 220 e un trimmer da 1K)
Attrezzature
Multimetro Oscilloscopio Frequenzimetro Alimentatore da banco PC con porta seriale e porta MIDI
Setup base
Lalimentazione viene fornita stabilizzata dal regolatore di tensione 78ls05 e dai due condensatori di contorno La resistenza posta tra MCLR e Vcc inibisce il reset Il quarzo da 20 MHz e i condensatori stabilizzatori forniscono il clock ( facile sostituire il quarzo con uno fino a 40 MHz; il software andrebbe modificato di
La matrice di contatti
La matrice di contatti della tastiera pu essere vista come una griglia di interruttori 8 banchi x 8 note, ai quali vanno aggiunti altri 8 banchi per i contatti dedicati al rilevamento della dinamica. Lo schema (semplificato qui a 3 banchi di tre note) evidenzia le connessioni e la presenza di diodi per evitare ritorni di tensione durante multiple pressioni contemporanee. Le resistenze di pull-up sulla destra sono interne al microcontrollore.
La matrice di contatti
0xE0-0xEF Pitch wheel indica la posizione assoluta della rotella che sposta finemente il tono; seguita da due bytes rappresentanti una parola di 14 bits (i 7 bits meno significativi per primi)
0xFE Active Sensing Token viene mandato ogni 300 ms circa dal master quando questo non ha niente da fare (per far capire che ancora vivo); quando non viene ricevuto alcun messaggio per pi di 300 ms il master da considerarsi
Software
Ciclo infinito Ad ogni ciclo si legge tutto I messaggi MIDI appropriati vengono generati e inviati alloccorrenza
Procedura di scansione
0 7 : 8 banchi di 8 switches before 8 15 : 8 banchi di 8 switches after I de-mux sono invertenti riconoscimento degli eventi void scanBeforeAndAfter() { appena for (i = 0; I < 16; ++i ) { accaduti oldData[i] =newData[i];
newData[i] = ~PORTB; justPressed[i] = ~ oldData[i] & newData[i]; justReleased[i] = oldData[i] & ~ newData[i]; } }
Procedura di scansione
A A B B C C D D E E F F G G H H
Allattivazione di ognuno degli 8 banchi di contatti before e degli 8 banchi after, le corrispondenti 8 note (o meno nell ultimo banco) sono leggibili direttamente sulla PORTB del PIC in logica negativa
Altri controlli
I controlli digitali (switch del pedale sustain) vengono letti tramite le porte rimaste libere I controlli analogici vengono gestiti tramite lADC interno del 18F452 (in figura PB)
Active Sensing
Ogni volta che un comando o un dato qualsiasi viene inviato, il contatore activesensingTimeout viene azzerato Quando invece raggiunge 300, viene spedito un token Con 1000 scansioni al secondo, un token viene inviato ogni 300 ms di inattivit per segnalare il funzionamento (come richiesto dal protocollo)
++ activesensingTimeout; if (activeSensingTimeout>300) { activesensingTimeout = 0; send(activeSensingToken); }
Fine
Dettagli nella documentazione Links e downloads sulla pagina di presentazione in inglese e sul sito online http://sites.google.
com/site/nerdsheadquarter/pic_midi
progetti, schemi, immagini, foto, informazioni e codici sorgenti di Giancarlo Todone vengono rilasciati con licenza Apache 2.0, a parte le informazioni sul protocollo MIDI 1.1 dedotte dallottimo documento The Usenet MIDI Primer di Bob McQueer, facilmente reperibile in rete.