Dernière mise à jour :
03/11/2013
Présentation
Ce métronome permet d'allumer des lampes (petites ou grosses) en synchronisme avec l'horloge temps réel d'un flux MIDI.
On ne peut pas régler la
vitesse des "flashes" lumineux puisqu'on travaille ici en mode
"esclave", la vitesse dépend du rythme balancé dans les données MIDI.
Oui, on aurait pu appeler ce montage "Interface MIDI xxx" ou "indicateur de rythme musical xxx" au lieu de
"Métronome xxx". Le
circuit fait appel à un PIC 16F628A, pratique pour son module UART
matériel qui rend la réception des données MIDI bien plus facile à
gérer. Optionnellement, il peut électrocuter les musiciens qui
ne jouent pas
en rythme - mais sans toutefois pouvoir assurer leur remplacement
immédiat.
Schéma
Grâce au PIC, le montage reste assez simple dans son ensemble.
Principe général de fonctionnement
Les données MIDI appliquées
à l'entrée du montage sont analysées octet par octet, et seules les
informations liées au rythme (horloge) sont traitées. L'horloge MIDI
comporte 24 pulsations par quart de note (24 PPQN, Pulses Per
Quarter Note), il suffit donc de compter ces pulsations et d'allumer la
lampe quand on en a réceptionné 24. L'horloge étant véhiculée même
quand le morceau de musique est à l'arrêt, le système se base sur les
commandes STOP, START et CONTINUE pour s'arrêter de compter quand cela
n'est pas requis. Quatre petits interrupteurs (microswitches) ou
cavaliers permettent de savoir où retrouver les temps forts et faibles
des mesures, nous y reviendrons.
Entrée MIDI
Classique
: un optocoupleur, une diode et deux résistances. Les données MIDI au
format TTL sont disponibles sur la broche 5 de U2 et sont directement
envoyées sur l'entrée Rx de l'UART du PIC (broche 7).
Sortie MIDI
Allez, je vais
(encore une fois) vous confier un vrai secret. La sortie MIDI se
comporte comme une sortie MIDI-THRU mais après traitement logiciel. Je
trouvais dommage de disposer d'une sortie UART non utilisée, et
trouvais encore plus dommage de devoir ajouter un circuit intégré de
type "buffer" (par exemple 74HCT04) pour ajouter un MIDI-THRU physique.
Avantage de la solution logicielle adoptée ici : d'un part moins de
composants électroniques (deux résistances additionelles suffisent), et
d'autre part filtrage des données de type Active Sensing ($FE). Cette
sortie est, vous l'avez compris, totalement facultative et si tout va
bien non olfactive. Info pour les curieux : la recopie des données
entrantes vers la sortie MIDI prend un retard de 0,33 ms. J'espère que ça ne vous choque pas.
Affichage du rythme
Pourquoi faire simple quand on sait faire autrement ? J'ai câblé trois LED dont le rôle est le suivant :
- LED D2 : s'allume brièvement à chaque temps d'une mesure (temps forts et temps faibles)
- LED D3 : s'allume brièvement à chaque temps fort d'une mesure
- LED D4 : s'allume brièvement à chaque temps faible d'une mesure
Vous
pouvez très bien ne câbler que la seule LED D2, ou utiliser le couple D3/D4. Dans tous
les cas la durée d'allumage des LED est de 50 ms, ce qui suffit pour
voir un joli flash. Les interrupteurs câblés sur les lignes RB4 à RB7
permettent de spécifier la signature rythmique, ou pour être plus
précis le nombre de temps dans chaque mesure (cette
information n'est pas transmise dans le flux MIDI). Le code binaire
présenté sur ces quatre entrées RB4 à RB7 correspond au nombre de
temps par mesure, avec un petit décalage de 1 :
- pour afficher du 4/4, il faut mettre à 1 les deux entrées RB4 et RB5
et laisser à 0 les deux entrées RB6 et RB7 (valeur en binaire = 3).
-
pour afficher du 3/4, il faut mettre à 1 l'entrée RB4 et laisser à
0 les trois autres entrées RB5 à RB7 (valeur en binaire = 2).
Si
vous êtes sage, je modifierai le code pour une configuration en
concordance directe (valeur 4 pour 4 temps). En attendant, notez bien
qu'un interrupteur fermé implique un état bas sur l'entrée
correspondante, les résistances de pullup du port B sont activées.
Sortie de puissance
Les LED peuvent suffire dans
bien des cas (surtout si elles sont très lumineuses et que leur
diamètre
avoisine le mètre), mais on peut au besoin les remplacer par une
interface 230 V qui permet de jouer avec des lampes
à incandescence 230 V. Avec l'interface suivante, vous pouvez par
exemple remplacer la LED D2 et sa résistance série R6 par
l'optocoupleur U1 associé à sa résistance R1 et sa LED D1 (cette
dernière LED permet juste de vérifier l'activation de la sortie du PIC
quand la section 230 V n'est pas raccordée).
Détail et explications de cette interface à la page
Interface 5 V / 230 V. Je
n'ai pas essayé mon proto en version secteur et ne suis pas certain que les 50
ms que j'ai prévus pour le temps d'allumage suffisent pour une lampe à
incandescence. A essayer. Si ça ne suffit pas et que l'envie de modifier le logiciel n'y est pas, on peut ajouter un
monostable
entre la sortie du PIC et l'optocoupleur. Ce dernier, avec un réglage
de la durée de l'impulsion de sortie (50 ms à 500 ms), permettra
d'obtenir l'effet désiré de façon très précise.
Alimentation
Le PIC a besoin d'une alimentation de +5 V,
un
régulateur de tension
du type LM7805 ou 78L05 fait parfaitement l'affaire. Pour ce qui tourne
autour du régulateur, on reste dans le classique : une diode (D5) pour
protéger le montage contre une inversion accidentèle de la polarité du
bloc d'alimentation, des condensateurs pour améliorer le filtrage et
garantir une bonne stabilité (C3 et C4) et enfin une LED en sortie (D6)
pour confirmer la mise sous tension.
Prototype
Tests réalisés avec ma platine EasyPic7, ma fidèle extension
Interface MIDI 011 et mon vieux séquenceur portable Yamaha QY70.
Le
QY70 a bien sûr été configuré pour délivrer les infos
d'horloge et de transport sur la sortie MIDI OUT (menu Utility). Lors
des premiers tests, la mise en pause et le redémarrage d'une séquence
provoquait une désynchronisation de l'affichage des LED par rapport au
métronome du maître. Et pour cause, le PIC stoppait le
clignotement des LED à l'arrêt mais continuait de compter les tops
d'horloge. Il y avait donc une chance sur 24 pour qu'au redémarrage ça
reparte au bon endroit. Problème résolu.
Logiciel du PIC
Le fichier binaire compilé (*.hex) est
disponible
dans l'archive dont le lien suit.
Métronome 007 - PIC 16F628A - Version du 03/11/2013
Si vous souhaitez recevoir par la poste un PIC
préprogrammé et prêt à utiliser, merci de
consulter la page
PIC
- Sources.
Circuit imprimé
Non réalisé, vue 3D uniquement là pour faire joli.
Historique
03/11/2013
- Première mise à disposition.