Electronique > Réalisations > Interfaces > Interfaces MIDI > Interface MIDI 027 ([Pro]

Dernière mise à jour : 09/09/2018

Présentation

Cette interface MIDI dispose de 24 sorties sur relais dont l'état est commandée individuellement par des évènements MIDI de type Note (Note On ou Note Off) PC (Program Change) ou CC (Control Change).

interface_midi_007_pcb_3d_a

Cette interface conçue pour une demande spécifique, est en quelque sorte une extension de mon interface MIDI 007. Elle dispose de 24 sorties physiques (relais) mais est conçue à la base pour pouvoir en piloter 128.  Les 16 premières sorties sont activées par des événements "PC" ou "CC", et les 8 sorties suivantes sont pilotées par des événements "Note".
Deux modes de fonctionnement sont disponibles pour la gestion des événements "Notes" :
Deux modes de fonctionnement sont disponibles pour la gestion des événements "Control Change" et "Program Change" :
Le canal MIDI de réception peut être spécifié.

Schéma

Le schéma complet est le suivant.

interface_midi_027

Les sorties se font sur 24 relais, 2 seulement sont représentés sur le schéma pour plus de clarté. Une extension jusqu'à 128 sorties/relais est d'ores et déjà prévue dans le logiciel du PIC.

Fonctionnement général
Le circuit est basé sur un PIC 16F628A dont on exploite le module UART pour la reconnaissance des évenements MIDI reçus. Le logiciel du PIC attend en permanence la réception de données MIDI sur son entrée RB1/RX, et dès qu'une donnée est réceptionnée, elle est placée dans une case mémoire, puis analysée. Si une suite de données reçues (octets) correspond à un évenement MIDI de type NoteOn, la valeur de la note est analysée et la sortie qui lui correspond est activée. La même chose est faite avec les évenements MIDI de type NoteOff , mais cette fois avec pour finalité de désactiver la sortie correspondante, en mode On/Off. En mode Pulse, les sorties sont activées sur réception d'un évenement MIDI de type NoteOn et restent activées pendant 1 ms. La sélection du mode On/Off ou Pulse se fait grâce au cavalier JP2/Pulse.
La réception d'événements Control Change provoque l'activation des sorties selon un mode "normal/tout" ou "exclusif", défini par la position du cavalier JP3/Exclus. En mode Normal/All, c'est la valeur placée dans le troisième octet du message CC qui détermine si la sortie doit être activée ou désactivée. Le cavalier JP1/Echo quant à lui permet de spécifier si les messages MIDI entrants doivent ou non ressortir sur la sortie MIDI Out.
Quelque soit la position du cavalier JP1/Echo, une note brève (Do3) est délivrée en sortie lors de la mise sous tension, pour attester du bon démarrage.

Correspondance entre événements MIDI et sorties logiques
Les sorties #1 à #16 sont liées aux événements Control Change et Program Change CC#0 à CC#15 et PC#0 à PC#15.
CC#0 ou PC#00 : activation sortie N° 1
...
CC#15 ou PC#15 : activation sortie N° 16
Remarque : la réception d'un PC est toujours traité en mode exclusif (une seule sortie activée à la fois), quelque soit la position de JP3 (qui détermine l'action à mener lors de la réception d'événement de type CC).

Les sorties #17 à #24 sont liées aux événements Note#16 à Note#23 :
MI-1 = 16d = $10 => activation sortie N° 17
FA-1 = 17d = $11 => activation sortie N° 18
FAd-1 = 18d = $12 => activation sortie N° 19
SOL-1 = 19d = $13 => activation sortie N° 20
SOLd-1 = 20d = $14 => activation sortie N° 21
LA-1 = 21d = $15 => activation sortie N° 22
LAd-1 = 22d = $16 => activation sortie N° 23
SI-1 = 23d = $17 => activation sortie N° 24

Circuit d'horloge / base de temps
Les lignes RA7/OSC1 et RA6/OSC2 du PIC sont utilisées pour y connecter un quartz de 20 MHz avec ses deux inséparables condensateurs de pieds. 

Entrée MIDI
L'entrée MIDI est classique, elle est composée de l'optocoupleur U2 raccordé sur la prise DIN 5 broche J1, via une résistance de limitation de courant (R1) et une diode (D1) protégeant l'optocoupleur en cas d'inversion des deux fils d'entrée de la prise DIN (broches 4 et 5). La sortie de l'optocoupleur, de type NPN, permet de récupérer le signal MIDI au format TTL, grâce à la présence de la résistance R2 reliée au +5 V. Les données MIDI ainsi mises en forme aboutissent à l'entrée RB1/RX du PIC.

Choix du canal MIDI de réception
L'interface réagit si les notes MIDI reçues sont réglées sur un numéro de canal identique à celui spécifié au moyen des quatre microswitches DSW1 / MIDI Channel, qui relient ou non les entrées RB3 à RB6 du PIC à la masse. Quand les interrupteurs sont ouverts, les entrées RB3 à RB6 se retrouvent en l'air et prennent l'état logique haut grâce aux "résistances" de rappel intégrée dans le PIC (pullup activé). Le choix du canal MIDI de réception s'opère selon tableau suivant, la valeur 0 correspond à un interrupteur fermé (broche PIC à la masse) et la valeur 1 correspond à un interrupteur ouvert (broche PIC en l'air et donc à l'état logique haut).

Canal MIDI RB6 RB5 RB4 RB3
1 0 0 0 0
2 0 0 0 1
3 0 0 1 0
4 0 0 1 1
5 0 1 0 0
6 0 1 0 1
7 0 1 1 0
8 0 1 1 1
9 1 0 0 0
10 1 0 0 1
11 1 0 1 0
12 1 0 1 1
13 1 1 0 0
14 1 1 0 1
15 1 1 1 0
16 1 1 1 1

Si vous savez d'avance que les données MIDI seront toujours envoyées sur le même numéro de canal, vous pouvez vous passer du quadruple microswitches DSW1 et souder directement les broches RB3 à RB6 au pôle d'alimentation qui convient (masse ou +5 V). Par exemple si les notes reçues le sont toutes sur le canal MIDI N°1, alors les quatre broches du PIC RB3 à RB6 peuvent être raccordées directement à la masse. Et si les notes reçues le sont toutes sur le canal MIDI N°16, alors les quatre broches du PIC RB3 à RB6 peuvent être raccordées directement au +5 V.
Remarque : le numéro de canal MIDI spécifié par l'utilisateur via les interrupteurs DSW1 est lu uniquement lors de la mise sous tension du système. Tout changement opéré pendant que le système est en fonctionnement normal est ignoré. On pourrait fort bien lire la valeur des interrupteurs en boucle durant le fonctionnement normal mais cela réduirait un peu le temps de réaction de l'interface.

Sortie MIDI
La sortie MIDI est optionnelle, et n'est là que pour permettre de vérifier le bon fonctionnement de l'interface en cas de doute. Cette dernière délivre en effet brièvement une note MIDI C3 (Do3) lors de son initialisation, ce qui permet dès la mise sous tension de savoir si tout démarre bien. Cette sortie permet aussi de confirmer la bonne prise en compte des notes reçues, par simple écho de l'entrée vers la sortie (ce n'est pas du MIDI THRU car ça passe par du traitement logiciel). Pour que le mode echo soit activé, le cavalier JP1 doit être positionné de telle sorte que la broche RA3 du PIC soit porté au +5 V. Si l'entrée RA3 est reliée à la masse, le mode echo n'est pas activé et le seul moment où des données MIDI sont émises est celui de l'initialisation générale (mise sous tension ou appui sur le bouton de reset). Le mode echo est très pratique pour tester les limites de l'interface quand on envoie des données très rapprochées avec un séquenceur. La sortie MIDI de l'interface peut en effet être rebouclée sur le séquenceur qui envoie les notes. En même temps que le séquenceur joue ses notes, il peut enregistrer celles qu'il reçoit. La comparaison entre données émises et données reçues par le séquenceur est alors assez aisée et permet de voir s'il y a des ratées. Le temps de traitement pris par le PIC pour renvoyer les notes reçues n'est évidement pas nul, mais il est assez court (environ 1 ms pour chaque note ré-émise) pour considérer qu'il ne perturbera pas trop un diagnostic éventuel.
Remarque : la fonction Echo spécifiée par la position de JP1 est lue uniquement lors de la mise sous tension du système. Tout changement opéré pendant que le système est en fonctionnement est ignoré.

Alimentation

L'alimentation du montage doit impérativement être de +5 V et vous pouvez vous contenter d'une alim simple basée sur un régulateur de tension de type LM7805 comme celle décrite à la page Alim simple 001. La consommation globale du circuit de commande est relativement faible (moins de 50 mA), celle du circuit des relais dépendra du mode utilisé.
A noter que la commande des relais se fait via des ULN2803, qui conviennent parfaitement pour piloter en même temps plusieurs relais basse consommation. En cas d'utilisation de relais "ordinaires" il faudra utiliser un étage de sortie plus conséquent (la demande initiale pour ce circuit était un mode d'utilisation "exclusive" avec commandes "PC" et un seul relais activé à la fois).

Choix d'autres optocoupleurs

Il est possible d'utiliser d'autres optocoupleurs pour l'entrée MIDI, voir page Interfaces MIDI pour plus de détails. 

Brochage des prises MIDI

Câblage valable pour les prises MIDI IN, MIDI OUT et MIDI THRU.

midi_din_cablage_001

La borne 2 est reliée à la masse au niveau des sorties mais pas au niveau des entrées, pour éviter toute boucle de masse entre équipements.

Logiciel du PIC

Demande pro, logiciel non disponible en libre service.

Circuit imprimé

Non réalisé. Vue 3D uniquement là pour donner un aperçu des composants utilisés.

Historique

09/09/2018
- Première mise à disposition.