Dernière mise à jour : 01/01/2012
Présentation
Cette interface MIDI, basée sur un microcontrôleur de type
PIC
16F628A,
dispose d'une entrée MIDI et de deux sorties logiques dont
l'état dépend de messages MIDI
reçus.

Il
a
été conçu pour allumer une lampe
rouge style "RECORD" lors de la réception d'une commande MIDI de
type "Démarrage enregistrement" (Sysex MMC Record Punch In),
lampe qui s'éteint dès réception d'une commande
MIDI de
type "Fin enregistrement" (Sysex MMC Record Punch Out ou Sysex MMC
STOP). Ces données peuvent être envoyées par des séquenceurs matériels
ou logiciel tels que Cubase ou Nuendo. La sortie logique
représentative de l'état d'enregistrement
via messages MMC a ensuite vu l'arrivée d'une sortie dédiée à
l'indication de réception de messages
Start / Stop de type temps réel (RT, Real Time). Les deux sorties
sont totalement indépendantes. En outre, les sorties logiques peuvent
être inhibées ou forcées à volonté via deux entrées de commandes dont
l'usage est optionnel.
En cours : une version plus évoluée compatible avec messages MIDI au protocole Mackie HUI est en cours de développement, voir page Indicateur lumineux enregistrement 001.
Schéma
Une sortie MIDI OUT optionnelle, un quartz et deux
condensateurs optionnels (mais toutefois conseillés). Mais interdit de
supprimer le reste !

Oscillateur de référence
Les données MIDI doivent être transmises à une
vitesse de 31250 bauds, et cette vitesse doit être
respectée à quelques dizièmes de pourcents
près. Le PIC 16F628A dispose d'un oscillateur interne de 4 MHz,
dont la précision suffit même pour des applications MIDI,
aussi est-il possible de l'utiliser tel quel. Si vous ne faites pas
confiance à l'oscillateur interne, vous pouvez opter pour
l'usage d'un quartz externe de 4 MHz, le schéma est prévu
pour. La seule contrainte est de charger le programme qui va bien, dans
le PIC (les deux versions logicielles sont fournies). Bien que cela
fonctionne correctement la plupart du temps avec l'oscillateur interne, je vous conseille toutefois
la version avec quartz externe, surtout pour une utilisation en
situation "sévère".
Nouveauté 01/01/2012
: désormais, usage impératif d'un quartz externe 20 MHz. Cette
augmentation de vitesse n'était justifiée que par le fait que je
prévoyais une extension logicielle assurant la compatibilité avec
les messages
Mackie HUI - qui peuvent être plus long à traiter - mais cette
extension fait finalement partie d'un développement séparé, voir
page Indicateur lumineux enregistrement 001. Le circuit en cours (interface MIDI 005b) restera donc finalement tel qu'il est, dans sa version "simplifiée".
Entrée MIDI
Elle
se fait, comme d'habitude, sur un optocoupleur qui assure une isolation
électrique totale avaec la source MIDI. La résistance R1 limite le
courant dans la LED émissive contenue dans l'optocoupleur U2 (ici un
CNY17-2) et la diode D1 prévient tout dommage consécutif à une
inversion des broches 4 et 5 de la prise MIDI (câble MIDI fait maison
malencontreusement croisé ou erreur au niveau du connecteur d'entrée
J1). Il m'est arrivé de voir des schéma où la résistance R1 et la diode
D1 étaient toutes deux omises, il est vrai que le risque de destruction
de l'optocoupleur est faible car il y a déjà des résistances de
limitation de courant côté sortie MIDI de la source, mais je préfère
rester prudent de ce côté là.
Sortie MIDI Out
La sortie MIDI Out est totalement optionnelle.
Si pas besoin, retirer le
connecteur DIN J2 et les résistances R3 et R4. J'ai prévu cette prise
de sortie uniquement pour tester le bon fonctionnement de la partie
hard de l'UART du PIC, par émission d'un message de type Note brève
(note C3 - Do3 - émise pendant 200 ms). Les
données MIDI sortent
telles quelles au format TTL de la patte RB2 du PIC, qui est aussi la
sortie TX de l'UART matériel, et sont délivrées
via les deux résistances de limitation de courant R3 et R4, de
220 ohms chacune. Le fait que le PIC possède un UART simplifie
bien le développement du logiciel interne et permet surtout une
grande précision dans le timing des données émises
(même si pour ce genre de montage l'usage d'une gestion
totalement logicielle des données MIDI aurait été
possible en prenant quelques précautions).
Inhibition et forçage des sorties logiques
Le
circuit est doté de deux entrées "Inhib" (broche RB4 du PIC) et "Force"
(broche RB5 du PIC) dont l'utilisation est laissée à libre usage. Si
ces entrées sont laissées en l'air, elles n'ont aucune action et le
circuit se contente de réagir aux messages MIDI reçus.
- Si
l'entrée Inhib est placée à l'état logique bas (broche RB4 reliée à la
masse), alors les sorties Out_RT et Out_MMC restent désactivées quelque
soient les messages MIDI reçus.
- Si l'entrée Force est placée à l'état logique bas (broche RB5 reliée à
la masse), alors les sorties Out_RT et Out_MMC restent activées
quelque soient les messages MIDI reçus.
Dans
tous les cas, les messages MIDI et les commandes qu'ils représentent
sont analysés en continu et stockés en mémoire, de sorte que les
sorties logiques Out_RT et Out_MMC reprennent l'état qu'elles auraient
du avoir si aucune de ces entrées de commande n'avaient été utilisées,
au moment où on arrête de les utiliser. Prenons l'exemple d'une
commande MIDI MMC REC_Start reçue alors que les deux entrées de
commande "Inhib" et "Force" sont laissées en l'air. La sortie
Out_MMC s'active et la sortie Out_RT reste désactivée. Si aussitôt
après on met l'entrée de commande "Inhib" à la masse, la sortie Out_MMC
se désactive aussitôt, et si on remet l'entrée "Inhib" en l'air (à
l'état haut) alors la sortie Out_MMC se réactive aussitôt.
Usage possible de la commande "Inhib" : permettre à celui qui est aux manettes
de désactiver la lampe rouge pour ne pas signaler que l'enregistrement
est démarré.
Usage
possible de la commande "Force" : permettre à celui qui est aux
manettes de faire croire qu'un enregistrement est en cours (pour éviter
d'être dérangé entre deux prises par exemple).
Exploitation des sorties logiques
La sortie Out_MMC est à l'état bas au repos (0 V), et passe
à l'état haut (+5 V) lors de la réception d'une commande
MIDI de type RECORD START (PUNCH IN). Cette même sortie repasse
à l'état bas sur réception d'une commande MIDI de
type RECORD STOP (PUNCH OUT). La sortie Out_RT est à l'état bas au
repos, et passe
à l'état haut lors de la réception d'une commande
MIDI de type START. Cette même sortie repasse
à l'état bas sur réception d'une commande MIDI de
type STOP. Cette deuxième sortie a été ajoutée parce que cela ne
demandait que très peu de modifications au niveau logiciel et que le
PIC disposait d'une nombre de broches suffisant. Peut-être n'y
verrez-vous aucune utilité. La connexion d'une LED (pourquoi pas de type
haute luminosité rouge) directement sur les sorties du PIC (avec bien sûr une résistance série de limitation de courant) est
possible, mais pour une "grosse" lampe style 12 V / 6 W, 24 V /
12 W ou 230 V / 40 W, il faut passer par un étage amplificateur
de courant et même par un optocoupleur pour la version 230 V.
Voir pages Interfaces logique 001 et Interface de puissance 230V pour quelques exemples pratiques.
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.
Circuit imprimé
Réalisé en simple face, avec un très joli strap que je vous invite à mettre en valeur (fil en or massif de section 16 mm2 maximum).

Typon aux formats PDF, EPS et Bitmap 600 dpi
Le quartz X1 et les condensateurs C1 et C2 seront implantés si le
logiciel flashé dans le PIC correspond à la version pour quartz externe
(conseillé, qu'il s'agisse de l'ancienne version à 4 Mhz ou de la
nouvelle à 20 MHz).
Si
l'absence de condensateur de découplage d'alim vous embête, n'hésitez
pas à en ajouter un de valeur comprise entre 1 uF et 10 uF / 16 V. Soit
directement entre les bornes 5 et 14 du PIC 16F628A (face cuivre du
circuit imprimé) soit près du connecteur d'alim J4. Condensateur dans
le bon sens ça va de soi...
Logiciel du PIC
Les fichiers de code source
(MikroPascal Pro V5.30) et binaire compilé (*.hex) sont disponibles
dans l'archive dont le lien suit. L'archive zip contient trois versions de programmes :
- Fichiers
"electronique_interface_midi_005b_16f628_osc_int.*" : version avec
oscillateur interne 4 MHz et sans buffer circulaire. Plus maintenue à compter du 01/01/2012.
- Fichiers "electronique_interface_midi_005b_16f628_xtal_ext.*" : version
avec quartz externe 4 MHz et sans buffer circulaire. Plus maintenue à
compter du 01/01/2012.
- Fichiers
"electronique_interface_midi_005b_16f628.*" : version avec quartz
externe 20 MHz et avec buffer circulaire. Seule version maintenue à
compter du 01/01/2012.
Vous pouvez utiliser le code que vous voulez, mais je vous conseille
toutefois d'utiliser celui établi pour quartz externe 20 MHz, qui correspond à la version la plus complète.
Interface
MIDI 005b - PIC 16F628A - 01/01/2012
Si
vous souhaitez recevoir par la poste un PIC préprogrammé
et prêt à utiliser, merci de consulter la page PIC - Sources.
Historique
01/01/2012
-
Correction erreur code PIC version oscillateur interne : la
configuration spécifiait un mode d'horloge externe (quartz) et non un
mode d'horloge interne. Pour rappel, la version avec quartz externe est
toujours conseillée.
-
Ajout buffer circulaire en vue d'accépter des messages MIDI plus
volumineux (on ne sait jamais ce que l'avenir nous prépare).
- Ajout entrées de commande "Inhib" et "Force" pour contourner les messages MIDI reçus (option).
-
Changement vitesse horloge, passage de 4 MHz à 20 MHz.
06/03/2011
- Première mise à disposition.
Important
: à compter du 01/01/2012, les évolutions logicielles ne concernent que
la version avec quartz externe 20 MHz. Les versions avec quartz 4 MHz
et avec oscillateur interne sont laissées en place mais ne seront plus
maintenues. Je conseille donc désormais d'utiliser la
version la plus récente avec quartz 20 MHz et buffer circulaire.