Electronique > Réalisations > Interfaces > Interfaces MIDI > Interface MIDI 015

Dernière mise à jour : 08/12/2013

Présentation

Cette interface MIDI dispose d'une entrée MIDI IN, de 8 entrées logiques et de deux sorties MIDI OUT.

interface_midi_015_pcb_3d_a

Elle permet de transformer en temps réel un événement MIDI de type NoteOn en d'autres événements NoteOn, Control Change ou Program Change, ou de déclencher des événements NoteOn, Control Change ou Program Change via les entrées logiques. Par exemple, cette interface peut, lors de la réception de NoteOn, émettre des événements NoteOn sur la première sortie MIDI, et émettre des Program Change et Control Change sur la seconde sortie MIDI. Jusqu'à seize évenements (notes MIDI ou activations logiques) peuvent être traités individuellement, chaque événement d'entrée peut provoquer 2 événements sur chacune des deux sorties MIDI.

Schéma

Le coeur du montage est un microcontrôleur PIC 18F45K22 cadencé par un quartz de 16 MHz. 

interface_midi_015

Fonctionnement général
Les données MIDI qui arrivent à la queue-leu-leu sur l'entrée MIDI IN sont analysées octet par octet. S'il s'agit d'un évenement de type NoteOn "attendu" par l'interface (16 notes peuvent être reconnues comme élement attendu), alors un ou plusieurs événements MIDI sont délivrés, le type d'événement dépend de la programmation établie par l'utilisateur (ou figée en dur dans le code et non modifiable). L'envoi des événements MIDI (NoteOn, Program Change ou Control Change) peut également être provoqué par la pression sur les boutons-poussoirs BP1 à BP8. Si le bouton SHIFT est  relâché (ligne RE0 du PIC à l'état bas), les notes envoyées correspondent aux évenements #1 à #8. Si le bouton SHIFT est enfoncé (ligne RE0 à l'état haut), les notes envoyées correspondent aux évenements #9 à #16.

Circuit d'horloge / base de temps
Les lignes RA7/OSC1 et RA6/OSC2 du PIC sont monopolisées pour y connecter un quartz de 16 MHz avec deux condensateurs céramiques de faible valeur (22 pF / 63 V). Hors de question ici d'utiliser l'horloge interne, le fonctionnement pourrait être aléatoire dans des conditions d'utilisation extrêmes (température ambiante élevée).

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) protégeant l'optocoupleur en cas d'inversion des deux fils 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 collecteur R2 reliée au +5 V. Les données MIDI mises en forme aboutissent à l'entrée RC7/RX1 du PIC. L'entrée RX2 du second UART du PIC n'est pas utilisée, mais elle pourrait l'être pour une fonction à laquelle je ne pense pas en ce moment. Quand des événements MIDI (notes ou autres) arrivent sur l'entrée RX1, la LED Rx s'allume brièvement.

Sorties MIDI
Les deux sorties MIDI (broches RC6/TX1 et RD6/TX2 du PIC) délivrent brièvement une note MIDI C3 (Do3) lors de l'initialisation du circuit, ce qui permet à la mise sous tension de vérifier que tout démarre bien. Après l'initialisation, les sorties MIDI délivrent les infos MIDI seulement quand on les sollicite (via entrée MIDI ou boutons-poussoirs). Quand les sorties MIDI envoient des événements suite à pression sur les boutons poussoirs, la LED Rx s'allume brièvement (je sais, ce n'est pas très logique dans ce cas d'appeler cette LED Rx).

Programmation
Deux versions du programme existent :
- une version avec événements MIDI fixes codés en dur (aucune configuration possible par l'utilisateur après programmation du PIC);
- une version configurable par l'utilisateur.
Pour la version configurable, on peut utiliser un clavier MIDI ou un séquenceur MIDI, il suffit de respecter la procédure suivante :
1 - Soumettre l'entrée Prog (RE2) à l'état logique haut pour passer en mode Programmation.
2 - Appuyer sur le bouton-poussoir (BP1 à BP8) qui correspond à l'évenement qu'on souhaite configurer (BP1 pour Note #1 par exemple). Pour configurer les évenements Note #9 à #16, laisser le bouton SHIFT enfoncé pendant l'appui sur BP1 à BP8.
3 - Envoyer sur l'entrée MIDI IN de l'interface, la note MIDI qui correspond à la note à analyser (à reconnaître).
4 - Envoyer sur l'entrée MIDI IN de l'interface, le premier événement MIDI qui devra être envoyé sur la sortie MIDI OUT 1 sur réception de l'événement NoteOn attendu (NoteOn, Program CHange ou Control Change).
5 - Envoyer sur l'entrée MIDI IN de l'interface, le second événement MIDI qui devra être envoyé sur la sortie MIDI OUT 1 sur réception de l'événement NoteOn attendu. Pour désactiver cet événement, envoyer un message Sysex "vide" $F0 $00 $F7.
6 - Envoyer sur l'entrée MIDI IN de l'interface, le premier événement MIDI qui devra être envoyé sur la sortie MIDI OUT 1 lors de l'appui sur le bouton poussoir SW1. Pour désactiver cet événement, envoyer un message Sysex "vide" $F0 $00 $F7.
7 - Envoyer sur l'entrée MIDI IN de l'interface, le second événement MIDI qui devra être envoyé sur la sortie MIDI OUT 1 lors de l'appui sur le bouton poussoir SW1. Pour désactiver cet événement, envoyer un message Sysex "vide" $F0 $00 $F7.
8 - Envoyer sur l'entrée MIDI IN de l'interface, le premier événement MIDI qui devra être envoyé sur la sortie MIDI OUT 2 sur réception de l'événement NoteOn attendu. Pour désactiver cet événement, envoyer un message Sysex "vide" $F0 $00 $F7.
9 - Envoyer sur l'entrée MIDI IN de l'interface, le second événement MIDI qui devra être envoyé sur la sortie MIDI OUT 2 sur réception de l'événement NoteOn attendu. Pour désactiver cet événement, envoyer un message Sysex "vide" $F0 $00 $F7.
10 - Envoyer sur l'entrée MIDI IN de l'interface, le premier événement MIDI qui devra être envoyé sur la sortie MIDI OUT 2 lors de l'appui sur le bouton poussoir (BP1 à BP8). Pour désactiver cet événement, envoyer un message Sysex "vide" $F0 $00 $F7.
11 - Envoyer sur l'entrée MIDI IN de l'interface, le second événement MIDI qui devra être envoyé sur la sortie MIDI OUT 2 lors de l'appui sur le bouton poussoir (BP1 à BP8). Pour désactiver cet événement, envoyer un message Sysex "vide" $F0 $00 $F7.
Répéter l'opération pour chaque évenement (#1 à #16) à configurer.

Alimentation
Un régulateur de tension de +5 V est prévu directement sur le circuit (U3), ce qui permet d'alimenter cette interface / filtre avec n'importe quel bloc d'alimentation secteur délivrant une tension comprise entre +9 V et +15 V. La consommation est assez faible pour se permettre d'utiliser un régulateur de tension "miniature" de type LM78L05 (100 mA max), et ce dernier n'a pas besoin de dissipateur thermique.

Exemples d'utilisation et montages dérivés

Cette interface peut jouer plusieurs rôles, mais pour l'instant elle n'en joue qu'un.

Pédalier de commande (gestion depuis scène)
Grâce aux interrupteurs de commande reliés sur les entrées logiques (boutons-poussoirs de tableau ou au pied), des commandes MIDI (NoteOn, Program Change ou Control Change) peuvent être envoyées à deux appareils distincts (par exemple un séquenceur, instrument ou effet piloté par MIDI d'un côté, et une console DMX dotée d'une gestion MIDI de l'autre).

Montages dérivés
Cette interface a servi de base pour une autre réalisation :
Interface MIDI 015za - 1 entrée / 1 sortie MIDI, envoi de Program Change avec fonction Live/Search

Transposition
Pas prévu à l'origine, la fonction de transposition de notes ou de canal MIDI est tout à fait possible.

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 avec mon logiciel de test MidiTest.

interface_midi_015_proto_001a interface_midi_015_proto_001b interface_midi_015_proto_001_soft_001a

Ne disposant que d'une seule prise DIN de sortie physique, j'ai effectué mes tests et vérifications en commençant par la sortie MIDI OUT 1 (sur le port C du PIC), puis en continuant avec la sortie MIDI OUT 2 (sur le port D). La photo sur fond rouge qui précède montre les deux circuits d'extension posés côte à côte sur les connecteurs 10 points des ports C et D. Les câbles volants font un peu fouilli, mais ça fonctionne très bien.

Logiciel du PIC

Deux versions créées :
- une avec événements MIDI fixes codés en dur (aucune configuration possible par l'utilisateur après programmation du PIC);
- une configurable par l'utilisateur (me contacter pour les détails).
Seul le fichier binaire compilé (*.hex) de la version "libre de droits" est disponible et transmis aux demandeurs. 
Interface MIDI 015 - PIC 18F45K22 - 08/12/2013 - Non disponible sur ce site
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é.

Historique

08/12/2013
- Première mise à disposition.