Dernière mise à jour :
08/12/2013
Présentation
Cette interface MIDI dispose d'une entrée MIDI IN, de 8
entrées
logiques et de deux sorties MIDI OUT.
Elle
permet de transformer en temps
réel un événement MIDI de type NoteOn en d'autres événements NoteOn,
Control Change ou Program Change, ou de déclencher des événements
NoteOn, Control Change ou Program Change via les entrées logiques. Par
exemple, cette interface peut, lors de la réception de NoteOn, émettre
des événements NoteOn sur la première sortie MIDI, et émettre des
Program Change et Control Change sur la seconde sortie MIDI.
Jusqu'à seize évenements (notes MIDI ou activations logiques) peuvent
être traités individuellement, chaque événement d'entrée peut provoquer
2 événements sur chacune des deux sorties MIDI.
Schéma
Le coeur du montage est un microcontrôleur
PIC 18F45K22 cadencé par un quartz de 16
MHz.
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. S'il s'agit d'un évenement de type
NoteOn "attendu" par l'interface (16 notes peuvent être reconnues comme
élement attendu), alors un ou plusieurs événements MIDI sont délivrés,
le type d'événement dépend de la
programmation établie par l'utilisateur (ou figée en dur dans le code
et non modifiable). L'envoi des événements MIDI (NoteOn, Program Change
ou Control Change) peut
également être provoqué par la pression sur les boutons-poussoirs BP1 à
BP8. Si le bouton SHIFT est relâché (ligne RE0 du
PIC à
l'état bas), les notes envoyées correspondent aux évenements #1 à #8.
Si le bouton SHIFT est enfoncé (ligne RE0 à l'état haut), les notes
envoyées correspondent aux évenements #9 à #16.
Circuit d'horloge / base de temps
Les
lignes
RA7/OSC1 et RA6/OSC2 du PIC sont monopolisées pour y connecter
un
quartz de 16 MHz avec deux condensateurs céramiques
de
faible valeur (22 pF / 63 V). Hors de question ici d'utiliser l'horloge
interne, le fonctionnement pourrait être aléatoire dans des conditions
d'utilisation extrêmes (température ambiante élevée).
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, mais elle
pourrait l'être pour une fonction à laquelle je ne pense pas en ce
moment. Quand des événements MIDI (notes ou autres) arrivent sur
l'entrée RX1, la LED Rx s'allume brièvement.
Sorties MIDI
Les
deux sorties MIDI (broches RC6/TX1 et RD6/TX2 du PIC) délivrent
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, les sorties MIDI
délivrent les infos MIDI seulement quand on les sollicite (via
entrée MIDI ou boutons-poussoirs). Quand les sorties MIDI envoient des
événements suite à pression sur les boutons poussoirs, la LED Rx
s'allume brièvement (je sais, ce n'est pas très logique dans ce cas
d'appeler cette LED Rx).
Programmation
Deux versions du programme existent :
- une version avec
événements MIDI fixes codés en dur (aucune configuration possible par
l'utilisateur après programmation du PIC);
- une version configurable par l'utilisateur.
Pour
la version configurable, on peut utiliser un clavier MIDI ou
un
séquenceur MIDI, il suffit de respecter la procédure suivante :
1 - Soumettre l'entrée Prog (RE2) à l'état logique haut pour passer en
mode Programmation.
2
- Appuyer sur le bouton-poussoir (BP1 à BP8) qui correspond à
l'évenement qu'on souhaite configurer (BP1 pour Note #1 par exemple).
Pour
configurer les évenements Note #9 à #16, laisser le bouton
SHIFT
enfoncé pendant l'appui sur BP1 à BP8.
3 - Envoyer sur l'entrée MIDI IN de l'interface, la
note MIDI qui correspond à la note à analyser (à reconnaître).
4
- Envoyer sur l'entrée MIDI IN de l'interface, le premier
événement MIDI qui devra être envoyé sur la sortie MIDI OUT 1
sur
réception de l'événement NoteOn attendu (NoteOn, Program CHange ou
Control Change).
5 - Envoyer sur
l'entrée MIDI IN de l'interface, le second événement MIDI qui
devra être envoyé sur la sortie MIDI OUT 1 sur réception de l'événement
NoteOn attendu. Pour désactiver cet événement, envoyer un message Sysex
"vide" $F0 $00 $F7.
6 -
Envoyer sur l'entrée MIDI IN de
l'interface, le premier événement MIDI qui devra être envoyé
sur
la sortie MIDI OUT 1 lors de l'appui sur le bouton poussoir SW1. Pour
désactiver cet événement, envoyer un message Sysex "vide" $F0 $00 $F7.
7 -
Envoyer sur l'entrée MIDI IN de l'interface, le second
événement MIDI qui devra être envoyé sur la sortie MIDI OUT 1
lors
de l'appui sur le bouton poussoir SW1. Pour désactiver cet événement,
envoyer un message Sysex "vide" $F0 $00 $F7.
8 - Envoyer sur l'entrée MIDI IN de l'interface, le
premier
événement MIDI qui devra être envoyé sur la sortie MIDI OUT 2
sur
réception de l'événement NoteOn attendu. Pour désactiver cet événement,
envoyer un message Sysex "vide" $F0 $00 $F7.
9 -
Envoyer sur l'entrée
MIDI IN de l'interface, le second événement MIDI qui devra
être
envoyé
sur la sortie MIDI OUT 2 sur réception de l'événement NoteOn attendu.
Pour désactiver cet événement, envoyer un message Sysex "vide" $F0 $00
$F7.
10 -
Envoyer sur l'entrée MIDI IN de l'interface, le premier
événement MIDI
qui devra être envoyé sur la sortie MIDI OUT 2 lors de l'appui sur le
bouton poussoir (BP1 à BP8). Pour désactiver cet événement, envoyer un
message Sysex "vide" $F0 $00 $F7.
11
- Envoyer sur l'entrée MIDI IN de
l'interface, le second événement MIDI qui devra être envoyé
sur la
sortie MIDI OUT 2 lors de l'appui sur le bouton poussoir (BP1 à BP8).
Pour désactiver cet événement, envoyer un message Sysex "vide" $F0 $00
$F7.
Répéter l'opération pour chaque évenement (#1 à #16) à configurer.
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.
Exemples d'utilisation et montages dérivés
Cette interface peut jouer plusieurs rôles, mais pour l'instant elle
n'en joue qu'un.
Pédalier de commande (gestion depuis scène)
Grâce
aux interrupteurs de commande reliés sur les entrées logiques
(boutons-poussoirs de tableau ou au pied), des
commandes MIDI (NoteOn, Program Change ou Control Change) peuvent être
envoyées à deux
appareils distincts (par exemple un séquenceur, instrument ou effet
piloté par MIDI d'un côté, et une console DMX dotée d'une gestion MIDI
de l'autre).
Montages dérivés
Cette interface a servi de base pour une autre réalisation :
Interface MIDI 015za - 1 entrée / 1 sortie MIDI, envoi de Program
Change avec fonction Live/Search
Transposition
Pas prévu à l'origine, la fonction de transposition de notes ou de
canal MIDI est tout à fait possible.
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.
Prototype
Interface réalisée et testée avec ma platine EasyPic7 et avec
mon logiciel de test
MidiTest.
Ne
disposant que d'une seule prise DIN de sortie physique, j'ai effectué
mes tests et vérifications en commençant par la sortie MIDI OUT 1 (sur
le port C du PIC), puis en continuant avec la sortie MIDI OUT 2 (sur le
port D). La photo sur fond rouge qui précède montre les deux circuits
d'extension posés
côte à côte sur les connecteurs 10 points des ports C et D. Les câbles
volants font un peu fouilli, mais ça fonctionne très bien.
Logiciel du PIC
Deux versions créées :
- une avec
événements MIDI fixes codés en dur (aucune configuration possible par
l'utilisateur après programmation du PIC);
- une configurable par l'utilisateur (
me contacter pour les
détails).
Seul le
fichier binaire compilé (*.hex) de la version "libre de
droits" est
disponible
et transmis aux demandeurs.
Interface
MIDI 015 - PIC 18F45K22 - 08/12/2013 -
Non
disponible sur ce site
Si
vous souhaitez recevoir par la poste un PIC préprogrammé
et prêt à utiliser, merci de consulter la page
PIC - Sources.
Circuit imprimé
Non réalisé.
Historique
08/12/2013
- Première mise à disposition.