Electronique > Réalisations > Interfaces > Interfaces MIDI > Contrôleur MIDI 002

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

controleur_midi_002_pcb_3d_a

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

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 prochaine version disposera d'une mémoire EEPROM externe pour étendre la capacité de stockage des messages à envoyer.

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.

controleur_midi_002

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

Projet Pro, logiciel non mis à disposition.

Circuit imprimé

Non réalisé.

Historique

20/07/2014
- Première mise à disposition.