Electronique > Réalisations > Interfaces > Interfaces MIDI > Interfaces MIDI 019x [Pro]

Dernière mise à jour : 09/04/2017

Présentation

Ces interfaces MIDI constituent une version évoluée de l'interface MIDI 007 et ont été conçues pour "midifier" des vieux synthés analogiques.

interface_midi_019_pcb_3d_a interface_midi_019b_pcb_3d_a

Elles disposent d'une entrée MIDI et de 32, 64 ou 128 sorties de type TTL. Chaque sortie réagit à une note MIDI, sur une plage ajustable (détail dans le texte descriptif). Quatre interfaces 019x ont été développées sur le même principe :
- Interface MIDI 019 : avec PIC 18F45K22, 64 sorties (non compatible running status)
- Interface MIDI 019b : avec PIC 18F45K22, 128 sorties (compatible running status)
- Interface MIDI 019c : avec PIC 18F46K22, 64 sorties (compatible running status)
- Interface MIDI 019d : avec PIC 18F26K22, 56 sorties (compatible running status)
Le PIC est épaulé par des registres à décalage 74HC595. D'un point de vue fonctionnel, il s'agit en quelque sorte d'une interface Doepfer MTC64 un peu remaniée (mais sans option de gestion des Program Change, que je pourrais bien sûr ajouter si le besoin s'en faisait sentir). Une interface similaire (interface MIDI 020) a été conçue pour midifier un synthé Solina paraphonique.

Schéma (019)

Le coeur du montage est un microcontrôleur PIC 18F45K22 cadencé par un quartz de 8 MHz. Les registres à décalage servent à transformer des états "série" (envoyés par le PIC) en états "parallèle" (sorties TTL).

interface_midi_019

Tous les registres 74HC595 n'ont pas été installés pour l'ensemble de ces interfaces, car il est rare de trouver des claviers avec 128 touches... Les versions qui ont suivi (019b, 019c et 019d) ont été limitées à la gestion de 56 notes (pour claviers 49 touches).

Fonctionnement général
L'interface possède une entrée MIDI et un nombre de sorties TTL multiple de 8 (chaque registre à décalage possède 8 sorties). Quand un événement MIDI de type Note (NoteOn ou NoteOff) se présente à l'entrée, l'interface décode les octets de l'événement et chaque changement d'état (note enfoncée ou relâchée) est enregistré dans une mémoire tampon. Immédiatement après, les sorties des registres (externes au PIC) sont mises à jour pour refléter l'état des notes reçues. Toutes les sorties peuvent être utilisées en même temps, mode "polyphonique intégral" : un buffer circulaire de 1024 octets permet de gérer correctement l'arrivée des notes même si elles arrivent en grand nombre et dans un temps court (rappelons au passage que chaque note MIDI - on ou off - est composée de trois octets).

Horloge / base de temps
Pour des questions de stabilité en fréquence, l'horloge interne du PIC n'est pas utilisée. Les lignes RA7/OSC1 et RA6/OSC2 du PIC sont monopolisées pour y connecter un quartz de 8 MHz avec deux condensateurs céramiques de faible valeur (22 pF / 63 V). La PLL x4 du PIC est activée et le logiciel tourne donc à 32 MHz (4 x 8 MHz).

Entrée MIDI
L'entrée MIDI est composée de l'optocoupleur U2 raccordé sur la prise DIN 5 broche J1, via une résistance de limitation de courant (R1) et une diode (D1) qui protège l'optocoupleur en cas d'inversion de polarité des lignes d'entrée de la prise DIN (broches 4 et 5). La sortie de l'optocoupleur permet de récupérer le signal MIDI au format TTL, grâce à la présence de la résistance de charge R2 raccordée au +5 V.

interface_midi_019d_graphe_001a
Un évènement NoteOn parmi d'autres...

Les données MIDI mises en forme aboutissent à l'entrée RC7/RX1 du PIC et sont traitées par l'UART intégré dans ce dernier.
Le traitement des notes MIDI reçues dépend de l'état de la broche RB3 du PIC :
La LED LED1 s'allume (clignote) lors de la réception des données MIDI. La LED LED2 s'allume quand au moins une note est en cours de jeu (NoteOn), elle ne s'éteind qu'après réception du ou des événements NoteOff correspondants. Toutes les sorties TTL sont désactivées si l'interface reçoit un message de "Mode canal" de valeur comprise entre 123 et 127 (All Notes Off).

Conversion MIDI vers sorties TTL
Chaque sortie TTL s'active sur réception de la note MIDI correspondante : NoteOn = activation de la sortie correspondante et NoteOff = désactivation. Comme la norme MIDI prévoit 128 notes et que le clavier qu'on veut midifier en possède généralement moins (par exemple 49 notes), il serait ridicule de disposer de 128 sorties et d'en exploiter moins de la moitié. C'est pourquoi cette interface est dotée d'une configuration qui permet de définir la première note qui correspond à la première sortie (Out0 sur le schéma). Les interrupteurs raccordés sur les lignes RD4 à RD7 du PIC permettent de spécifier à partir de quelle note MIDI l'interface commence à réagir, voir tableau qui suit.

RD7 RD6 RD5 RD4 Première note traitée
0 0 0 0 C-2
0 0 0 1 F-2
0 0 1 0 C-1
0 0 1 1 F-1
0 1 0 0 C0
0 1 0 1 F0
0 1 1 0 C1
0 1 1 1 F1
1 0 0 0 C2
1 0 0 1 F2
1 0 1 0 C3
1 0 1 1 F3
1 1 0 0 C4
1 1 0 1 F4
1 1 1 0 C5
1 1 1 1 F5

Exemple : on veut disposer de 56 sorties avec la première sortie activée sur la note C2, la deuxième sortie activée sur C#2, la troisième sortie sur D2, etc. Pour ce faire, il faut mettre l'entrée RD7 à 1 (inter fermé) tandis que les entrées RD6, RD5, RD4 doivent être à 0 (inters ouverts). Bien sûr les interrrupteurs de configuration peuvent être remplacés par de simples straps ou ponts de soudure.

Temps de transit et temps de traitement
Les données MIDI arrivent dans le PIC, qui les traite au fil de l'eau pour détecter la présence de notes. A chaque changement d'état d'une note (enfoncement ou relâchement d'une touche du clavier synthé), toutes les sorties sont mises à jour, même si un seul évenement Note a été reçu. Les sorties sont en effet adressées sous une forme série/parallèle, on n'a donc pas le choix. Le graphe qui suit montre que 12 notes sont activées en même temps.

interface_midi_019d_graphe_001d

A partir du moment où une note MIDI a été réceptionnée (3 octets), la sortie correspondante est mise à jour au bout de 360 us (0,36 ms). Cette valeur qui est très faible est la pire qu'on puisse avoir, elle correspond à l'utilisation de 128 sorties (première note traitée = C-2). On peut la comparer au temps nécessaire pour transférer les trois octets de la note MIDI dans le câble MIDI, qui lui-même avoisine la milliseconde...

Interface(s) de sortie
Dans le contexte présent, les sorties de type TTL (sorties des registres à décalage) sont utilisées pour piloter des interrupteurs analogiques. Mais toute autre circuiterie peut bien sûr être envisagée (commande de relais, moteurs ou lampes par exemple).

Sortie MIDI
Le schéma fait apparaitre une sortie MIDI, cette sortie est facultative. Au démarrage du système, elle sortie délivre une note MIDI brève (Do3) qui permet de s'assurer que le PIC démarre bien et qu'il tourne à la bonne vitesse. Si cette sortie n'est pas souhaitée, il suffit de ne pas la câbler et de ne pas implanter les deux résistances R4 et R5 (associées au connecteur J2).

Alimentation
Une source de tension de 5 V est nécessaire pour faire fonctionner cette interface. N'importe quel bloc secteur standard 5 V convient, vous pouvez aussi utiliser une source de tension plus élevée suivie d'un régulateur de tension +5 V (par exemple LM7805). Pour ce qui est de la puissance (ou courant max de sortie du bloc alim), cela dépend bien sûr des périphériques qui seront raccordés aux registres à décalage.

Schémas 019b, 019c et 019d

De la même veine que le schéma 019.

interface_midi_019b

interface_midi_019c

interface_midi_019d

Côté interfaçage avec les registres à décalage, même circuit que dans le schéma 019.

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.

Prototype

Interface proto (001) réalisée et testée avec ma platine EasyPic7 et mon clavier maître Roland D50. Testé ensuite réalisés avec la carte finale (proto 002).

interface_midi_019d_proto_002a interface_midi_019d_graphe_002a interface_midi_019d_graphe_002b

L'ensemble des tests a été mené avec mon clavier D50 et mon logiciel MidiTest, ce dernier permettant d'envoyer des NoteOn non suivis de NoteOff (pas besoin de laisser le doigt appuyé sur une touche pendant les vérifications de l'état des sorties).

Logiciel du PIC

Demandes Pro, logiciels non disponibles en libre service.

Circuit imprimé

Non réalisé par mes soins. Les deux vues 3D en début de page montrent deux versions différentes, une pour 64 sorties TTL (version 019) et une pour 128 sorties TTL (version 019b).

Historique

09/04/2017
- Ajout interface 019d avec PIC 18F26K22, compatible "running status".
25/10/2015
- Première mise à disposition (interfaces 019, 019b et 019c).