Electronique > Réalisations > Interfaces > Interfaces MIDI > Interface MIDI 005b

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.

interface_midi_005b_pcb_3d_a interface_midi_005b_pcb_3d_b

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 !

interface_midi_005b

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

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.

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

interface_midi_005b_pcb_composants

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