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

Dernière mise à jour : 27/03/2011

Présentation

Cette interface MIDI dispose d'une entrée MIDI IN et d'une sortie MIDI OUT.

interface_midi_008_pcb_3d_a

Elle se comporte comme un filtre dédié aux messages de type Active Sensing, émis toutes les 300 ms par certains instruments de musiques électroniques (notament claviers assez anciens). Le retard introduit par ce filtre (temps de transit entre entrée MIDI IN et sortie MIDI OUT) est inférieur à 0,5 ms.

Schéma

Le coeur du montage est un microcontrôleur PIC 16F628A dont le logiciel ne fait rien d'autre que d'attendre l'arrivée d'évenements MIDI sur l'entrée MIDI IN. Une alimentation +5 V est requise pour faire fonctionner l'ensemble.

interface_midi_008

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.
- si l'octet reçu est $FE, le logiciel regarde l'état de la ligne RA0 du PIC qui dépend de la position du cavalier JP1. Si ce cavalier est en position "gauche" (RA0 = 0), alors l'octet $FE reçu n'est pas filtré et ressort sur la sortie MIDI OUT. Si le cavalier JP1 est en position "droite" (RA0 = 1), alors l'octet $FE est filtré et il ne ressort pas sur la sortie MIDI OUT.
- si l'octet reçu est $FF, le logiciel regarde l'état de la ligne RA1 du PIC qui dépend de la position du cavalier JP2. Si ce cavalier est en position "gauche" (RA1 = 0), alors l'octet $FF reçu n'est pas filtré et ressort sur la sortie MIDI OUT. Si le cavalier JP2 est en position "droite" (RA1 = 1), alors l'octet $FF est filtré et il ne ressort pas sur la sortie MIDI OUT.
- Tous les octets différents de $FE et $FF sont directement transmis de la sortie MIDI IN à la sortie MIDI OUT.
Remarques :
- Si vous savez d'avance que les octets $FE et/ou $FF devront toujours être filtrés, les cavaliers JP1 et/ou JP2 peuvent être remplacés par des liaisons définitives. Dans tous les cas les entrées RA0 et RA1 du PIC ne doivent pas rester en l'air et doivent être connectées soit à la masse soit au +5 V.
- Le message active sensing est normalement signifié par un octet de valeur $FE. J'ai cependant lu sur Internet qu'un musicien avait un synthé Roland qui envoyait un octet de valeur $FF toutes les 300 ms (comme pour l'active sensing), alors que la valeur $FF est normalement réservée pour un reset général et qu'il est généralement déconseillé de l'utiliser. Si le seul filtrage des messages $FE suffit dans votre cas, laissez donc les messages $FF passer au travers de l'interface en plaçant le cavalier JP2 côté masse.

Circuit d'horloge / base de temps
Les lignes RA7/OSC1 et RA6/OSC2 du PIC sont utilisées pour y connecter un quartz de 8 MHz avec ses deux petits condensateurs céramiques de faible valeur. Vu le travail demandé au logiciel, on aurait pu se contenter d'un quartz de 4 MHz. Mais comme je viens de retrouver mon quartz 8 MHz... Ah si, une raison valable de mettre un quartz plus rapide : le temps de traitement est plus élevé et le temps de transit (retard entre entrée MIDI IN et sortie MIDI OUT) est raccourci. Avec un quartz de 8 MHz, le retard MIDI introduit est de l'ordre de 370 us (0,37 ms). Avec un quartz de 20 MHz, le retard MIDI introduit serait de l'ordre de 340 us (0,34 ms). Et avec un quartz de 4 MHz, le retard MIDI introduit serait de l'ordre de 420 us (0,42 ms). C'est fou le temps qu'on gagne entre 4 MHz et 20 MHz ! Ce que j'ai dit juste avant serait-il donc à remettre en cause ? Allez, je vous laisse réfléchir un peu...

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 (type NPN) permet de récupérer le signal MIDI au format TTL, grâce à la présence de la résistance R2 reliée au +5 V. Les données MIDI ainsi mises en forme aboutissent à l'entrée RB1/RX du PIC.

Sortie MIDI
La sortie MIDI (broche RB2/TX du PIC) délivre brièvement une note MIDI C3 (Do3) lors de son initialisation, ce qui permet dès la mise sous tension de savoir si tout démarre bien. Après l'initialisation, la sortie MIDI laisse sortir les infos MIDI qui n'ont pas été filtrées.

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 (tant mieux car je ne sais pas si vous avez déjà essayé d'en mettre un sur un boîtier plastique TO92, mais ce n'est pas le pied). La diode D2 n'est pas indispensable mais est très vivement conseillée, les blocs secteurs du commerce permettant parfois d'inverser la polarité de la tension de sortie. Il serait dommage de griller le microcontrôleur pour une bête inversion qui n'arrive qu'aux autres. Si vous disposez déjà d'une alimentation de +5 V, alors vous pouvez supprimer tous les composants relatifs à cette section, à savoir D2, C3, C4 et U3.

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. 

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

Logiciel du PIC

Les fichiers de code source (MikroPascal V3.80 Pro) et binaire compilé (*.hex) sont disponibles dans les archives dont les liens suivent. 
Interface MIDI 008 - PIC 16F628A - 27/03/2011
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Circuit imprimé

Réalisé en simple face, avec un strap.

interface_midi_008_pcb_composants

Typon aux formats EPS, PDF et Bitmap 600 dpi

Les connecteurs DIN femelle chassis sont montés directement sur le circuit imprimé mais on pourrait fort bien réduire les dimensions du circuit imprimé et se contenter de placer sur ce dernier deux ou trois points de connexion à câbler sur des prises DIN fixées "indépendament" sur le boîtier.