Electronique > Réalisations > Indicateur lumineux enregistrement 001 - Pro

Dernière mise à jour : 22/03/2020

Présentation

Cet indicateur lumineux est conçu pour un usage en studio d'enregistrement (post-production audio, doublage) quand une indication visuelle de début ou de fin d'enregistrement est requise auprès de techniciens son, musiciens ou comédiens.

indicateur_enregistrement_001_front

Il permet d'allumer un ou plusieurs voyants très visibles à partir de messages MIDI provenant de stations de travail audio équipées de Cubase, Nuendo, Protools, Reaper ou autre logiciel séquenceur, selon les protocoles standard RT (RealTime, infos temps réel standard MIDI), MMC (MIDI Machine Control) ou MCP/HUI (Mackie Control Protocol). Le système est doté de son propre système d'éclairage à LED et de plusieurs relais qui permettent le raccord à des lampes déjà installés ou qui établissent des liaisons ou coupures audio de façon automatisée. Le système dispose d'une entrée MIDI et d'une sortie MIDI. L'entrée MIDI est requise dans tous les cas puisque c'est par elle que les messages d'information MIDI arrivent. La sortie MIDI n'est requise que pour Protools qui attend des accusés de réception pour pouvoir continuer à envoyer ses messages. L'alimentation s'effectue par le secteur 230 V, mais peut aussi provenir d'un bloc d'alimentation du commerce dont la tension de sortie est de 12 V (obligatoirement régulée). J'ai travaillé sur 3 versions dont une seule à ce jour est maintenue :
- Schéma 001 : version avec PIC 16F628A (ou 16F648A), buffer réception MIDI 64 octets (ou 128 octets) - plus maintenu
- Schéma 001b : version avec PIC 18F2520, buffer réception MIDI 1024 octets - plus maintenu
- Schéma 001c : version avec PIC 18F26K22, buffer réception MIDI 2048 octets - maintenu - Pro
Les trois schémas ont une structure rigoureusement identique, il n'y a que le type de microcontrôleur qui change. Le texte descriptif est donc valable pour les trois systèmes, aux différences mentionnées près.

Avertissement

09/01/2012 : l'indicateur avec PIC 16F628A/16F648A (schéma 001) fonctionne bien quand les données MIDI qu'il reçoit ne contiennent pas trop de données en complément des commandes de transport. Mes essais avec Cubase et Protools, lesquels transmettent pas mal de données annexes (Time Code et nombreux Control Change) ne sont pour l'instant pas concluants. Système non maintenu mais disponible en libre téléchargement. Le logiciel du PIC 18F2520 (schéma 001b) est terminé et la simulation est OK, mais je n'ai pas fait de proto et n'en ferai pas (système non maintenu, code non disponible).
22/03/2020 : portage du logiciel sur PIC 18F26K22 (schéma 001c). Fonctionnement OK avec de volumineux flux de données MIDI (Timecode ou autres). C'est pour l'heure ce système qui est maintenu et bénéficiera d'un suivi. Projet passé en statut Pro, logiciel non disponible.

Schéma 001 - avec PIC 16F628A ou 16F648A

Le coeur du montage repose sur un PIC 16F628A ou 16F648A, dont le logiciel est très largement inspiré de celui développé pour mon interface MIDI 005b

indic_rec_001

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 qu'on n'utilise pas ici, puisqu'il est fait usage d'un quartz externe de 20 MHz. 

Entrée MIDI et sortie MIDI Thru
Elle se fait sur l'optocoupleur U2/CNY17-2 qui assure une isolation électrique totale avec la source MIDI. La résistance R1 limite le courant dans la LED émissive contenue dans l'optocoupleur 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 est possible d'utiliser d'autres optocoupleurs pour l'entrée MIDI, voir page Interfaces MIDI pour plus de détails. Une sortie MIDI Thru peut être ajoutée, si on souhaite utiliser ce montage en parallèle d'une liaison déjà utilisée pour un autre équipement. Comme la simple mise en parallèle de la prise MIDI In avec une prise MIDI Thru est tout bonnement exclue, un peu d'électronique complémentaire est ajoutée, qui se résume à la simple mise en place d'un circuit intégré TTL 74HCT04 (dont on exploite deux portes logiques) et de deux résistances additionnelles. Cette petite portion de montage prévue sur le circuit imprimé est optionnelle, si vous n'en avez pas besoin il suffira d'ignorer l'implantation des deux résistances R12 et R13. Le circuit intégré U4 devra dans tous les cas rester en place car une autre de ses portes logiques sert à inverser les données MIDI d'entrée pour permettre leur visualisation sur une LED dédiée.

indic_rec_001_midi_thru

Bien sûr si visualiser l'état de l'entrée MIDI In ne vous est pas utile non plus, le CI U4 devient dans ce cas entièrement superflu.

Sortie MIDI Out
La sortie MIDI Out est requise pour les logiciels qui attendent un retour de la part de l'interface (Protools par exemple). Les données MIDI sortent telles quelles au format TTL de la patte RB2 du PIC (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.

Analyse des données MIDI reçues
Les données de transport acceptées par ce système sont les suivantes :
(*) Uniquement testé (avec succès) avec une surface de contrôle NI Kore supportant l'émulation Mackie.

Inhibition et forçage des sorties logiques
Le circuit est doté de plusieurs entrées de commande destinées à contourner manuellement les automatismes liés à la réception des messages MIDI. Toutes ces entrées de commande sont actives quand on les porte à un état logique bas, ce qui est simplement assuré en les connectant à la masse via un bouton-poussoir de façade ou poussoir au pied (on pourrait aussi prévoir une commande via logique externe, au travers d'un transistor NPN câblé en interrupteur / émetteur commun, point non abordé ici).
Toutes ces entrées sont de type à bascule : un appui pour activer, un autre pour désactiver.
Usage possible de la commande In_Inhibit_R : 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 In_Lock_R : permettre à celui qui est aux manettes de faire croire qu'un enregistrement est en cours alrs que ce n'est pas le cas (pour éviter d'être dérangé entre deux prises par exemple).

Blocs d'éclairage
Contrairement aux panneaux indicateurs d'enregistrement standards avec un seul éclairage rouge (punchlight ou OnAir light, affichage "RECORDING" ou "ON AIR"), on veut ici disposer d'une indication lumineuse à plusieurs états (plusieurs couleurs différentes) :
On peut pour cela opérer de deux façons différentes : en utilisant soit trois voyants séparés rouge, vert et jaune, soit un voyant bicolore rouge/vert qui quand ses deux élements sont allumés affiche du jaune. C'est cette deuxième solution qui a été retenue. Le boîtier principal dispose d'une signalétique locale (une LED bicolore ou deux LED ordinaires) et de sorties permettant le raccord direct de LED haute luminosité, qui peuvent être déportées de plusieurs mètres sans aucun soucis (liaison en courant faible). La LED CUE est une LED verte simple. La LED MIDI_Rx est optionnelle, elle s'allume simplement lors de la réception d'évenements MIDI.
Remarque : il est bien entendu possible de se limiter à la seule couleur rouge, pour ceux qui estiment que l'utilisation de plusieurs couleurs risque embrouiller les esprits ;)

Exploitation des sorties
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 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 sortie repasse à l'état bas sur réception d'une commande MIDI de type STOP.
La sortie Out_MCP change d'état lors de la réception de messages MIDI répondant au protocole MCP ou HUI.
Les sorties Out_LED_R et Out_LED_G s'allument selon les données reçues PLAY, STOP et REC :
Toutes ces sorties sont de type logique TTL 5 V. Il est donc possible d'y raccorder directement une LED (avec bien sûr une résistance série de limitation de courant) ou un relais par le biais d'un amplificateur en courant. Les relais que j'ai choisis disposent de points "Commun", "Repos" et "Travail", ce qui permet de faire ce qu'on veut avec (établissement ou désactivation d'une fonction quelconque). Actuellement, le circuit bénéficie de contacts "secs" (contacts relais) pour les sorties Voyant Rouge, Voyant Vert et Mute Monitoring, via les connecteurs J6/GPIO1, J7/GPIO2 et J8/GPIO3, respectivement. Les LED haute luminosité déportées du boîtier pour les signalisations REC et CUE doivent être raccordées sur les points du connecteur J5/LED_Out. Les résistances série de limitation de courant qui leur correspondent (R9 à R11) devront éventuellement être ajustées en fonction des LED utilisées.
Le connecteur J9/PS_Out permet de disposer d'une tension de 12 V qui pourra être "exportée" du boîtier, par exemple pour piloter un appareil qui requiert cette tension, au travers des contacts d'un des relais. Un fusible de protection de 630 mA (FU1) est prévu pour parer tout dommage lié à un mauvais câblage externe.

Schéma 001b - avec PIC 18F2520

Même chose que le schéma 001, au type de PIC et numéros de broches près.

indic_rec_001b

Schéma 001c - avec PIC 18F26K22

Même "configuration" que le schéma 001b avec son PIC 18F2520, le code a été adapté pour de nouvelles fonctions.

indic_rec_001c

L'interface à relais utilisée ici (non représentée) est rigoureusement la même que celle montrée dans la partie inférieure du schéma 001b ci-devant. On notera la présence sur le schéma 001c du connecteur supplémentaire ICSP uniquement utilisé pour la programmation du PIC "in situ". Le fait que les lignes d'horloge (PGC) et de données (PGD) se trouvent sur des entrées par ailleurs utilisées ne pose pas de problème ici, car lesdites entrées sont reliées à des boutons-poussoirs ouvert au repos.

Extensions prévues :

Différences entre schéma 001 (PIC 16F628A), schéma 001b (PIC 18F2520) et  schéma 001c (PIC 18F26K22)
L'affectation des sorties est modifiée selon tableau suivant. L'affectation des entrées reste inchangée.

Entrées / sorties
(In_ / Out_)
Schéma 001
(PIC 16F628A)
Schéma 001b
(PIC 18F2520)
Schéma 001c
(PIC 18F26K22)
Entrée In_Inhib_R RB4 RB4 RB4
Entrée In_Lock_R RB5 RB5 RB5
Entrée In_Cue_G RB6 RB6 RB6
Entrée In_Mute_Mon RB7 RB7 RB7
Sortie Out_MMC RA0 RC0 RC0
Sortie Out_RT RA1 RC1 RC1
Sortie Out_MCP RA2 RC2 RC2
Sortie Out_LED_R RA3 RC3 RC3
Sortie Out_LED_G RA4 RC4 RC4
Sortie Out_Cue RB0 RB1 RB1
Sortie Out_Mon_Mute RB3 RB0 RB0

Dans les faits, ces différences ne sont pas "pénalisantes" dans la mesure où les trois types de PIC n'ont pas le même brochage ni les mêmes dimensions physiques. Il faut dans tous les cas prévoir un circuit imprimé dédié au type de microcontrôleur choisi.

Alimentation secteur

Le circuit proposé ici permet de s'affranchir d'un bloc secteur externe et produit les deux tensions de 12 V et de 5 V requises pour les divers élements du montage. La tension de 12 V n'est requise que pour les relais et voyants (internes et externes). La tension de 5 V est requise par la logique de commande (microcontrôleur PIC). Comme ce type d'alimentation peut être requis pour d'autres montages, j'ai décidée de constituer pour elle un circuit (et un article) à part.

alim_multiple_005 alim_multiple_005_pcb_3d_a

Détails de cette alim en page Alimentation multiple 005.
Si vous n'utilisez que trois relais 12 V de petite puissance, et vue la consommation en courant requise pour le microcontrôleur, il n'est normalement pas nécessaire de mettre des dissipateurs thermiques sur les deux régulateurs de tension de ce bloc alim.

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.

Configuration du logiciel hôte (Cubase / Protool)

Les procédures de configuration données ici s'appliquent seulement à Cubase et Protools. Pour les autres systèmes, merci de consulter le manuel utilisateur.

Configuration pour Cubase (V6.5)
Appuyer sur le bouton In_Inhib_R en même temps que l'équipement est mis sous tension. La LED REC clignote deux fois. Cette opération n'est requise qu'une seule fois puisque le choix est conservé en EEProm.

Config. Cubase... non décrite

Configuration pour Protools (V9.0.5)
Appuyer sur le bouton In_Lock_R en même temps que l'équipement est mis sous tension. La LED REC clignote trois fois. Cette opération n'est requise qu'une seule fois puisque le choix est conservé en EEProm.

Config. Protools... non décrite

Procédures de tests et développement

J'ai commencé ce projet en 2012, à une époque où je ne connaissais pas le protocole Mackie. Le temps passé pour rechercher, comprendre et tester mes logiciels m'a demandé de nombreux jours de travail. Il m'a fallu du temps pour comprendre pourquoi Protools lui seul posait problème !

Simulation pour commencer
Pour les tests pratiques, j'ai d'abord procédé par "simulation". L'indicateur d'enregistrement n'avait pas encore vu le jour sur sa petite plaque d'expérimentation, alors il fallait bien que je fasse croire à mes outils de test qu'il existait. Pour ce faire, j'ai utilisé mon logiciel MIDI-Test (que j'ai du mettre à jour pour l'occasion) afin de lui permettre d'envoyer des commandes de transports au protocole Mackie (MCP). Une fois cette mise à jour logicielle effectuée, j'ai ressortie ma surface de contrôle NI Kore dont deux encodeurs optiques abîmé par une chute malencontreuse provoquent désormais l'envoi aléatoire de données, ce qui rend l'ustensile peu fonctionnel. Mais suffisant pour mes tests (d'autant que les données envoyées aléatoirement se sont révélées fort utiles pour mettre en évidence la faiblesse de l'interface).

indic_rec_001_tests_001a indic_rec_001_tests_001bindic_rec_001_tests_001c

Les tests de simulation se sont révélés concluants. Lecture et reconnaissance parfaite des commandes de transport issues de la surface de contrôle NI Kore configurée en émulation Mackie (et cette dernière reconnait bien les commandes de transport que je lui envoie). Les tests avec le "vrai matériel" ont été ensuite réalisés avec de simples LED pour visualiser l'état des sorties en fonction des messages MIDI reçus (inutile de s'encombrer de relais).

Débugage et partage des essais
Premier exemplaire de prototype 001 terminé (avec mon interface MIDI 011 pour simplifier le proto), le fonctionnement d'ensemble est validé.

indic_enr_001_proto_001a

09/01/2012 : malheureusement, tout ne fonctionne pas parfaitement. Si l'indicateur réagit bien aux divers commandes des divers protocoles (RT, MMC et MCP/HUI), cela est vrai quand ne viennent pas s’immiscer trop de messages intermédiaires entre les messages de transport. Mes essais avec ma surface de contrôle NI Kore et mon séquenceur Yamaha QY70 montrent que ça fonctionne très bien quand on se limite à des flux de données "modestes". Mais dès qu'il faut se coltiner les time-codes et autres messages de Control Change, là mon indicateur ne suit plus. Il me faut donc travailler plus sérieusement sur le buffer d'entrée (qui est déjà de type circulaire) et sur le filtrage des données reçues. Malgré un fonctionnement mitigé, je met le logiciel à disposition, pour les plus curieux d'entre vous.

22/03/2020 : la version avec PIC 18F26K22 (schéma 001c) fonctionne nettement mieux que les versions précédentes ! Le système n'est plus perturbé par les flux MIDI volumineux (Timecode ou autres). Le prototype 001c (doté d'un optocoupleur PC900) fonctionne bien avec Cubase et Protools (messages MMC / MCP / HUI).

indic_enr_001_proto_002a indic_enr_001_proto_002b indic_enr_001_proto_002c indic_enr_001_proto_002z

J'aime bien cette dernière photo, allez savoir pourquoi ;)

Logiciel du PIC

Le fichier binaire compilé (*.hex) du système 001 (PIC 16F628A) est disponible dans l'archive dont le lien suit.
Logiciel 001 (PIC 16F628A) : disponible mais non finalisé.
Indicateur lumineux enregistrement 001 - PIC 16F628A - 08/01/2012
Logiciel 001b : plus maintenu
Logiciel 001c : Pro - non disponible en libre téléchargement
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Circuit imprimé (PCB)

La version 001 (PIC 16F628A) avait été réalisée en double face... mais ne sera finalement pas exploitée. En attendant la version 001c...

indic_rec_001_pcb_composants     indic_rec_001_pcb_3d_a

Remarques
Si pas besoin de la sortie MIDI Thru, ignorer l'implantation des deux résistances R12 et R13. Mais entre nous, il serait dommage de se passer de cette sortie pour si peu...

Historique

22/03/2020
- Nouveau schéma 001c avec PIC 18F26K22, plus robuste face aux volumineux flux de données MIDI (augmentation taille buffer d'entrée).
- Ajout indicateur de réception de messages MIDI, sortie Out_Rx sur la ligne RC5 du PIC.
- Ajout envoi accusés de réception sur la sortie MIDI OUT pour maintien de la connexion (requis par Protools)
09/01/2012
- Première mise à disposition (schéma 001 avec PIC 16F628A et schéma 001b avec PIC 18F2520).