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

Dernière mise à jour : 30/06/2013

Présentation

Cette interface MIDI dispose d'une entrée MIDI IN et d'une sortie MIDI OUT et permet de modifier en temps réel la courbe de vélocité d'un clavier maître.

interface_midi_014_pcb_3d_a

Cette interface s'intercale entre la sortie MIDI Out d'un clavier maître et un séquenceur ou générateur de son quelconque, et modifie la vélocité des notes jouées selon une courbe choisie parmi sept différentes. Les évenements MIDI qui ne sont pas des notes (Program Change, Control Change, SysEx, etc) ne sont pas modifiés. Le retard introduit par le circuit est de l'ordre de la milliseconde pour les notes, retard inférieur pour tous les autres types de données.

Schéma

Le coeur du montage est un microcontrôleur PIC 16F628A dont la cadence est fixée par un quartz de 8 MHz. Le circuit présente de fortes ressemblances avec l'interface MIDI 013 et pour cause, c'est exactement la même base matérielle, seul le programme du PIC change. Une alimentation +5 V est requise pour faire tourner le tout.

interface_midi_014

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 le début d'une note, le logiciel attend d'avoir reçu les trois octets qui constituent l'évenement entier. Une fois reçus les trois octets de la note, le logiciel modifie la vélocité en fonction de la courbe choisie et la nouvelle note est délivrée sur la sortie MIDI OUT.
- si l'octet reçu n'a rien à voir avec une note, il est retransmis sans aucune modification sur la sortie MIDI OUT.

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 deux condensateurs céramiques de faible valeur (22 pF / 63 V). Comme je l'ai déjà indiqué en d'autres lieux, on peut aussi utiliser l'oscillateur interne 4 MHz du PIC pour économiser un quartz, mais les résultats ne sont plus garantis.

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 transistor NPN) 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 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 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 laisse sortir les infos MIDI qu'on lui rentre, avec modification de vélocité pour les notes si l'utilisateur en a fait le voeux.

Choix de la courbe de vélocité
La courbe de vélocité choisie dépend de la position des microswitches (interrupteurs miniatures) DSW1 connectés sur les broches RA0 à RA3 du PIC (le switch câblé sur RA3 n'est actuellement pas utilisé, prévu pour éventuelle extension). La courbe #0 (RA0 à RA3 à 0) correspond à "aucune modification".

Courbe RA3 RA2 RA1 RA0
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1

Si par exemple vous voulez activer la courbe de correction de vélocité N°5, vous devez mettre en position ON les interrupteurs reliés sur les broches RA0 et RA2 du PIC, les autres interrupteurs devant rester à OFF (entrées RA0 et RA2 à l'état logique haut et entrées RA1 et RA3 à l'état logique bas). Bien sûr, l'usage d'interrupteurs miniatures n'a rien d'obligatoire, vous pouvez utiliser une roue codeuse ou un encodeur de priorité pour sélection avec boutons poussoir. En fait toute commande logique binaire convient. 

Les dessins de courbes qui suivent correspondent à celles que j'ai implémentées (courbe 0 la plus à gauche, ensuite courbe 1, etc).

midicurve_curve_001a midicurve_curve_002a midicurve_curve_003a midicurve_curve_004a midicurve_curve_005a midicurve_curve_006a midicurve_curve_007a

Pour la création de ces courbes, j'ai développé l'outil logiciel MidiCurve (spécifiquement dédié à cet usage).

MidiCurve

Pour l'heure, les courbes de l'interface MIDI 014 sont fixes et non programmables par l'utilisateur (ce sont celles évoquées ci-avant). Pour disposer de courbes personnalisées, merci de me transmettre les fichiers de courbe (*.dat) que vous aurez créées avec le logiciel MidiCurve, je vous fournirai en retour le fichier binaire compilé pour le PIC (*.hex) qui vous correspond.

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. 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 crâmer le microcontrôleur pour une inversion qui ne risque pas de se produire. 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. 

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 assembleur (*.asm) et binaire compilé (*.hex) sont disponibles dans l'archive dont le lien suit. 
Interface MIDI 014 - PIC 16F628A - 30/06/2013
Des courbes de vélocité proposées par d'autres utilisateurs sont incluses dans l'archive, ainsi que les fichiers PIC (*.hex) correspondants.
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.

interface_midi_014_pcb_composants

Pas de strap, mais quatre résistances CMS soudées côté cuivre (R5 à R8).

interface_midi_014_pcb_3d_b

Typon aux formats EPS, PDF et Bitmap 600 dpi

Les connecteurs DIN femelle chassis sont montés directement sur le circuit imprimé. Il serait possible de réduire les dimensions du circuit imprimé en plaçant sur ce dernier deux ou trois points de connexion à câbler sur des prises DIN fixées "indépendament" sur le boîtier.

Historique

30/06/2013
- Ajout fichiers *.hex intégrant les courbes de vélocité de Christian B. et de Adrien M. (programme du PIC inchangé).
02/06/2013
- Première mise à disposition.