Ho recentemente sostituito la precedente tastiera Yamaha con una piccola ed economica tastiera controller MIDI.
Questa è dotata del classico connettore Midi Out e di una porta USB per alimentazione e connessione al PC.
Tramite la porta USB e uno dei tanti plugin VST sul PC il funzionamento è tutto regolare.
Ci sono però 2 svantaggi: la tastiera può essere utilizzata solo vicino al PC e questo deve essere ovviamente acceso e con il programma attivo (che consuma risorse).
Ho quindi pensato di rendere la tastiera indipendente, seppure a scapito di qualche prestazione.
Il problema era: come far suonare la tastiera, in polifonia, con le tipiche 'voci' dei banchi GM?
Dopo un pò di ricerche ho scoperto in Internet il chip VS1053 di
VLSI Solution,
che è un componente realmente completo (e complesso) in grado di riprodurre in pratica qualsiasi formato audio.
La cosa bella è che può anche essere utilizzato (molto semplicemente) per accettare dati MIDI e produrre suoni con le
voci dello standard GM1 (+ percussioni di GM2).
E per fare questo non sarebbe neppure necessaria una CPU con relativo firmware.
L'utilizzo del solo chip sarebbe però arduo per via delle dimensioni (LQFP48); per fortuna
Sparkfun
ha realizzato un modulo che integra il chip, i regolatori
di tensione e i componenti fissi richiesti dal costruttore in una basetta da 27 pin (**).
Questo modulo è venduto in Italia da
Robot Italy al prezzo di circa € 25.
Peccato che Sparkfun abbia fatto le cose in grande, nel senso che il modulo è largo (non si può utilizzare
con una breadboard) e i 7 pin aggiunti al precedente modulo per lo VS1103 siano stati posizionati su un lato del
modulo, con complicazioni extra per l'inserimento su uno stampato.
(**) Attenzione a Sparkfun: bravi ragazzi, ma commettono piuttosto spesso degli errori grossolani.
In origine avevo acquistato un modulo (ormai obsoleto) con il chip VS1103, più semplice e più piccolo, ma adattissimo al
mio uso.
Purtroppo uno dei regolatori di tensione a bordo era errato per cui il chip è stato
sovra-alimentato, con conseguente bruciatura del chip.
Come detto, interfacciare una porta MIDI con il chip VS1053 è molto semplice. L'immagine a fianco è lo schema
minimale ma perfettamente funzionale per avere un risultato sicuro.
Abbiamo la classica intefaccia MIDI-IN che utilizza un optoisolatore 6N138 (o un 6N137 - per questo occorre cortocircuitare
i due pad indicato con una croce nello schema), il chip che necessita di soli 4 collegamenti + l'uscita audio e la sezione
di alimentazione.
Il chip necessita di 5V, ricavati da un ingresso esterno su Jack 3.5mm ad almeno 7V (max 16V)
con uno stabilizzatore qualsiasi tipo 78L05.
I segnali di ingresso al Synth (che non è 5V tolerant) devono essere a 3.3V e purtroppo il modulo non porta fuori questa tensione per
cui serve anche un regolatore a 3.3V. Per questa tensione si può usare un LP2950-33 sempre in contenitore TO92.
Attenzione: l'assorbimento del circuito, anche nella versione estesa con CPU, non supera i 60-70mA; però
è prevista l'alimentazione per la tastiera e questa ha un assorbimento superiore, dipendente da tipo.
Per la versione estesa è quindi richiesto di poter erogare almeno 500mA sui 5V, per cui serve un 7805 o simili.
Il passo successivo è arricchire il progetto con un microcontrollore che possa dialogare con un PC per
ricevere dati MIDI originati in SW. Come si intuisce da altri progetti qui pubblicati, mi piace sviluppare
applicazioni in Visual Basic per controllare oggetti esterni e, anche in questo caso, non mi smentisco.
Il grosso problema per questo uso è che il PC non prevede la comunicazione seriale a 31,250bps del MIDI.
Occorre quindi convertirla in una velocità standard; ho scelto quella più vicina,
cioè 38,400 bps.
La CPU si occupa anche di gestire il reset del synth e le porte GP2 e GP3 per l'attivazione del riverbero e del
suono spaziale; nello schema sono anche presenti 4 Led la cui funzione è ancora da definire, così come
2 ingressi di comando.
La comunicazione col PC è affudata ad un altro modulo di POLOLU
convertitore da seriale a USB;
piccolo, semplice, robusto ed affidabile...molto raccomandato.
Un interuttore a slitta accessibile dall'esterno commuta dal modo MIDI al modo PC.
Il progetto impiega un processore PIC18F1320, il più piccolo della serie 18 con porta EUART,
con clock interno (quindi niente quarzi) a 8MHz, programmabile da porta ICSP accessibile esternamente.
La sfida più impegnativa di qualsiasi progetto è di trovare il contenitore più adeguato e adattarlo al circuito.
Questa volta l'approccio è stato opposto: ho scelto il contenitore e in base a questo o sviluppato e raffinato
il progetto.
La scelta, che mi piace molto, è caduta sul contenitore TEKO Tek-Berry sviluppato per inserire
il modulo Rasberry; ho scelto la versione trasparente per 'vedere' l'elettronica.
Il box offre un buon numero di aperture destinate all'accessibilità esterna; sono riuscito a sfrutturle tutte...
anzi, me ne mancherebbe una!
Per studiare gli spazi e il posizionemanto dei componenti ho realizzato una libreria per EagleCAD che
includo nei file scaricabili.
» Scarica il file compresso ZIP
Contiene lo schema elettrico della verione base e di quella estesa, e il circuito stampato in versione EagleCad 6.5
, il file sorgente in Assembler MPLAB + l'eseguibile (.exe) + la libreria Eagle.
NOTA: Il programma è attualmente in sviluppo. Sarà aggiornato appena possibile con le versioni ampliate e testate.
Il circuito stampato non è garantito in quanto non l'ho realizzato; come si vede dalle foto, ho sviluppato
il tutto su basetta millefori, con acrobazie per sfruttare tutti i buchi disponibili e posizioni obbligate.