Midi controller - ARESAUDIO electronics & audio engineering

electronic engineering
Privacy Policy
Vai ai contenuti

Menu principale:

Progetti

Midi remote controller
Controller midi per tutte le apparecchiature controllabili tramite questo protocollo e per sequencer Audio-Midi

Descrizione:
Dispositivo in grado di controllare attraverso il fader ed otto pulsanti di cui è dotato, tutti gi apparecchi con ingresso MIDI abilitati per questa funzione (attualmente quasi tutti).
Il controller in questione può, mediante assegnazione software tramite due degli otto pulsanti presenti sulla scheda ( Pulsante 1 e 2 quelli in alto), assegnare al fader uno specifico controller tra i 128 disponibili del protocollo MIDI e tramite esso variarne il valore in un'intervallo che và da 0 a 127 in 128 steps (MIN-MAX), facendo questo si può, per esempio, controllare il volume dello strumento ad esso collegato, oppure si potrebbe modificare il suono agendo su uno specifico controller assegnato o ancora modificare il bilanciamento dei canali audio L-R ecc ecc....
Sul PCB sono presenti, oltre ai due pulsanti ed il fader di cui sopra, altri 6 pulsanti che vado a descrivere..

-Pulsante 3: Tramite questo pulsante vado a incrementare il valore numerico del canale di trasmissione MIDI che come sappiamo può essere compreso tra 1 e 16.

-Pulsante 4: Stessa operazione del pulsante 3 con la differenza che il valore viene diminuito anzichè aumentato.

Prima di descrivere le funzioni dei pulsanti 5 e 6, illustro quanto segue:

La stragrande maggioranza degli strumenti MIDI presenti oggi sul mercato sono provvisti di locazioni di memoria in cui risiedono dei preset (settaggi di valori diversi per tutte le funzioni presenti nello strumento) sia essi siano DEFAULT(memorie programmate dalla fabbrica dello strumento) che USER(create dall'utente), possono essere richiamati sia tramite pulsanti dallo strumento in questione, oppure tramite MIDI e quì entrano in gioco i pulsanti 5 e 6.Nel caso si volesse controllare un sequencer software tramite hardware questo oggetto sarebbe indispensabile come si può notare nel video linkato in fondo a questa pagina, quindi...

-Pulsante 5: Aumento numero di locazione di memoria di programma dello strumento Program change UP.

-Pulsante 6: Diminuzione numero di locazione di memoria di programma dello strumento Program change DOWN.

-Pulsante 7 e 8: Attualmente non in uso ma necessari ad uno svilppo di funzioni e firmware (i due in basso).

Come si può vedere dalla foto è presente un display BLU 2x16 caratteri necessario per visualizzare tutte le funzioni eseguite dall'utilizzatore, fornendo altresì i valori da esso impostati.

Due parole sul fader: Esso è un potenziometro ALPS MOTORIZED FADER, serve, come ho già spiegato prima, ad impostare i valori del controller scelto, ma la sua caratterisica non molto comune è quella di essere motorizzato! La scelta di questo componente è caduta su di esso poichè necessaria, vi spiego il perchè:

Supponiamo di modificare l'Attack dell'oscillatore X del synth impostandolo a 70, successivamente modifichiamo (selezionando tramite P1 e P2) per esempio il Decay dell'oscillatore X portandolo ad un valore di 37, se dovessimo ritoccare il parametro Attack saremmo costretti a ritornare (sempre tramite P1 e P2) su di esso ma, se non avessi adottato un fader motorizzato esso resterebbe al valore di 37 (ultimo valore utilizzato) e non di 70, con la conseguenza che muovendo il fader il valore risalirebbe da 37 per portarlo ad un nuovo valore e non da 70 cioè dal valore dove avevamo precedentemente impostato, questo con il fader motorizzato non succederà in quanto al richiamo di uno dei 128 controller il software richiamerà dalla EEPROM il valore ultimo modificato e automaticamente salvato!
Sul retro della scheda troviamo i connettori MIDI OUT (inutile descrizione) e POWER necessario ad alimentare il tutto tramite DC oppure AC (9V), la corrente consumata è, a fader in corsa, intorno a 300-350 mA, quidi si potrebbe adottare anche un semplice alimentatore a muro anche non stabilizzato.

Analisi del circuito:
N.B.:Per la mancanza di un simbolo del relè fotovoltaico in libreria CAD esso è disegnato come un fototriac,stessa cosa dicasi per il motore del fader che è disegnato come generatore (mi scuso anticipatamente).

Il cuore del circuito è il PIC16F877A cloccato a 20 MHz, esso svolge tutte le funzioni di memorizzazione, attuazione, controllo e analisi...in dettaglio:

PortA: Solo RA1 dove viene applicata la tensione 0-5V proveniente dal cursore del fader e convertita internamente da           1 degli 8 ADC del PIC (che spreco eh?) per la comparazione tra valore memorizzato e quello in arrivo.

PortB: RB0 = Abilitazione motore fader UP
PortB: RB1 = Abilitazione motore fader DOWN

PortB: RB2-7 = (P1)Controllo display 2x 16 caratteri con a bordo controller HITACHI HD44780

PortC: RC0 = (P2)Controller UP

PortC: RC1 = (P3)Controller Down

PortC: RC2 = (P4)MIDI Channel TX UP

PortC: RC3= MIDI Channel TX DOWN

PortC: RC4 = (P5)Program Change UP  

PortC: RC5 = (P6)Program Change Down

PortC: RC6 = MIDI OUT

PortC: RC7=

PortD: RD0 = Abilitazione tensione motore

PortD: RD1 = (P7)Reserved

PortD: RD2 = MIDI signal out active

PortD: RD3= (P8)Reserved

PortD: RD4 =   

PortD: RD5 =

PortD: RD6 =

PortD: RD7=

PortE: RE0=

PortE: RE1=

PortE: RE2=

Il motore del fader è pilotato da 4 BOSFET PVA1352 (obsoleti ma ben funzionanti) con un'altro PVA1352 che abilita la tensione che giunge ai suddetti BOSFET, essi hanno il compito di invertire la tensione dei 5V provenienti dall'alimentatore per far sì che il fader possa muoversi in alto o in basso, a seconda del valore in memoria rispetto al valore della posizione in essere.

I pulsanti P1-P8 sono a livello "0" portati dalla rete resistiva pull down da 8,2K e dalla resistenza singola sempre da 8,2Kohm (non avevo sottomano una rete da 8 elementi),quando se ne preme uno il relativo ingresso viene portato "ALTO" a +5V segnalando al software l'avvenuto cambio di stato e quindi la necessaria attuazione della relativa routine.

Oltre che al solito trimmer da 4,7Kohm necessario al contrasto dell'LCD, il tasto di reset, condensatori vari da 100nF sulle alimentazioni, i due diodi contro le tensioni inverse,la resistenza da 3,3 ohm 1/2W per la limitazione della corrente relativa alla retroilluminazione del display, ci sono 2 (dico 2) 7805 per le alimentazioni separate, uno per il motore del fader con l'NTC in serie e l'altro per la logica e display.

Ultima cosa sono i led che segnalano i vari funzionamenti,e cioè:

 +5V Motore (notare la posizione del led, è posto a valle dell'NTC, esso si spegne se c'è un'eventuale sovraccarico)

 +5V Logica

 Midi OUT active

 Motor Enable (Si illumina quando c'è l'abilitazione della +5V al motore)

 Motor UP (Si illumina quando il fader viene spostato in alto)

 Motor Down (Si illumina quando il motore del fader viene spostato in basso)

Al termine del montaggio portare a massa la carcassa del potenziometro per evitare false letture e mentre fate funzionare per la prima volta il circuito, dovete premere contemporaneamente i pulsanti P1 e P2 (controller Up e DOWN quelli più vicini al display) per avviare la routine RESET.

Per la realizzazione sono state utilizzate resistenze a strato metallico all' 1% di tolleranza ma vanno più che bene quelle standard al 5%.

IL MIDI:
MUSICAL INSTRUMENT DIGITAL INTERFACE, è il protocollo di intercomunicazione digitale tra le apparecchiature musicali, la velocità di trasferimento in baudrate è di 31250 (quindi non fate i furbi nell'utilizzare PIC cloccati al di sotto dei 20 MHz, la comunicazione sarebbe a rischio errori!), per un'approfondimento vi rimando alle seguenti pagine anche perchè un ctrl-C ctrl-V sarebbe deprimente e non darebbe valore a chi ha creato le pagine in questione.....a me sono state molto utili:

www.midi.org/about-midi/table1.shtml
crystal.apana.org.au/ghansper/midi_introduction/midi_channel_mode.html

dico soltanto che il messaggio MIDI è composto ( a seconda del tipo di messaggio) da 2 o 3 byte esempio:
Vogliamo inviare un comando di program change 01 sul canale midi 01, per fare questo dobbiamo inviare due byte in sequenza e cioè:

-PRIMO BYTE[1100=PROGRAM CHANGE;0001=MIDI CHANNEL binario1100-0001 , DEC 193]=HEX C1

-SECONDO BYTE[binario 00000001=  DEC 01NUMERO DI PROGRAMMA]=HEX 01

Ricapitolando program change 01 sul canale midi 01= C1-01
Ricordo che per il secondo byte il massimo valore ammesso è 127 e non 255 quindi in un byte l'MSb deve essere sempre 0.
Inviamo adesso un cambio di valore del controller 01 (Modulation Weel) sul canale midi 4.... tre byte:

      -PRIMO BYTE[1011=CONTROL CHANGE;0100=MIDI CHANNEL binario 1011-0100, DEC 180]=HEX B4

      -SECONDO BYTE[TIPO CONTROLLER]=HEX 01

      -TERZO BYTE [VALORE CONTROLLER (0-127)]=da 00(min) fino a 7F(max)

Ricapitolando cambio valore controller 01 sul canale midi 04= B4-01-[00(min)-7F(max)]

Il Midi Controller a montaggio terminato

Vista alternativa

Particolare connessioni midi ed alimentazione

Visualizzazione controller e valori

Particolari leds e pulsanti

Connessione MIDI e potenziometro motorizzato

In risalto i gestori del motore PVA1352

Demo funzionamento



 
ares@aresaudio.com
http://www.aresaudio.com
Copyright 2015. All rights reserved.
Torna ai contenuti | Torna al menu