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

Dernière mise à jour : 28/01/2014

Présentation

Cette interface MIDI dispose d'une entrée MIDI IN, de 3 entrées logiques et d'une sortie MIDI OUT.

interface_midi_015_pcb_3d_a

Elle a été conçue à la demande d'un professionnel pour s'intercaler entre une guitare MIDI et un expandeur, et permet d'envoyer des Program Change avec des commandes au pieds (pédale). Le cachier des charges était le suivant :

Schéma

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

interface_midi_015za

Fonctionnement général
Les données MIDI qui arrivent à la queue-leu-leu sur l'entrée MIDI IN sont traitées octet par octet et se retrouvent en sortie, sans aucun filtrage. Pour limiter tout risque de perte de données, j'ai implémenté une mémoire tampon (buffer circulaire) de 255 octets. Un affichage numérique permet de visualiser le numéro de Program Change à envoyer (affichage au choix de la plage 0 à 127 ou 1 à 128). Trois boutons-poussoirs (au pied) permettent d'utiliser le système en gardant les mains libres (principe de toutes les pédales d'effets ou de commande) :
Remarque concernant l'affichage du numéro de programme : il peut au choix être compris entre 0 et 127 ou 1 et 128, mais dans tous les cas les numéros envoyés dans les messages MIDI se situent dans la plage 0 à 127.

Circuit d'horloge / base de temps
Les lignes RA7/OSC1 et RA6/OSC2 du PIC sont monopolisées pour y connecter un quartz de 12 MHz avec deux condensateurs céramiques de faible valeur (22 pF / 63 V). Une interruption est déclenchée toutes les 5 ms (fréquence 200 Hz) par le timer T0 pour rythmer le multiplexage de l'affichage. Une vérification peut être effectuée sur la broche 18 du PIC (RC3), qui change d'état à chaque nouvellle interruption.

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. Quand des événements MIDI (notes ou autres) arrivent sur l'entrée RX1, la LED Rx s'allume brièvement.

Sorties MIDI
La sortie MIDI (broche RC6/TX1 du PIC) délivre 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, la sortie MIDI délivre les données MIDI qui entrent ou les messages de Program Change demandés par l'utilisateur.

Affichage
L'affichage du numéro de programme s'effectue à l'aide des trois afficheurs à LED sept segments AFF1 à AFF3 de type cathode commune (CC), selon le mode multiplexé : les afficheurs s'allument à tour de rôle (toujours un seul à la fois), à un rythme suffisant pour que l'oeil n'y voit que du feu. Cela permet de réduire la consommation globale ainsi que le nombre de fils de liaison entre le PIC et l'ensemble des segments. La vitesse de raffraichissement général est de 200 Hz, soit 66 Hz par afficheur, chaque afficheur est activé ou désactivé par un transistor utilisé en commutateur et qui amène le point commun (CC, cathode commune) à la masse quand il le faut. La plage d'affichage du numéro de programme dépend de la valeur donnée au paramètre D (voir paragraphe suivant), mais quelque soit la plage d'affichage choisie, la plage des messages envoyée est toujours 0 à 127.

Réglages/programmation (préférences utilisateur)
La modification des paramètres utilisateur se fait en entrant dans le mode "Program". Pour y entrer, le bouton-poussoir Live/Search doit être maintenu enfoncé au moment de la mise sous tension. A ce moment, l'affichage indique "Pr-" (Program). Après relâchement du poussoir Live/Search, l'affichage est composé d'une lettre et de deux chiffres, selon code suivant :
Chaque nouvelle pression sur le bouton Live/Search permet de passer au paramètre suivant, et le réglage de la valeur du paramètre en cours se fait avec les boutons Up et Down. Pour sortir du mode Program et revenir au mode Live, deux options possibles :
- redémarrer l''interface sans aucun bouton-poussoir enfoncé, et dans ce cas les modifications ne sont pas conservées (retour aux précédentes valeurs);
- ou presser le bouton Live/Search puis en maintenant ce dernier enfoncé, presser le bouton Up ou Down. Dans ce cas, les dernières valeurs sont enregistrées en EEProm (affichage PrS) et seront rappelées au prochain démarrage.

interface_midi_015za_aff_001a Entrée dans le mode "program" pour modification des paramètres utilisateur.
interface_midi_015za_aff_002a Paramètre A = délai anti-rebonds, ici 100 ms (20 * 5 ms)
interface_midi_015za_aff_002b Paramètre B = délai avant auto-répétition, ici 1 s (50 * 20 ms)
interface_midi_015za_aff_002c Paramètre C = délai entre répétitions, ici 125 ms (25 * 5 ms)
interface_midi_015za_aff_002d Paramètre D = plage d'affichage du numéro de programme, ici plage 1 à 128
interface_midi_015za_aff_002e Paramètre E = canal MIDI, ici fixé à la valeur 1
interface_midi_015za_aff_001b Enregistrement des nouvelles valeurs
interface_midi_015za_aff_003a Retour au mode Live (affichage programme #001 pour valeur Program Change #000)

Alimentation
Un régulateur de tension de +5 V (LM7805) 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.

interface_midi_015za_alim

La consommation moyenne est limitée du fait du multiplexage utilisé pour l'affichage du numéro de programme, mais elle peut toutefois atteindre 100 mA en crête. Pour cette raison, le régulateur de tension est un LM7805 et non un 78L05. Une diode de protection insérée en série dans l'entrée protège l'ensemble en cas d'inversion accidentelle de la polarité du bloc secteur utilisé. Les deux condensateurs C3 et C4 assurent un filtrage local suffisant pour un fonctionnement correct du régulateur de tension et du microcontrôleur.

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

Réalisé et testé avec ma platine EasyPic7, mon logiciel de test MidiTest et mon contrôleur/générateur de test MIDI 005.

interface_midi_015_proto_001a interface_midi_015_proto_001b interface_midi_015za_proto_001a interface_midi_015za_proto_001binterface_midi_015za_proto_001cinterface_midi_015za_proto_001d

Au début en y allant doucement avec juste quelques notes jouées sur un clavier pour vérifier que ça passait bien, puis ensuite avec un gros paquets de données MIDI pour voir si l'engin tenait la charge.

controleur_midi_005_proto_001a controleur_midi_005_proto_001b

La première version du logiciel du PIC se comportait très bien avec quelques notes jouées à un rythme normal, mais dès qu'on plaquait un accord de 16 notes en même temps (bras sur les touches du clavier), le numéro de programme repassait à zéro bien que toutes les infos MIDI continuaient de transiter ! Le problème était situé au niveau des interruptions du Timer0 et est corrigé. La suite des tests a montré que l'interface tenait le choc avec le débit soutenu des données délivrées par mon générateur MIDI de test et en faisant n'importe quoi sur le clavier. Bref, c'est validé.

Logiciel du PIC

Demande professionnelle, logiciel non disponible en accès libre. Si intéressé, me contacter pour les détails.
Interface MIDI 015za - PIC 18F45K22 - 26/01/2014 - Non disponible sur ce site
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, me contacter.

Circuit imprimé

Non réalisé, simple idée de départ en simple face avec quelques straps...

interface_midi_015za_pcb_composants

Historique

26/01/2014
- Première mise à disposition.