Electronique > Réalisations > Interfaces > Interfaces MIDI > Indicateur tempo MIDI 004 [Pro]

Dernière mise à jour : 19/01/2020

Présentation

Cet indicateur de tempo MIDI se base sur les messages d'horloge transmis dans une liaison MIDI.

indicateur_tempo_004_pcb_3d_a

Il mesure le temps qui s'est écoulé entre deux messages MIDI Clock et le traduit en valeur de tempo avec une résolution de 1 BPM.

Schéma

Sous l'apparente et incertaine complexité du schéma qui suit, se cache une évidente simplicité moins complexe que ce à quoi on pense quand on ne sait plus où l'on en est, puisqu'à force de se perdre, à moins que ce ne soit l'inverse, rien n'est moins sûr que l'incertain (ne m'en veuillez pas, j'ai encore lu du Pierre Dac avant de m'endormir entre hier soir et ce matin - ou le contraire).

electronique_indicateur_tempo_004

Fonctionnement général
Le système analyse les messages d'horloge MIDI Clock (basé sur les mesures, Beat) et non les messages MTC MIDI Time Code (basé sur des informations temporelles heures:minutes:secondes:trames). Le principe de fonctionnement est simple et se base sur un calcul mathématique tout aussi simple. Les messages temps réel MIDI Clock sont délivrés à raison de 24 fois par quart de note (24 PPQN, 24 Pulses Per Quarter Note), on compte donc 24 messages par seconde si le tempo est de 60 BPM ou 48 messages par seconde si le tempo est de 120 BPM. Quand plusieurs  messages MIDI Clock sont détectés, le temps qui les sépare est analysé puis converti en valeur de tempo (BPM). La mesure de temps peut s'effectuer de plusieurs façons, j'en ai utilisée une adaptée aux périodes "longues" (les fréquences mises en jeu ici sont faibles) et qui consiste simplement à compter le nombre d'impulsions délivrées par un oscillateur (interne au PIC) entre deux messages MIDI Clock. En connaissant la fréquence (et donc la période) de l'oscillateur interne, on peut en déduire la durée correspondant au nombre d'impulsions comptabilisées. Par exemple si la fréquence du compteur interne est de 1 MHz, sa période vaut 1 us. Si on compte 20000 impulsions, cela correspond à une durée de 20 ms entre deux messages MIDI Clock (20000 * 1 us), soit une fréquence de 50 Hz. Il ne reste alors plus qu'à convertir cette fréquence de 50 Hz en valeur de tempo (elle correspond à un tempo légèrement supérieur à 120 BPM).

Affichage numérique du tempo
L'affichage du tempo est réalisé avec 3 afficheurs 7 segments traditionnels à cathode commune en mode multiplexé (détails). La cathode des afficheurs est "activée" via des transistors en collecteur ouvert inclus dans un même boîtier ULN2803, eux-mêmes sont pilotés par le PIC. Si aucun message MIDI Clock n'est reçu pendant au moins 1 seconde, l'indicateur affiche la valeur 000.
Remarques 

Sorties "Tempo"
La sortie Tempo0 du PIC délivre une impulsion de durée 1 ms chaque fois qu'est reçu un message MIDI Clock. La sortie Tempo1 du PIC délivre une impulsion de durée 50 ms chaque fois que se sont écoulés 24 messages MIDI Clock. Ces sorties peuvent être employées pour allumer une simple LED, une LED de puissance via un étage d'amplification de courant ou une lampe 230 V via un optotriac suivi d'un triac (exemple). J'ai profité d'entrées libres sur le ULN2803 (utilisé pour l'affichage numérique) pour dupliquer les sorties tempo sur des transistors en collecteur ouvert (500 mA max).

Entrée et sorties MIDI
L'entrée MIDI IN est traditionnelle, équipée de son optocoupleur (ici un PC900) et de ses quelques composants additionnels résistances et diode. La sortie de l'optocoupleur aboutit directement à l'entrée Rx de l'UART du PIC.
La sortie MIDI THRU duplique les données MIDI entrantes, on y retrouve les mêmes informations, sans traitement ni filtrage. Les composants associés à cette fonction de "sortie directe" (U4, R3, R4 et J3) sont optionnels et peuvent être supprimés au besoin. Notons au passage que les portes logiques non utilisées de U4 pourraient tout-à-fait servir pour ajouter de manière économique deux autres sorties MIDI THRU...
La sortie MIDI OUT correspond à la sortie Tx de l'UART du PIC, elle ne peut donc constituer une véritable sortie MIDI THRU. Elle se résume au câblage d'une prise DIN 5 broches et deux résistances de 220 ohms. A la mise sous tension, le PIC délivre une unique et brève note MIDI La3 (A3) de durée 100 ms et la LED LED1 s'allume brièvement, pour confirmer que le logiciel du PIC démarre bien. Une fois le programme démarré, la sortie MIDI délivre une note MIDI Do1 (C1) de durée 100 ms à chaque "impulsion" de tempo (24 PPQN divisé par 24, soit une note par seconde si le tempo est de 60 BPM).

Sortie sonore
La broche RC2 (libélé "Sound" sur le schéma) délivre une succession d'impulsions propres à produire un son audible. Cette sortie peut être reliée à un petit HP à travers une résistance d'une centaine d'ohm, ou être reliée directement à un transducteur piezo (au repos la sortie est à l'état logique bas). Il va de soi que la puissance de sortie est trop faible pour un usage en environnement sonore élevé, c'est pourquoi il est également prévu une sortie ligne qui pourra être raccordée sur un ampli externe ou sur une entrée ligne de table de mixage (In-Line, Aux, FxReturn, etc).

Oscillateur PIC
L'utilisation d'un quartz externe de 10 MHz est justifié par la présence des entrée et sortie MIDI, ainsi que pour obtenir une bonne précision de mesure du temps entre les messages MIDI Clock.

Alimentation
Un régulateur de tension de +5 V est prévu directement sur le circuit (U101) ce qui permet d'alimenter ce montage avec n'importe quel bloc d'alimentation secteur délivrant une tension comprise entre +9 V et +15 V. La consommation n'est pas très élevée et l'emploi d'un dissipateur thermique pour le régulateur n'est pas justifié. La diode D101 n'est pas indispensable mais vivement conseillée, certains blocs secteurs du commerce permettant d'inverser la polarité de la tension de sortie. Si vous disposez déjà d'une alimentation de +5 V, alors vous pouvez supprimer tous les composants relatifs à cette section, à savoir D101, D102, C101, C102 et bien sûr U101.

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 de la sortie MIDI mais pas au niveau de l'entrée, ce qui nous fait une belle jambe puisqu'il n'y a pas d'entrée MIDI.

Prototype

Cette réalisation date de 2017 mais ce n'est qu'en 2020 que j'ai écrit cet article. Le prototype réalisé sur plaque sans soudure a été refait dans le seul but de placer quelques photos. J'avoue n'avoir pas pu m'empêcher de retoucher un peu au code logiciel existant... pour le "nettoyer" et retirer la partie décimale qui pratiquement ne servait à rien.

indicateur_tempo_004_proto_001a indicateur_tempo_004_proto_001c indicateur_tempo_004_proto_001b

Procédure des tests :
Les valeurs reportées dans le tableau suivant sont celles relevées sur mon prototype. Les valeurs au-delà de 240 BPM ne sont là que pour le fun, bien entendu ;)

Réglage
Tempo
Cubase
(V8.5)
Protools
(V9)
Reaper
(V5.80)
QY70 MidiTest
(V2.9)
30 BPM  29-30 29-30 29-30 30 29-30
60 BPM  59-60 59-60 59-60 60 59-60
120 BPM  119-120 119-120 119-120 120 119-120
150 BPM  149-150 149-150 149-150 150 149-150
180 BPM  179-181 179-180 179-181 180 179-181
240 BPM 239-240239-240237-243240239-240
300 BPM 299-301299-300297-303300299-300
360 BPM -359-360357-366-359-360
480 BPM -479-480473-492-479-480

Remarques sur les résultats observés :
Au fait, qui parmi vous travaille au-delà de 240 BPM avec une synchro MIDI Clock ?

Circuit imprimé

Non réalisé par mes soins.

Logiciel du PIC

[Projet Pro] - Logiciel non disponible.

Historique

19/01/2020
- Première mise à disposition.