Dernière mise à jour :
28/07/2019
Présentation
Ce contrôleur MIDI permet d'envoyer manuellement jusqu'à 256 messages
MIDI
distincts : 16 messages de 64 octets maximum, et 240 messages de 256
octets maximum. Pour cela, il dispose de 16 boutons-poussoirs et de 16
banques de 16 "presets".
Cette réalisation m'a été confiée par un musicien qui
souhaitait disposer sur scène d'un système de commande simplifié avec
boutons-poussoirs au pieds (footswitches) permettant de changer
rapidement certains paramètres
de clavier et d'expandeurs entre chaque chanson, sans devoir passer dans les menus des
appareils, et sans utiliser d'ordinateur. Ce contrôleur configurable est une version évoluée de mon
contrôleur MIDI 002 avec messages MIDI fixes.
Schéma
Le schéma qui suit est complet. Le PIC
18F26K20 centralise l'ensemble des actions, à savoir émission
et réception des données MIDI et commandes utilisateur.
Principe de fonctionnement général
Le contrôleur MIDI 002c
permet d'envoyer à la demande (par pression sur des boutons-poussoirs)
des messages MIDI de type Note, Control Change, Program Change ou
Sysex. Contrairement à mon
contrôleur MIDI 002
dans lequel les messages
sont figés (leur modification nécessitent une recompilation du
programme du PIC), le contrôleur décrit ici permet à l'utilisateur
de spécifier lui-même les messages à transmettre. Le principe
est simple : l'appareil est doté d'une entrée MIDI qui permet de
recevoir
et d'enregistrer des messages MIDI dans l'emplacement mémoire désiré
par l'utilisateur. Chaque message peut ensuite être "rejoué" à la
demande.
Mémoire(s)
Le système est articulé
autour d'un PIC 18F26K20 doté d'une petite mémoire interne (1 KO), et d'une mémoire EEPROM externe de type
25AA1024 (128 KO). Cette mémoire externe est facultative. En son absence,
seule la mémoire interne du PIC est utilisée et dans ce cas le nombre
de messages MIDI pouvant être stockés et transmis est limité à 16 (une seule
banque).
- EEPROM PIC 18F26K20 : 1 KO -> 16 messages de 64 octets maximum chacun (banque #0)
- EEPROM 25AA1024 : 128 KO -> 15*16 messages de 256 octets maximum chacun (banques #1 à #9 et #A à #F)
La
sélection de la banque de presets s'effectue via les lignes B0 à B3 :
B3 | B2 | B1 | B0 | Banque |
0 | 0 | 0 | 0 | 0 ($0) |
0 | 0 | 0 | 1 | 1 ($1) |
0 | 0 | 1 | 1 | 2 ($2) |
... | ... | ... | ... | ... |
1 | 1 | 0 | 1 | 13 ($D) |
1 | 1 | 1 | 0 | 14 ($E) |
1 | 1 | 1 | 1 | 15 ($F) |
On
peut raccorder à ces lignes tout système de sélection binaire 4 bits,
par exemple quatre interrupteurs simples ou une roue
codeuse hexadécimale (allant de 0 à F). Si l'EEPROM externe est
absente, il faut impérativement placer les quatre entrées de sélection
de banques B0 à B3 à la masse (sélection banque #0).
Clavier et multiplexage
Les 16 boutons-poussoirs sont matricés
pour économiser le nombre de fils de câblage (8 lignes au lieu de 17).
Le fonctionnement consiste à modifier l'état
logique des quatre lignes utilisées pour les colonnes C0 à C3 (RA0 à RA3) et à
lire les quatre
lignes
utilisées pour les rangées R0 à R3 (RB0 à RB3) qui à l'état de repos
sont à l'état logique
haut. Si à un
moment de la scrutation du clavier (scanning pour ceux qui aiment les
termes techniques) on trouve un état logique bas sur l'une des entrées
R0 à R3 (RB0 à RB3), c'est qu'une touche a été enfoncée. Selon la
touche pressée, le message MIDI correspondant est transmis.
Remarque importante
: bien que le schéma ne le montre pas, une diode (1N4148) est câblée en
série avec chaque bouton-poussoir SW1 à SW16. Sans ces diodes, le
système fonctionne de la même manière, mais il est alors interdit de presser plusieurs
boutons-poussoirs en même temps, sous peine d'endommager le
microcontrôleur PIC.
Entrée MIDI IN
Le principe est le même 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. L'optocoupleur PC900 joue très bien ce rôle d'isolateur.
Sortie MIDI OUT
Comme on peut un peu s'en douter, c'est sur cette
sortie MIDI que les messages MIDI 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).
Remarque
: si le bouton-poussoir SW1 est pressé lors de la mise sous tension,
alors le contrôleur MIDI 002c envoie une note MIDI de courte durée
(Do3) sur la sortie MIDI OUT. Cela permet un contrôle immédiat du bon
fonctionnement de l'installation, dès le démarrage du contrôleur.
Programmation des messages MIDI à transmettre
La procédure est très simple :
1 - Passer en mode Programmation (interrupteur Prog fermé)
2 - Sélectionner la banque #0 à #F (en absence d'EEPROM externe, seule la banque #0 peut être utilisée)
3 - Presser le bouton-poussoir #1 à #16 correspondant à l'emplacement mémoire désiré dans la banque sélectionnée
4 - Envoyer le message MIDI à sauvegarder sur l'entrée MIDI IN (64 octets max si banque #0, 256 octets max si banque #1 à #F)
Répéter
l'opération pour chaque message MIDI à enregistrer dans le contrôleur
MIDI 002c. Une fois les messages MIDI désirés enregistrés, repasser le
système en mode Normal (interrupteur Prog ouvert).
Remarque
: lorsque le contrôleur est en mode Normal (interrupteur SW17/Prog
ouvert), les messages MIDI reçus sont renvoyés sur la sortie MIDI OUT
(écho), mais ils ne sont pas enregistrés. Lorsque le contrôleur
est en mode Programmation (interrupteur SW17/Prog fermé), chaque
message
MIDI reçu est renvoyé sur la sortie MIDI OUT après
avoir été enregistré en mémoire et relu depuis la mémoire. Il est ainsi
aisé de vérifier si le message enregistré est bien celui qu'on a
envoyé, sans aucune manipulation supplémentaire de la part de
l'utilisateur.
Messages compositesMoyennant
une astuce non documentée ici, plusieurs messages MIDI peuvent
être placés dans un seul emplacement mémoire d'une banque. Il est ainsi
possible d'enregistrer plusieurs
notes, control change, program change ou sysex dans
un même "message" de 64 ou 256 octets, avec en outre la
possibilité de spécifier un délai
d'attente (optionnel, de 1 ms à 127 ms) entre chaque événement MIDI transmis. Par exemple
avec le seul preset 1 de la banque 0 (EEPROM interne au PIC) on peut envoyer
la suite de messages MIDI suivante :
[PC $07] [CC $11 $64] [CC $07 $23] [Sysex $01 $02 $03 $04] [NoteOn $64 $64] [Delay 100 ms] [NoteOff $64 $00]
Bien sûr, la longueur totale du message composite est limitée par la taille de chaque emplacement mémoire (64 ou 256 octets).
Logiciel du PIC
Pro - Logiciel non disponible.
Circuit imprimé
Non réalisé par mes soins.
Historique
28/07/2019
- Ajout prise en charge des messages composites (voir texte).
21/07/2019
- Première mise à disposition.