Electronique > Réalisations > Interfaces > Interfaces MIDI > Contrôleur MIDI 002c [Pro]

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".

controleur_midi_002c_pcb_3d_a

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.

controleur_midi_002c

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).
La sélection de la banque de presets s'effectue via les lignes B0 à B3 :

B3B2B1B0Banque
00000 ($0)
00011 ($1)
00112 ($2)
...............
110113 ($D)
111014 ($E)
111115 ($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 composites
Moyennant 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

Projet Pro, logiciel non mis à disposition.

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.