Electronique > Réalisations > Interfaces > Norme MIDI > Interfaces MIDI

Dernière mise à jour : 20/05/2018

Interfaces réalisées ou en cours de développement

Quelques interfaces MIDI à base de composants traditionnels ou à base de microcontrôleur.
MIDI Merger 001 - Version "non intelligente", sans composant programmable.
MIDI Merger 002 - Version "non intelligente" et toujours sans composant programmable, mais améliorée par rapport à la version 001.
MIDI Merger 003 - Version "intelligente", 2 entrées et deux sorties, avec PIC 18F46K22.
MIDI Splitter 001 - Configurable pour notes et autres événements MIDI, A base de PIC 18F46K22.
Distributeur MIDI 001 - 1 entrée MIDI, 4 sorties MIDI (MIDI Thru).
Distributeur MIDI 001d - 1 entrée MIDI, 16 sorties MIDI (MIDI Thru).
Interface MIDI 001 - Une prise MIDI IN, deux prises MIDI OUT et une prise MIDI THRU, sur un port joystick.
Interface MIDI 002a - Envoi de notes MIDI lors d'activation de boutons poussoir - 10 entrées logiques, 1 sortie MIDI OUT.
Interface MIDI 002b - Commandes logiques sur réception de notes MIDI - 1 entrée MIDI IN, 8 sorties logiques.
Interface MIDI 003 - 8 entrées analogiques, 64 entrées logiques, 1 sortie MIDI OUT, 1 entrée MIDI IN pour la configuration. Non fini
Interface MIDI 004 - 32 entrées logiques, 1 sortie MIDI OUT, 1 entrée MIDI IN pour la configuration. Non fini.
Interface MIDI 005a - 2 entrées logiques START / STOP, 1 sortie MIDI OUT.
Interface MIDI 005b - 1 entrée MIDI IN, sorties logiques START / STOP sur commandes MMC et RT.
Interface MIDI 006 - Générateur MIDI Note On / Off ou Control Change, 4 entrées logiques, 1 sortie MIDI OUT.
Interface MIDI 007 - Commandes logiques sur réception de notes MIDI - 1 entrée MIDI IN, 128 sorties logiques.
Interface MIDI 008 - Filtre MIDI pour supprimer les messages de type Active Sensing - 1 entrée MIDI IN, 1 sortie MIDI OUT.
Interface MIDI 009 - Convertisseur Note/CC pour pilotage jeux lumière DMX - 1 entrée MIDI IN, 1 sortie MIDI OUT.
Interface MIDI 010 - Commande de huit potentiomètres numériques MCP41xxx via notes MIDI, à base de PIC 16F628A.
Interface MIDI 011 - Interface simple développée comme extension pour ma platine de développement PIC EasyPIC.
Interface MIDI 012 - Conversion de messages MIDI Sync (MIDI Timing Clock) en impulsions logiques TTL, à base de PIC 16F628A.
Interface MIDI 013 - Diviseur de messages MIDI Sync (MIDI Timing Clock) de MIDI en MIDI, à base de PIC 16F628A.
Interface MIDI 014 - Correcteur de courbe de velocité en temps réel, à base de PIC 16F628A.
Interface MIDI 015 - Interface 16 canaux, 1 entrée MIDI, 8 entrées logiques, 2 sorties MIDI , à base de PIC 18F45K22.
Interface MIDI 015za - 1 entrée / 1 sortie MIDI, envoi de Program Change avec fonction Live/Search.
Interface MIDI 016 - Interface 8 entrées audio, 1 sortie MIDI, à base de PIC 18F45K22. Non fini.
Interface MIDI 017 - Convertisseur MIDI to CV-Gate, 1 entrée MIDI, 1 sortie en tension et 1 sortie Trigger, à base de PIC 16F628A.
Interface MIDI 018 - 1 entrée MIDI et 24 sorties TTL, à base de PIC 18F45K22.
Interface MIDI 019 - 1 entrée MIDI et 128 sorties TTL, à base de PIC 18F45K22 et registres à décalage 74HC595.
Interface MIDI 020 - 1 entrée MIDI et interface de sortie pour synthé Solina 49 touches, à base de PIC 18F25K22.
Interface MIDI 021 - Interface 64 entrées "percussions" avec gestion vélocité, 1 sortie MIDI, à base de PIC 24F32GA002.
Interface MIDI 022 - Interface pour console Cinemix DR couplée à Protools, à base de PIC 18F46K22.
Interface MIDI 023 - Interface de réglage volume audio niveau ligne depuis des commandes MIDI. Isolation galvanique totale.
Interface MIDI 024 - Interface MIDI avec commande hauteur et volume via tensions analogiques, à base de PIC 18F46K22. En cours.
Interface MIDI 025 - Interface 128 voies pour automatisation piano acoustique ou accordéon.
Interface MIDI 026 - Interface MIDI pour pilotage moteurs pas-à-pas, à base de PIC 18F46K22.
Contrôleur MIDI 001 - 7 entrées analogiques, 1 sortie MIDI OUT, 1 entrée MIDI IN pour la configuration.
Contrôleur MIDI 002 - 16 entrées logiques, 1 sortie MIDI OUT, 1 entrée MIDI IN pour la configuration.
Contrôleur MIDI 003 - 128 boutons-poussoirs, 1 sortie MIDI OUT, génération de notes MIDI, avec PIC 16F628A.
Contrôleur MIDI 003c - 128 entrées avec capteurs à effet Hall, 1 sortie MIDI OUT, notes et accords MIDI, avec PIC 18F46K22.
Contrôleur MIDI 004 - 1 sortie MIDI OUT, génération de messages MMC, avec PIC 16F628A.
Contrôleur MIDI 004za - 1 sortie MIDI OUT, génération de messages MMC, avec PIC 16F628A.
Contrôleur MIDI 005 - 1 sortie MIDI OUT, génération soutenue d'événements MIDI pour tests d'interfaces, avec PIC 16F628A.
Contrôleur MIDI 006 - 1 sortie MIDI OUT, envoi de Programm Change, pour usage scène, avec PIC 18F45K22.
Contrôleur MIDI 007 - Sortie USB/MIDI, à base de PIC 18F4550. Non fini.
Contrôleur MIDI 008 - 96 (ou 128) entrées numériques, 16 entrées analogiques, avec PIC 18F47J13.
Contrôleur MIDI 008b - 88 commandes numériques, 16 entrées analogiques, avec PIC 18F46K22.
Contrôleur MIDI 009 - 4 encodeurs optiques, 1 sortie MIDI, avec PIC 24F16KA102
Contrôleur MIDI 010 - 48 à 120 notes avec gestion vélocité, 1 sortie MIDI, avec PIC 18F46K22 ou PIC 32MX575F512H. En cours.
Contrôleur MIDI 011 - 64 entrées numériques pour instrument sans matriçage, 1 sortie MIDI, avec PIC 18F45K22.
Indicateur tempo MIDI 002 - A base de PIC 16F628A, avec LDR pour synchro sur "LED tempo".
Indicateur tempo MIDI 003 - Avec PIC 18F25K22, extraction BPM sur entrée audio ligne, avec affichage numérique et maintien tempo.
MIDI DevBoard2i2o 001 - Platine de développement MIDI 2E/2S, à base de PIC 18F46K22.

Brochage des prises MIDI

Le genre de question qu'on se pose dès qu'on n'a pas bidouillé depuis un certain temps avec les fameuses prises...

midi_din_cablage_001

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.

Principe général des liaisons MIDI

Les liaisons MIDI sont des liaisons de type série : on y transmet des informations binaires - informatiques - sur un "fil" unique. Afin d'éviter tout rebouclage de masse entre deux équipements reliés d'une part par un cable audio et d'autre part par un câble MIDI, ce dernier est branché sur une interface électriquement isolée du reste de la circuiterie de l'équipement. Cette isolation s'effectue grace à un opto-coupleur, qui est un composant qui intègre une led et un "interrupteur électronique" (photo-transistor par exemple) qui se ferme en présence de lumière. Les données MIDI transmises par un câble MIDI sont bien électriques (on n'utilise pas de la fibre optique), mais une barrière optique est mise en oeuvre à l'arrivée (prise MIDI IN), dans l'équipement récepteur. Ce type d'isolation optique n'existe pas du côté de l'émetteur (prise MIDI OUT), cela n'étant nullement nécessaire de le faire aux deux bouts. Pour ce qui est de la norme de transmission, merci de vous reporter à la page Norme MIDI.

Construire soi-même une interface MIDI

Cela n'est pas compliqué du tout d'un point de vue matériel, cela peut l'être un peu plus côté logiciel, puisqu'un minimum de connaissances de la norme MIDI doit être intégrée et comprise (ceci dit, elle n'est guère complexe à comprendre). Cette connaissance n'est pas du tout requise si on veut construire un distributeur MIDI, lequel ne touche absolument pas aux informations transmises (exemple). Si par contre un traitement informatique est voulu (filtrage ou action sur réception de certains évenements par exemple), il faut savoir de quoi il en retourne et se taper la norme (exemple). Dans tous les cas, il faut s'adapter à la norme électrique pour tout ce qui touche au matériel, à savoir :
- Côté émission : délivrance de signaux logiques à la norme TTL (0 V et +5 V).
- Côté réception : mise en oeuvre d'une isolation galvanique avec un opto-coupleur.
En procédant ainsi, les deux équipements émetteur et récepteur sont totalement isolés l'un de l'autre d'un point de vue électrique, en ce qui concerne la liaison MIDI tout du moins.

interfaces_midi_out_001a interfaces_midi_in_001a

- MIDI OUT - Broche 2 = Masse
- MIDI OUT - Broche 4 = +5 V (via résistance 220 ohms)
- MIDI OUT - Broche 5 = Sortie données (via résistance 220 ohms)
- MIDI THRU - Broche 2 = Masse
- MIDI THRU - Broche 4 = +5 V (via résistance 220 ohms)
- MIDI THRU - Broche 5 = Sortie données (via résistance 220 ohms)
- MIDI IN - Broche 2 = non reliée
- MIDI IN - Broche 4 = Anode optocoupleur d'entrée (via résistance 220 ohms)
- MIDI IN - Broche 5 = Cathode optocoupleur d'entrée

Remarque : en sortie de l'optocoupleur présent sur le récepteur MIDI, l'état logique de repos correspond à l'état logique haut (+5 V) et le niveau logique actif correspond à l'état logique bas (0 V). Si le signal appliqué sur la broche 5 de la prise MIDI OUT est à l'état bas (actif, envoi de données), la LED de l'opto-coupleur du récepteur s'allume, ce qui fait conduire l'élement photo-sensible qui lui est associé, et on retrouve donc un signal logique bas en sortie de l'opto-coupleur. Le microcontrôleur (ou autre circuit logique) qui fait suite (dont l'entrée se trouve connectée à la sortie de l'optocoupleur) se retrouve donc toujours avec un état haut (+5 V) au repos.

Choix de l'opto-coupleur pour l'entrée MIDI IN

Quand on cherche sur le net, on trouve plein d'interfaces MIDI, et l'opto-coupleur placé à l'entrée MIDI IN n'est pas toujours le même. Et quand on retrouve le même dans deux schémas différents, ce n'est pas forcement avec les mêmes composants alentours. Il existe plusieurs types d'opto-coupleurs et tous ne conviennent pas pour transmettre les données MIDI, tout simplement parce qu'ils ne sont pas assez rapides. Les données MIDI étant transmises à une vitesse de 31,250 Kbauds (31,25 kHz maxi) avec des durées d'élements de base (bits) de 32 us, il faut que l'optocoupleur accèpte de travailler au moins trois ou quatre fois plus vite, c'est à dire au moins à 100 kHz ou autrement dit présenter des temps de transition qui ne dépassent pas 10 us. Si l'opto-coupleur est mal choisi, les données peuvent être complètement massacrées et inexploitable, ou pire passer de temps en temps seulement (rien de pire qu'un problème intermittant). Il est très important que les données MIDI en sortie de l'opto-coupleur soient "propres", avec une amplitude correcte et avec des fronts montants et descendants les plus raides possibles. Possédant dans mon stock de composants plusieurs types d'opto-coupleurs, je me suis un peu penché sur la question.

Méthodologie des tests
Un bien grand mot juste pour dire comment j'ai fait ;-) Dans un premier temps, j'ai regardé ce que j'avais comme opto-coupleurs, j'ai noté leur référence et ai cherché de la doc technique à leur sujet (Datasheet). Les fabricants donnent en effet très souvent quelques exemples d'applications pratiques, fort utiles pour démarrer. J'ai donc fait des tests avec les valeurs par défaut, et j'ai regardé ce qui se passait quand je m'éloignais des valeurs préconisées. Deux types de contrôle pour cela :
- un contrôle de "bonne transmission" avec un opto-coupleur directement relié à un transmetteur TTL (logiciel MIDI-Test pour générer manuellement des évenements de type NoteOn, et réception des notes "traitées" sur mon PC équipé de Cubase, via interface MIDI intégrée à mon interface audio RME Fireface 800).
- un contrôle de la forme des signaux numériques en sortie de l'opto-coupleur (logiciel MIDI-Test pour générer automatiquement - et rapidement - des évenements de type NoteOn, et visualisation des notes sur mon oscilloscope numérique de poche).
Petite interface MIDI In/Out utilisée pour mes diverses réalisations (interface MIDI 011) :

interface_midi_011_proto_001a interface_midi_011_proto_001c

Types d'opto-coupleurs
Les opto-coupleurs que l'on peut utiliser pour une entrée MIDI peuvent être de type "6 pattes" ou "8 pattes", deux types de boitiers dont le brochage est apparement standardisé.

Exemple de câblage avec boitier "6 broches"

interfaces_midi_opto_in_001a
Interface d'entrée MIDI avec CNY17-2

Autre exemple de câblage avec boîtier optocoupleur à "6 broches"

interfaces_midi_opto_in_003a
Interface d'entrée MIDI avec PC900 (Sharp)

Exemple de câblage avec boitier "8 broches"

interfaces_midi_opto_in_002a
Interface d'entrée MIDI avec 6N137

D'autres auteurs ont aussi utilisés avec succès les modèles listés ci-dessous, avec les deux impératifs suivants :
- adapter le câblage en conséquence (tous les optocoupleurs n'ont pas le même brochage)
- modifier la valeur de la résistance de charge en sortie de l'optocoupleur (R2 sur les schémas ci-avant).
- pour les opto-coupleurs à 8 pattes, modifier la valeur de la résistance de polarisation (R3 sur le schéma ci-avant), quand elle existe.

Montages utilisés pour les tests
Les deux montages suivants (un pour opto-coupleurs 6 pattes et un pour opto-coupleurs 8 pattes), basés sur les deux précédents, m'ont permis de déterminer les meilleurs valeurs à donner aux résistances de charge (R2) et de polarisation (R3, quand cette dernière existe). Pour cela, j'ai remplacé les deux résistances par un couple résistance + potentiomètre, la résistance R3 (avec son potentiomètre) pouvant même être totalement déconnectée via un interrupteur en série. Donc :
- à la place de R2 seule, R2 + RV1
- à la place de R3 seule, R3 + RV2

interfaces_midi_tests_001a

Pour chaque opto-coupleur testé, envoi en continu de données MIDI sur l'entrée MIDI IN (avec le logiciel MIDI-Test), et mesure de l'amplitude du signal numérique en sortie de l'optocoupleur sur l'écran de mon oscilloscope, pendant ajustage du ou des potentiomètres (RV1 et RV2). En même temps, analyse de la "forme" des signaux.

Valeurs relevées sur divers schémas, et tests
Pour l'instant, j'ai eu l'occasion de tester les CNY17-2, les TIL111, les MCT2, les 4N33, les 6N139 et les 6N137. J'ai pû obtenir des formes de signaux plus "propres" (en sortie des opto-coupleurs) avec des câbles de grande longueur (en entrée), en utilisant les CNY17-2 et 6N137. Des ajustements ont été nécessaires pour le 6N137, les valeurs indiquées sont celles qui m'ont données satisfaction. La vitesse à laquelle l'opto-coupleur accepte de travailler dépend étroitement du courant qui circule dans la LED côté émetteur et dans le courant collecteur du transistor de sortie quand bien sûr il s'agit d'un transistor. Plus ces courants sont élevés et plus la vitesse est sensée pouvoir grimper haut. Côté LED on ne fait rien de particulier puisqu'on se contente d'utiliser la résistance de limitation de courant standard de 220 ohms. Côté sortie opto en revanche, on est plus libre de faire les tests qu'on veut. Le tableau qui suit résume les valeurs couramment rencontrées dans les divers schémas, j'ai noté en vert les valeurs que j'ai testées et qui m'ont donné les meilleurs résultats.

Optocoupleur
Boitier Vitesse Résistance de charge R2
Résistance polarisation R3
6N135
8 broches - 3,3 kO
Aucune résistance
6N136
8 broches - 3,3 kO
-
6N137
8 broches 1 us 270 à 820 (270)
5,6 kO (5,6 kO)
6N138
8 broches 40 us 270 à 4,7 kO (470)
1 kO à 5,6 kO (ou aucune résistance)
6N139
8 broches 4 us 270 à 3,3 kO (270)
Aucune résistance
TIL111
6 broches 2 us 1 kO
< sans objet >
TIL112
-
- 680 à 820
-
4N26
-
300 kHz 1 kO -
4N27
-
300 kHz 1 kO -
4N28
8 broches - 1 kO Aucune résistance
4N33
-
30 kHz 1 kO -
4N35
-
150 kHz 820
-
4N36
-
15 kHz 820
-
CNX35 6 broches 2 us - -
CNX36
6 broches
2 us 820
-
CNY17-2
6 broches 5 us 1 kO à 4,7 kO (1,2 kO)
< sans objet >
CNY80
-
- 820
-
PC900
-
- 220 à 4,7 kO
-
MCT2 6 broches 150 kHz - -
MCT4 6 broches 300 kHz - -
MCT6 8 broches 150 kHz - -
SL5500 6 broches 100 kHz 1 kO -

Sans grande surprise, on constate une perte de données MIDI quand les signaux numériques en sortie de l'opto-coupleur ne sont plus "aux normes", c'est à dire quand le niveau haut s'éloigne trop de la valeur +5 V, et quand le niveau bas s'éloigne trop de la valeur 0 V. Mais les constats faits ici ne sont pas forcement tout à fait représentatifs du comportement des instruments que vous avez chez vous, tout dépendant évidement du type d'opto-coupleurs qu'ils intègrent et de la façon dont ils sont mis en oeuvre...

Ajout d'une interface MIDI à un appareil audio, musical ou autre

Il existe nombre d'instruments ou périphériques audio qui ne sont dotés d'aucune interface MIDI, et qu'on aimerait pouvoir piloter en MIDI. Pour ce faire, il est parfois possible d'ajouter à l'appareil en question, une inteface MIDI qui permet de le télécommander ou configurer de manière automatique. Une interface MIDI, dans cette optique, pourrait par exemple assurer une commutation on/off d'un paramètre d'effet, ou ajuster un niveau ou réglage d'effet. Une telle interface requiert un microcontrôleur (PIC ou autre) doté d'un module UART (laison série traditionnelle).

Ouvrage de référence MIDI qui m'a bien servi

Un livre pas très épais mais vraiment très bien écrit.

interfaces_midi_livre_midi_pratique
Le MIDI pratique - Jean-Paul Verpaux

Il ne donne pas beaucoup d'exemples pratiques au niveau des optocoupleurs, mais décrit de façon fort détaillée et très claire comment sont constitués les messages MIDI. Je ne sais pas si ce livre est encore disponible à la vente.