Electronique > Réalisations > Interfaces > Interfaces MIDI > Interface MIDI 005a

Dernière mise à jour : 01/01/2012

Présentation

Cette interface MIDI, basée sur un microcontroleur de type PIC 16F628A, dispose de 2 entrées logiques auquelles peuvent être connectés des interrupteurs ou pédales au pied, et d'une sortie MIDI OUT.

interface_midi_005a_pcb_3d_a

Les deux entrées sont appelées Start et Stop, et permettent simplement d'envoyer des commandes MIDI Start ou Stop à un séquenceur de musique autonome ou informatique (Cubase ou autre) afin de le commander à distance. Si les commandes Start et Stop doivent être envoyées via un seul poussoir, cela est également possible, un interrupteur de mode permet de choisir si les commandes se font via deux organes mécaniques séparés ou un seul. Dans tous les cas, l'entrée de commande Stop envoie la commande MIDI Stop. Voilà donc une interface simple, pour ceux qui ne veulent pas s'encombrer d'un système doté de 6000 entrées avec des fonctions programmables à ne plus savoir quoi en faire...

Type de commande
- Sélection possible entre les commandes "standard" Start et Stop et les commandes MMC Start et Stop.
- Les commandes MMC Record / FastForward et Rewind sont également implémentées, mais je le dis tout bas pour ne pas faire peur à ceux qui pensent que l'interface ne gère que les commandes Start et Stop et qui n'ont pas besoin des autres commandes.

Remarques

Ce petit circuit a été conçu pour rester simple, pas pour le voir évoluer (ou alors très peu). Aucune programmation par l'utilisateur n'est prévue ni ne devrait voir le jour. Un circuit tout aussi simple et complémentaire (sorties logiques depuis commandes MIDI Start / Stop) est étudié en page Interface MIDI 005b.

Schéma

Bon, par où commencer ?

interface_midi_005a

Oscillateur de référence
Les données MIDI doivent être transmises à une vitesse de 31250 bauds, et cette vitesse doit être respectée à quelques dizièmes de pourcents près. Le PIC 16F628A dispose d'un oscillateur interne de 4 MHz, dont la précision suffit même pour des applications MIDI, aussi est-il possible de l'utiliser tel quel. Si vous ne faites pas confiance à l'oscillateur interne, vous pouvez opter pour l'usage d'un quartz externe de 4 MHz, le schéma est prévu pour. La seule contrainte est de charger le programme qui va bien, dans le PIC (les deux versions logicielles sont fournies).

Rôle des interrupteurs et poussoirs
Si interrupteur SW3 Mode ouvert
- Bouton poussoir SW1 START : envoie toujours la commande MIDI START
- Bouton poussoir SW2 STOP : envoie toujours la commande MIDI STOP
Si interrupteur SW3 Mode fermé
- Bouton poussoir SW1 START : envoie la commande MIDI START au premier appui ou quand une commande MIDI STOP a été envoyée juste avant. Sinon, envoie la commande MIDI STOP. Si c'est le seul bouton poussoir utilisé, il envoie donc de façon alternée les commandes MIDI START et MIDI STOP.
- Bouton poussoir SW2 STOP : envoie toujours la commande MIDI STOP
Quelque soit le mode utilisé (un poussoir ou deux), la led D1 établit un compte-rendu du dernier message envoyé. Elle s'allume en même temps que l'envoi d'une commande MIDI Start et s'éteint en même temps que l'envoi d'une commande MIDI Stop.

Résumé des entrées de commande
Les entrées fonctionnent toutes de la même façon, et sont actives quand elles sont portées à l'état logique bas (masse). Pour les exploiter toutes, vous devez donc placer un bouton poussoir entre ces dernières et la masse, comme cela est montré pour les deux entrées de commande Start et Stop.
Mode RT : entrée RA0 à la masse
Mode MMC : entrée RA0 au +5 V
- RB6 : commande STOP (RT) ou STOP (MMC)
- RB5 : commande START (RT) ou START (MMC)
- RB4 : commande CONTINUE (RT) ou PAUSE (MMC)
- RB3 : commande RECORD (MMC)
- RB1 : commande FASTFORWARD (MMC)
- RB0 : commande REWIND (MMC)
Remarque : les commandes MMC correspondant aux entrées RB0, RB1 et RB3 sont toujours envoyées, quelque soit le mode RT / MMC choisi avec l'entrée RA0.

Sortie MIDI Out
Que dire de cette sortie, qui se fait entre les pattes 4 et 5 d'un traditionnel connecteur DIN 5 points ?

midi_din_cablage_001

Les données MIDI sortent telles quelles au format TTL de la patte RB2 du PIC, qui est aussi la sortie TX de l'UART matériel, et sont délivrées via les deux résistances de limitation de courant R1 et R2, de 220 ohms chacune. Le fait que le PIC possède un UART simplifie bien le développement du logiciel interne et permet surtout une grande précision dans le timing des données émises (même si pour ce genre de montage l'usage d'une gestion totalement logicielle des données MIDI aurait été possible).

Prototype

Réalisé avec ma platine EasyPic4 et une petite plaque d'expérimentation annexe pour faciliter l'accès aux ports du PIC.

interface_midi_005a_proto_001a interface_midi_005a_proto_001b interface_midi_005a_proto_001c

Tests réalisés avec succès :
- en mode "standard" Start / Stop avec mon logiciel MidiTest et avec mon séquenceur matériel QY70.
- en mode "MMC" Start / Stop / Rec / FastForward / Rewind avec mon logiciel MidiTest et avec mes séquenceurs logiciel Cubase 4 et Cubase 5.

Circuit imprimé

Le peu de composant autorise le montage sur une plaque à pastilles ou à bande, mais vous pouvez bien entendu adopter un montage traditionnel sur circuit imprimé, tel que celui que je propose ci-après.

interface_midi_005a_pcb_composants

Typon aux formats PDF, EPS et Bitmap 600 dpi

Remarques :
- Le circuit imprimé proposé dispose des connections d'entrées pour les commandes Start / Stop (RB5 et RB6). Si vous voulez utiliser les autres entrées de commande (RB4, RB3, RB1 et RB0), vous pouvez tirer des fils directement sur les pattes correspondantes. Ce n'est pas très pro j'en conviens, mais je sais que vous êtes soigneux, et que ça ne posera pas de problème majeur.
- Si vous chargez le programme "oscillateur interne 4 MHz", vous n'avez pas besoin d'implanter le quartz X1, ni les condensateurs C1 et C2 (c'est cette méthode que j'emploie).
- Si vous chargez le programme "quartz externe 4 MHz", vous devez implanter le quartz X1 et les condensateurs C1 et C2.
- Le condensateur de découplage d'alim C5 est placé et soudé directement sous le PIC, voir vue ci-après (le coucher pour qu'il tienne moins d'épaisseur, ou mieux mettre un CMS).

interface_midi_005a_pcb_3d_b

Logiciel du PIC

Les fichiers de code source (MikroPascal Pro V5.30) et binaire compilé (*.hex) sont disponibles dans l'archive dont le lien suit. Cette archive comporte les fichiers pour version avec oscillateur interne et avec quartz externe.
Interface MIDI 005a - PIC 16F628A - 01/01/2012
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Problèmes ?

01/01/2012
- Mise à jour logiciel PIC pour compilation dans MikroPascal Pro V5.30.
16/07/2009
- Un utilisateur qui a réalisé cette interface m'a fait savoir qu'elle générait des SysEx de façon aléatoire, lorsque l'entrée RB1 était laissée en l'air (et curieusement pas les autres). La configuration du PIC indique pourtant bien que les résistances internes de pullup sont activéees, ce qui normalement évite d'en ajouter en externe. Dans le doute, et si vous constatez ce même genre de disfonctionnement, n'hésitez pas à ajouter une résistance de 10 kO entre les entrées inutilisées et le +5 V (vous pouvez aussi les relier entre entrées et masse, l'important étant qu'aucun changement d'état ne soit vu sur les entrées).