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).
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" :
- Mode On/Off
: la
réception d'une NOTE ON active la sortie et le relais qui lui
correspondent, et
la réception d'une NOTE OFF désactive la sortie qui lui
correspond.
- Mode Pulse
: la
réception d'une NOTE ON active la sortie qui lui
correspond pendant une durée de 1 ms seulement, et les
évenements NOTE OFF
sont ignorés. Ce mode "logique" n'est pas adapté pour commander
les relais.
Deux modes de fonctionnement sont disponibles pour la gestion des
événements "Control Change" et "Program Change" :
- Mode All
: les sorties sont activées par une valeur de CC >= 64 et sont
désactivées par une valeur de CC < 64
(plusieurs sorties peuvent être activées en même
temps)
- Mode Exclusive
: les sorties sont activées par une valeur de CC quelconque et sont
désactivées sur réception dune autre valeur de CC (une seule sortie
peut être active à la fois)
Le canal MIDI de réception peut être spécifié.
Schéma
Le schéma complet est le suivant.
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.
- JP2/Pulse en place (entrée RB7 du PIC à la masse) : mode On/Off
- JP2/Pulse retiré (entrée RB7 du PIC au +5 V via pullup interne) :
mode 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.
- JP3/Exclus. côté masse (entrée RB0 du PIC à la masse) : mode
Normal/All
- JP3/Exclus. côté +5 V (entrée RB0 du PIC au +5 V) : mode Exclusive;
une seule sortie peut être activée à la fois.
Le
cavalier JP1/Echo quant à lui permet de spécifier si les messages MIDI
entrants doivent ou non ressortir sur la sortie MIDI Out.
- JP1/Echo côté masse (entrée RA3 du PIC à la masse) : mode Echo désactivé
- JP1/Echo côté +5 V (entrée RA3 du PIC au +5 V) : mode Echo activé
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.
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
Pro - 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.