Dernière mise à jour :
09/01/2012
Article non terminé, volontairement
non
référencé dans les sommaires du
site
Présentation
Cet indicateur lumineux est conçu pour un usage en studio
audio /
vidéo (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.
Il permet
d'allumer des voyants très visibles selon des
messages MIDI
provenant
de stations de travail audio équipées de Cubase, Nuendo, ou
Protools,
selon les protocoles standard RT (temps réel), MMC (MIDI Machine
Control) ou MCP/HUI (Mackie Control Protocol). Le système
est doté de son propre système d'éclairage à LED et dispose en
outre de
plusieurs relais qui permettent le raccord à des systèmes
d'éclairage
déjà installés ou qui établissent des liaisons ou des coupure
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 confirmations de
l'extérieur
pour pouvoir continuer à envoyer ses messages. L'alimentation
s'effectue via secteur 230 V, mais peut aussi provenir d'un bloc
d'alimentation du commerce dont la tension de sortie
(obligatoirement
régulée) est de 12 V. J'ai travaillé sur deux versions :
-
Schéma 001 : version
avec PIC 16F628A, buffer réception MIDI 64 octets.
-
Schéma 001b : version
avec PIC 18F2520, buffer réception MIDI 1024 octets.
Les
deux 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 deux, aux différences mentionnées près.
Avertissement
Pour l'heure, l'indicateur avec PIC 16F628A 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 d'assez nombreux Control Change) ne sont pour l'instant pas
concluants.
09/01/2011
: le logiciel du PIC 18F2520 est terminé et la simulation est OK,
mais
je n'ai pas encore fait de proto avec ce circuit. J'ai un peu plus
d'espoirs avec ce dernier.
Schéma 001 - version avec PIC 16F628A
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.
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. C'est peut-être un peu ambitieux mais je ne ferais de tests
avec
des quartz 4 MHz et 8 MHz que si je dispose d'un temps suffisant
(au
niveau simulation c'est OK mais il faut voir en situation réelle).
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.
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". 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 acceptées sont :
- Informations temps réel standard (un seul octet) - OK, ça fonctionne
- Informations temps réel MMC (six octets dans une trame
sysex) - OK, ça fonctionne
- Informations standard Mackie MCP/HUI - OK, ça fonctionne (*)
(*) Pour l'heure, uniquement testé avec une petite surface de
contrôle NI Kore avec é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 simple 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).
- Entrée In_Inhibit_R (broche RB4 du PIC) : si
cette entrée est activée (broche RB4 reliée à la
masse), alors la sortie Out_LED_R (voyant rouge) reste
désactivée quelque
soient les messages MIDI reçus.
- Entrée In_Lock_R (broche RB5 du PIC) : si
cette entrée est activée (broche RB5 reliée à la
masse), alors la sortie Out_LED_R (voyant rouge) reste
activée
quelque
soient les messages MIDI reçus.
- Entrée In_Cue_G (broche RB6 du PIC) : si
cette entrée est activée (broche RB6 reliée à la
masse), alors la sortie Out_Cue (voyant Cue)
reste activée quelque
soient les messages MIDI reçus.
- Entrée In_Mute_Mon (broche RB7 du PIC) : si
cette entrée est activée (broche RB7 reliée à la
masse), alors la sortie Out_Mute_Mon (Mute Monitoring)
reste activée quelque
soient les messages MIDI reçus.
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 (pour
éviter
d'être dérangé entre deux prises par exemple).
Blocs d'éclairage
On veut ici disposer d'une indication lumineuse à trois états :
- Rouge = Enregistrement
- Vert = Lecture
- Jaune = Stop / Pause
On
peut pour cela opérer de deux façons différentes : usage de
trois
voyant séparés rouge, vert et jaune, ou usage d'un voyant
bicolore
rouge / vert qui quand ses deux élements sont allumés affiche du
jaune.
C'est cette deuxième solution qui est retenue. Le
boîtier principal dispose d'une signalétique locale (LED bicolore
standard anode commune ou deux LED séparées) et de sorties
permettant
le raccord direct de LED haute luminosité, qui peuvent être
déportées
de plusieurs mètres sans aucun soucis (laison 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.
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 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. Selon la même philosophie de fonctionnement, la sortie
Out_HUI change d'état lors de la réception de messages MIDI
suivant le
protocole Mackie. Ces trois sorties sont de type logique TTL 5 V,
la
connexion directe d'une LED (avec bien sûr une résistance série de
limitation de courant) est
possible, et pourra être utile pour visualiser le type de messages
reçus. Les autres sorties se font sur relais
qui disposent toutes de points "Commun" et de points "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
(non
nécessaire si vous optez pour des modèles classiques 20 mA).
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 - version avec PIC 18F2520
Même chose que le schéma 001, à peu de choses près.
Différences entre schéma 001 (PIC 16F628A) et schéma 001b (PIC
18F2520)
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) |
Entrée In_Inhib_R |
RB4 |
RB4 |
Entrée In_Lock_R |
RB5 |
RB5 |
Entrée In_Cue_G |
RB6 |
RB6 |
Entrée In_Mute_Mon |
RB7 |
RB7 |
Sortie Out_MMC |
RA0 |
RC0 |
Sortie Out_RT |
RA1 |
RC1 |
Sortie Out_MCP |
RA2 |
RC2 |
Sortie Out_LED_R |
RA3 |
RC3 |
Sortie Out_LED_G |
RA4 |
RC4 |
Sortie Out_Cue |
RB0 |
RB1 |
Sortie Out_Mon_Mute |
RB3 |
RB0 |
Dans
les faits ces changements ne sont pas "pénalisants" dans la mesure
où
les deux 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 autre
circuit imprimé.
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. Tension de 12 V pour les relais et voyants
(internes et externes) et tension de 5 V pour la logique
principale
(microcontrôleur). Comme ce type d'alimentation peut être requise
pour
d'autres montages, j'ai décidée de constituer pour elle un circuit
à
part.
Détails de cette alim en page
Alimentation
multiple
005.
Si
vous n'utilisez que trois relais 12 V de petite puissance, et vu
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.
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)
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...
Configuration pour Protools (V9)
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...
Procédures tests et développement
J'ai
passé pas mal de temps à débroussailler les données que je ne
connaissais pas très bien. Et comme de bien entendu j'ai fait
plusieurs
erreurs qui m'ont retardées. Mais c'est bien comme ça que ça
marche,
non ? Pour limiter le nombre d'heures perdue pour rien, j'ai
d'abord
procédé à quelques recherches, documentations sur les divers
protocoles
MIDI (j'en connaissais une partie seulement), fouine dans les
forums de
discussion. Parce que bien sûr, je ne suis pas le seul à chercher
comment fonctionnent ces petites bêtes qu'on nomme contrôleurs ou
accessoires de studio.
Simulation pour commencer
Pour les tests pratiques, j'ai d'abord procédé
par "simulation". L'indicateur d'enregistrement n'a pas encore vu
le
jour sur sa petite plaque alors il fallait bien que je fasse
croire à
mes outils de test qu'il existait. Pour ce faire, rien de bien
compliqué, 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.
Tests de simulation logiciels concluants. J'arrive bien à lire et
reconnaître
les commandes de transport venant 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. Bref, ça
avance. Les
tests matériels seront réalisés le plus simplement possible. Je ne
vais
pas m'encombrer de relais puisque de simples LED suffiront
pour visualiser l'état des sorties en fonction des messages
MIDI reçus.
Débugage et partage des essais
Premier exemplaire de prototype terminé (avec utilisation de mon
interface
MIDI 011 pour simplifier), le fonctionnement d'ensemble est
validé.
Malheureusement,
tout ne fonctionne pas parfaitement pour le moment. Si
l'indicateur
réagit parfaitement 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 côté buffer d'entrée
(qui est
déjà de type circulaire) et filtrage des données reçues. Malgré un
fonctionnement mitigé, je met le logiciel à disposition, pour les
plus
curieux d'entre vous. Je ne compte pas faire tous les tests
suivants
tout
seul, ce serait idiot de ma part car tout le monde à des besoins
différents. Il va de soi que l'expérience globale apportée par les
autres sera
bien plus enrichissante, je suis loin d'avoir l'expérience requise
pour
proposer du premier coup une machine "révolutionnaire" (aurait-on
besoin de ça pour mieux bosser ?).
Logiciel du PIC
Le fichier binaire compilé (*.hex) est disponible
dans l'archive dont le lien suit.
Logiciel disponible mais non finalisé.
Indicateur
lumineux
enregistrement 001 - PIC 16F628A - 08/01/2012
Si
vous souhaitez recevoir par la poste un PIC préprogrammé
et prêt à utiliser, merci de consulter la page
PIC - Sources.
Circuit imprimé
En cours de réalisation. En cours parce qu'en
double face c'est déjà fini, mais j'aimerais le proposer en simple
face. Je crois que pour cela je vais devoir écarter les
composants
et ajouter quelques straps...
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
09/01/2012
- Première mise à disposition