Dernière mise à jour :
20/07/2014
Présentation
Ce contrôleur MIDI dispose de 16 entrées de commandes, chacune permet
d'envoyer de façon distincte un message MIDI de type sysex (system
exclusive).
Cette réalisation m'a été "commandée" par un musicien qui
souhaitait disposer sur scène d'un système de commande simplifié pour
un synthétiseur, en vue d'en changer rapidement certains paramètres
sans aller dans les menus. Elle fait appel à un microcontrôleur de type
PIC 16F648A.
Avertissement
Pro - Projet
Pro, logiciel du PIC non mis à disposition libre. Dans
sa version actuelle, les messages sysex envoyés sont codés en dur dans
le logiciel et
l'utilisateur ne peut pas les modifier, cette limitation est liée à la
taille mémoire de l'EEPROM du PIC (cet espace mémoire est suffisant
pour stocker quelques messages sysex mais on est tout de même vite
limité). Une
version plus évoluée, qui d'une part dispose d'une mémoire EEPROM
externe pour étendre
la capacité de stockage des messages à envoyer, et d'autre part permet
à l'utilisateur de spécifier lui-même les messages MIDI à transmettre,
est présentée à la page
Contrôleur MIDI 002c.
Schéma
Le schéma unique qui suit peut être décomposé en trois parties :
- section supérieure = coeur du montage
- section centrale = ensemble des boutons poussoir de commande câblés de façon multiplexée (4 rangées / 4 colonnes)
-
section inférieure = régulation alim qui permet d'obtenir une tension
de +5 V à partir d'une source de tension comprise entre +8 V et +15 V.
Coeur du montage
Articulé
autour du PIC 16F648A, on ne trouve pas beaucoup de composants autour.
La fréquence d'horloge est fixée à 8 MHz par l'entremise d'un quartz
externe de cette valeur associé à deux condensateurs dont la présence
n'est pas étrangère au bon démarrage de l'ensemble. Pour le reste il
s'agit des composants requis pour les entrée et sortie MIDI.
Clavier et multiplexage
J'ai
eu recours au multiplexage pour limiter le nombre de fils entre les
boutons poussoir et le PIC. Il fallait en effet 16 commandes (16
boutons poussoirs) et le PIC choisi ne disposait pas d'assez de broches
d'entrée / sortie libres. L'idéal aurait été de monopoliser le port B
du microcontrôleur (broches RB0 à RB7) pour gérer le "clavier" car le
logiciel que j'utilise (Mikropascal) dispose de routines toutes faites
pour gérer l'appui sur des poussoirs agencés en mode 4 x 4 comme c'est
le cas ici. Malheureusement, le port B du PIC 16F648A inclue les deux
lignes Rx et Tx de l'UART qu'on utilise pour l'entrée et la sortie MIDI
et on ne dispose donc que de 6 broches de libre au lieu de 8. J'ai donc
du inclure dans le logiciel mes propres procédures de gestion des
touches en séparant les rangées et les colonnes sur deux ports
différents du PIC :
- broches RA0 à RA3 pour les colonnes C0 à C3 (broches configurées en sortie);
- broches RB4 à RB7 pour les rangées R0 à R3 (broches configurées en entrée).
Le
principe de fonctionnement est simple. Il consiste à modifier l'état
logique des lignes utilisées pour les colonnes (état logique haut
pour repos et état logique bas pour activité) et à lire les lignes
utilisées pour les rangées qui à l'état de repos sont à l'état logique
haut (activation des "résistances pullup" sur le port B). Si à un
moment de la scrutation du clavier (scanning pour ceux qui aiment les
termes à la mode) on trouve un état logique bas sur l'une des entrées
RB4 à RB7, c'est qu'une touche a été enfoncée. Et en fonction de la
touche enfoncée, envoi du message MIDI qui lui correspond. La fréquence
de scrutation est fixée par interruption du Timer0 et sa valeur est
d'environ 1 kHz, ce qui correspond grosso-modo à 250 Hz pour chaque
colonnes (groupe de quatre touches).
Remarque importante : du fait de la technique de multiplexage employée, il est interdit d'appuyer sur plusieurs boutons poussoir en même temps.
Entrée MIDI
L'entrée MIDI représentée sur le schéma n'est
actuellement pas opérationnelle. A terme (quand j'aurai ajouté la
mémoire EEPROM externe), elle permettra à
l'utilisateur de spécifier lui-même les messages sysex MIDI à
transmettre quand tel ou tel bouton poussoir est enfoncé. Toujours
est-il que le principe reste le même que pour toute interface d'entrée
MIDI, à savoir isolation galvanique entre la source MIDI (clavier
maître ou interface MIDI reliée à un ordinateur) et le circuit de
gestion des données MIDI - ici le PIC.
Sortie MIDI
Comme on peut un peu s'en douter, c'est sur cette
sortie MIDI que les messages sysex sortent du PIC. Rien de nouveau de
ce côté, les signaux logiques aboutissent sur une prise DIN 5 points
dont seuls 3 points sont exploités (données, +5 V et masse).
Choix des potentiomètres
Je me rend compte après coup que ce
paragraphe pourrait parfaitement sauter vu qu'il n'y a aucun
potentiomètre dans ce montage. Ceci dit rien ne vous empêche d'en
ajouter un qui ne sera pas câblé, pour ajouter une touche personnelle à
votre réalisation. De préférence avec un bouton rond en plastique de couleur rose et de diamètre 4 cm.
Choix du PIC
D'autres
types de PIC auraient pu être utilisés, celui pour lequel j'ai opté ici
suffisait pour les besoins du demandeur. Dans les grandes
lignes, il faut juste que la
taille mémoire pour le programme et/ou pour les données MIDI à envoyer
soit de taille suffisante si aucune mémoire externe n'est utilisée (cas
de la première version de ce contrôleur). J'ai choisi le 16F648A car il
comporte deux foix plus d'espace mémoire programme que le 16F628A et
que son prix à la vente est identique voire moindre que son petit
frère.
Logiciel du PIC
Pro - Projet Pro, logiciel non mis à disposition.
Circuit imprimé
Non réalisé.
Historique
20/07/2014
- Première mise à disposition.