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

Dernière mise à jour : 25/10/2015

Présentation

Cette interface MIDI est une version évoluée de l'interface MIDI 007 et a été conçue pour "midifier" des vieux synthés analogiques.

interface_midi_019_pcb_3d_a interface_midi_019b_pcb_3d_a

Elle dispose 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). L'interface est construite autour d'un PIC 18F45K22 auquel sont associés 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 l'option de la 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

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

En acceptant un nombre plus réduit d'éléments de configuration (détails plus loin), le PIC18F45K22 (boîtier 40 broches) pourrait parfaitement être remplacé par un 18F25K22 (boîtier 28 broches).

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. 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. 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.

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 réalisée et testée avec ma platine EasyPic7 et mon clavier maître Roland D50.

Logiciel du PIC

Demande Pro, logiciel non disponible en libre service.
Interface MIDI 019 - PIC 18F45K22 - 25/10/2015

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

25/10/2015
- Première mise à disposition.