Dernière mise à jour :
09/04/2017
Présentation
Ces interfaces MIDI constituent une version évoluée de l'
interface
MIDI 007 et ont été conçues pour "midifier" des vieux synthés
analogiques.
Elles disposent d'une entrée MIDI et de 32, 64 ou 128 sorties de type
TTL.
Chaque sortie réagit à une note MIDI, sur une plage ajustable (détail
dans le texte descriptif). Quatre interfaces 019x ont été développées
sur le même principe :
-
Interface MIDI 019
: avec PIC 18F45K22, 64 sorties (non compatible running status)
-
Interface MIDI 019b
: avec PIC 18F45K22, 128 sorties (compatible running status)
-
Interface MIDI 019c
: avec PIC 18F46K22, 64 sorties (compatible running status)
-
Interface MIDI 019d
: avec PIC 18F26K22, 56 sorties (compatible running status)
Le PIC est épaulé par des registres à
décalage 74HC595. D'un point de vue fonctionnel, il s'agit en quelque
sorte d'une interface Doepfer MTC64 un peu remaniée
(mais
sans option de gestion des Program Change, que je pourrais
bien
sûr ajouter si le besoin s'en faisait sentir). Une interface similaire (
interface
MIDI 020) a été conçue pour midifier un synthé Solina
paraphonique.
Schéma (019)
Le coeur du montage est un microcontrôleur
PIC 18F45K22 cadencé par un quartz de 8 MHz. Les
registres à décalage servent à transformer des états "série" (envoyés
par le PIC) en états
"parallèle" (sorties TTL).
Tous les registres 74HC595
n'ont pas été installés pour l'ensemble de ces interfaces, car il est
rare de trouver des claviers avec 128 touches... Les versions qui ont
suivi (019b, 019c et 019d) ont été limitées à la gestion de 56 notes
(pour claviers 49 touches).
Fonctionnement général
L'interface possède une entrée MIDI et un nombre de sorties
TTL multiple de 8 (chaque registre à décalage possède 8
sorties). Quand un événement MIDI de type Note
(NoteOn ou NoteOff) se présente à
l'entrée, l'interface décode les octets de l'événement et chaque
changement d'état (note enfoncée ou relâchée) est enregistré dans une
mémoire tampon. Immédiatement après, les sorties des registres
(externes au PIC) sont
mises à jour pour refléter l'état des notes reçues. Toutes les sorties
peuvent être utilisées en même temps, mode "polyphonique intégral" : un
buffer circulaire de 1024 octets permet de gérer
correctement l'arrivée des notes même si elles arrivent en grand nombre
et dans un temps court (rappelons au passage que chaque note MIDI - on
ou off - est composée de trois octets).
Horloge / base de temps
Pour des questions de stabilité en fréquence, l'horloge interne du PIC
n'est pas utilisée. Les
lignes
RA7/OSC1 et RA6/OSC2 du PIC sont monopolisées pour y connecter
un
quartz de 8 MHz avec deux condensateurs céramiques
de
faible valeur (22 pF / 63 V). La PLL x4 du PIC est activée et le
logiciel tourne donc à 32 MHz (4 x 8 MHz).
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) qui protège l'optocoupleur en cas d'inversion de
polarité des lignes 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 R2
raccordée au +5 V.
Un évènement NoteOn
parmi d'autres...
Les
données MIDI mises en forme aboutissent à l'entrée RC7/RX1 du
PIC et sont traitées par l'UART intégré dans ce dernier.
Le traitement des notes MIDI reçues dépend de l'état de la broche RB3
du PIC :
- Si le cavalier JP1 est retiré (broche RB3 en l'air), les
données MIDI reçues sont traitées de la même façon quelque soit la
valeur du canal MIDI.
- Si le cavalier JP1 est en place (broche RB3 à la
masse), les données MIDI reçues ne sont traitées que si leur canal MIDI
correspond au canal défini par la position des interrupteurs branchés
sur les lignes RD0 à RD3 du PIC (canal 1 à 16 codé en binaire sur 4
bits, valeurs 0 à 15).
La LED LED1 s'allume (clignote) lors de la réception des données
MIDI. La LED LED2 s'allume quand au moins une note est en cours de jeu
(NoteOn), elle ne s'éteind qu'après réception du ou des événements
NoteOff correspondants. Toutes les sorties TTL sont désactivées si
l'interface reçoit un message de "Mode canal" de valeur comprise entre
123 et 127 (All Notes Off).
Conversion MIDI vers sorties TTL
Chaque sortie TTL s'active sur réception de la note MIDI correspondante
: NoteOn = activation de la sortie correspondante et NoteOff =
désactivation. Comme la norme MIDI prévoit 128 notes et que le clavier
qu'on veut midifier en possède généralement moins (par exemple 49
notes), il serait ridicule de disposer de 128 sorties et d'en exploiter
moins de la moitié. C'est pourquoi cette interface est dotée d'une
configuration qui permet de définir la première note qui correspond à
la première sortie (Out0 sur le schéma). Les interrupteurs
raccordés sur les lignes RD4 à RD7 du PIC
permettent de spécifier à partir de quelle note MIDI l'interface
commence à réagir, voir tableau qui suit.
RD7 |
RD6 |
RD5 |
RD4 |
Première note traitée |
0 |
0 |
0 |
0 |
C-2 |
0 |
0 |
0 |
1 |
F-2 |
0 |
0 |
1 |
0 |
C-1 |
0 |
0 |
1 |
1 |
F-1 |
0 |
1 |
0 |
0 |
C0 |
0 |
1 |
0 |
1 |
F0 |
0 |
1 |
1 |
0 |
C1 |
0 |
1 |
1 |
1 |
F1 |
1 |
0 |
0 |
0 |
C2 |
1 |
0 |
0 |
1 |
F2 |
1 |
0 |
1 |
0 |
C3 |
1 |
0 |
1 |
1 |
F3 |
1 |
1 |
0 |
0 |
C4 |
1 |
1 |
0 |
1 |
F4 |
1 |
1 |
1 |
0 |
C5 |
1 |
1 |
1 |
1 |
F5 |
Exemple : on veut disposer de 56
sorties avec la première sortie activée sur la note C2,
la deuxième sortie
activée sur C#2, la troisième sortie sur D2, etc. Pour ce faire, il
faut mettre l'entrée RD7 à 1 (inter fermé) tandis que les entrées RD6,
RD5, RD4 doivent être à 0 (inters ouverts). Bien sûr les interrrupteurs
de configuration peuvent être remplacés par de simples
straps ou ponts de soudure.
Temps de transit et temps de traitement
Les données MIDI arrivent dans le PIC, qui les traite au fil de l'eau
pour détecter
la présence de notes. A chaque changement d'état d'une note
(enfoncement ou relâchement d'une touche du clavier synthé), toutes
les sorties sont mises à jour, même si un seul évenement Note a été
reçu. Les sorties sont en effet adressées sous une forme
série/parallèle, on n'a donc pas le choix. Le graphe qui suit montre
que 12 notes sont activées en même temps.
A partir du moment où une
note MIDI a été réceptionnée (3 octets), la sortie correspondante est
mise à jour au bout de 360 us (0,36 ms). Cette valeur qui est très
faible est la pire qu'on
puisse avoir, elle correspond à l'utilisation de 128 sorties (première
note traitée = C-2). On peut la comparer au temps nécessaire
pour
transférer les trois octets
de la note MIDI dans le câble MIDI, qui lui-même avoisine la
milliseconde...
Interface(s) de sortie
Dans le contexte présent, les sorties de
type TTL (sorties des registres à décalage) sont utilisées pour piloter
des interrupteurs analogiques. Mais toute autre circuiterie peut bien
sûr être envisagée (commande de relais, moteurs ou lampes par exemple).
Sortie MIDI
Le
schéma fait apparaitre une sortie MIDI, cette sortie
est facultative. Au démarrage du système, elle sortie délivre
une note MIDI brève (Do3) qui permet de s'assurer que
le PIC
démarre bien et qu'il tourne à la bonne vitesse. Si cette sortie n'est
pas souhaitée, il suffit de ne pas la
câbler et de ne pas implanter les deux résistances R4 et R5
(associées au connecteur J2).
Alimentation
Une source de tension de 5 V est nécessaire pour faire fonctionner
cette interface. N'importe quel bloc secteur standard 5 V convient,
vous pouvez aussi utiliser une source de tension plus élevée suivie
d'un régulateur de tension +5 V (par exemple LM7805). Pour ce qui est
de la puissance (ou courant max de sortie du bloc alim), cela dépend
bien sûr des périphériques qui seront raccordés aux registres à
décalage.
Schémas 019b, 019c et 019d
De la même veine que le schéma 019.
Côté interfaçage avec les registres à décalage, même circuit que dans
le schéma 019.
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 proto (001) réalisée et testée avec ma platine
EasyPic7 et
mon clavier maître Roland D50. Testé ensuite réalisés avec la
carte finale (proto 002).
L'ensemble
des tests a été mené avec mon clavier D50 et mon logiciel MidiTest, ce
dernier permettant d'envoyer des NoteOn non suivis de NoteOff
(pas besoin de laisser le doigt appuyé sur une touche pendant
les
vérifications de l'état des sorties).
Logiciel du PIC
Pro - Demande Pro, logiciel non
disponible en libre service.
Circuit imprimé
Non réalisé par mes soins. Les deux vues 3D en début de page montrent
deux versions différentes, une
pour 64 sorties TTL (version 019) et une pour 128 sorties TTL (version
019b).
Historique
09/04/2017
- Ajout interface 019d avec PIC 18F26K22, compatible "running
status".
25/10/2015
- Première mise à disposition (interfaces 019, 019b et 019c).