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.
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.
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).
Pour la création de ces courbes, j'ai développé l'outil logiciel
MidiCurve
(spécifiquement dédié à cet usage).
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.
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.
Pas de strap, mais quatre résistances CMS soudées côté cuivre (R5 à R8).
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.