Emillotron – parte 4

Update 20 Giu 2022 – All parts together and translated into English
https://hackaday.io/project/185954-use-yamaha-opl2-chip-with-esp8266-emillotron

Per andare avanti nelle prove, ho deciso di costruirmi con ciò che ho in casa (e con “casa” intendo un temporaneo alloggio dove aspetto il ritorno alla normalità) una tastiera musicale per suonare senza dover inserire tutti i dati tramite scritture nei registri. Ovviamente, si tratta di una tastiera molto semplice e soprattutto monofonica, quindi posso suonare solo una nota per volta. Ho pensato di farla così:

Nella mia realizzazione ci sono 18 tasti, da C1 a F2. In pratica, ogni interruttore chiude una serie di resistenze e tramite il convertitore ADC del modulino Esp8266 riusciamo a ricavare la nota premuta. Ecco la funzione che legge la tastiera:

Per una lettura stabile, ho usato una tecnica che mi è stata già utile in molte occasioni. In pratica, si legge l’ingresso analogico per un certo numero di volte (sei, in questo caso) e poi si scartano il valore più basso, quello più alto e si fa la media aritmetica di quelli rimasti. Di solito uso un numero di campioni che è multiplo di 2, più i due che andrò a scartare. La ragione per usare un multiplo di 2 è che poi la divisione per ottenere la media sarà fatta con semplici “shift” a destra.
Nella tabella di costanti CVTAB troviamo i valori per la conversione della media in un numero da 1 a 18 (il codice nota premuta, dove 1 è il primo Do (C1) e 18 è l’ultimo Fa (F2). I valori sono a coppie e indicano il minimo e il massimo accettabile per dire che il valore letto è relativo a quella nota.
Ho fatto delle prove teoriche, prima, scrivendo questo programmino in FreeBasic:
Questa è una schermata dei valori risultanti, usando 1KOhm per Rd e 22KOhm per Rv:

I valori effettivi sono leggermente diversi da quelli teorici, anche perché in effetti il convertitore ADC dello ESP8266 ha un range da 0 a 1V e quindi i costruttori del modulo mini D1 hanno inserito tra il pin A0 e l’ingresso vero del chip un partitore resistivo, in modo da ampliare il range di input fino a 3.3V. Il programma in FreeBasic non tiene conto di questo ulteriore elemento e poi ci sono da considerare anche le tolleranze dei vari componenti e dell’alimentazione a 3.3V prelevata anch’essa dal modulino. Comunque, comparando la tabella con i valori teorici, non vediamo un grande scostamento.

Ecco le varie fasi della costruzione. Come capirete facilmente, mangio molti gelati! La struttura di base è costituita da un robusto cartoncino Bristol con incollati sopra (con biadesivo trasparente) i “tasti”:

Poi, giustamente, ci vogliono i tasti neri e allora, via col pennarello permanente!

Ora, usando una parte del foglio, ho realizzato una specie di PCB (ma sta per “Paper Circuit Board”) con dei microswitch estremamente economici che avevo

E poi ho cablato gli interruttori e le resistenze

Ecco la tastiera quasi finita

Le resistenze sono ancora scoperte, quindi per terminare l’opera, ancora un bel giro di nastro arancione!

Eccola qui, nel suo splendore. Dal cartoncino (a sinistra) escono solo due fili. Se misurate la resistenza tra i capi con un tester, vedrete un valore in Ohm da 1K a 18K in funzione del tasto premuto. La Rv è saldata temporaneamente sotto il prototipo, tra il pin A0 e il V3.3. I due capi della tastiera sono collegati a GND e A0.

Tovate la nuova versione del firmware (sempre in una cartella di lavoro Arduino) a questo link: https://ficara.altervista.org/wp-content/uploads/2021/05/emillotron-v2.zip . La cartella è zippata con il programma 7Z e la password è: “eficara”. Oltre alla lettura della keyboard, ho aggiunto un comando da seriale e le funzioni di nota ON e nota OFF. Il comando da seriale aggiunto è +LI n (con n che va da 1 a 4). Con questo comando si possono caricare tutti in una volta i registri necessari per generare un timbro. I quattro strumenti inseriti sono 1-Piano 2-Trumpet 3-Jazz guitar 4-Musette.

Ovviamente, una volta caricato uno strumento, si può giocare con i registri tramite il comando seriale +WR rr dd e vedere che succede… La tastiera, abbiamo detto, è monofonica e così se premiamo più di un tasto, avrà priorità quello più basso (a sinistra). Si noti che fino a questo punto, abbiamo lavorato solo sul canale #1 dei nove messi a disposizione nel chip. Possiamo, volendo, caricare uno strumento diverso per ogni canale (basta modificare un po’ il sorgente) o farli tutti uguali e avere così un generatore polifonico fino a nove note contemporanee. Vi invito a guardare il mio articolo menzionato da Hackaday a questo link e nello specifico a questo indirizzo sul mio sito. All’interno troverete i sorgenti in C per realizzare un expander MIDI completo. Anche se nell’esempio citato ho usato un microcontrollore PIC per pilotare una scheda audio su bus ISA, le funzioni sono identiche! L’unica cosa che cambia è la gestione delle scritture dei registri a basso livello. Per quelle, bisogna usare le nuove funzioni che trovate nei sorgenti in C allegati a questo articolo.

Nella prossima parte (la quinta e ultima) pubblicherò il nuovo schema con le piccole modifiche relative all’alimentazione della parte analogica e al filtro / preampli in uscita. Nel frattempo, buon divertimento!