English Version
French Version
MIDIO128 V2
Date de Création: Septembre 2001
NOTE: This design is expired! In 2011 MIDIO128 V3 has been developed which replaced the old version. See this page for more details.
L'interface MIDIO128 vous permet de contrôler 128
sorties digitales via des commandes MIDI et d'envoyer des messages MIDI
en fonction de l'état d'un maximum de 128 entrées
digitales.
La MIDIO128 a été
conçue à l'origine pour "midifier" un trés vieil
"orchestrion" (piano mécanique) appellé Frati. Son
propriétaire, Willy, en donne une description ici et plus en détails ici. Un jour Willy me demanda de l'aide pour réaliser une interface entre son orchestrion et son
PC, afin de pouvoir enregistrer et rejouer les airs du cylindre via
MIDI. Il n'était pas trés compliqué pour moi, en
partant du design de la MIDIbox64, de créer une application qui
réponde à ses besoins, et c'est ce que j'ai donc fait. :)
Il y a probablement d'autres gens qui souhaiteront pouvoir
contrôler ce genre d'instrument ou d'autres appareils
électroniques commes des jeux de lumières, des moteurs ou
simplement leur machine à café. La MIDIO128 est faite
pour eux...
Le Hardware
-
La conception matérielle est relativement simple. Elle repose sur la MBHP et le MIOS,
ce qui lui permettra d'accueuillir si nécessaire de nouvelles
options dans le futur. Le PIC est connecté aux ports MIDI In/Out
et à deux longues chaînes de registres en série:
une chaîne pour les entrées, une pour les sorties. Si vous
désirez vous lançer dans ce projet mais que vous n'avez
pas besoin des 128 entrées/sorties, vous n'êtes pas
obligé d'installer tous les "shift registers" (chaque shift
register gère 8 entrées ou 8 sorties). La seule chose
importante, c'est que la dernière entrée du dernier shift
register soit mise à la masse (0V), afin d'éviter au
firmware de traiter des données invalides.
Le Software
-
Le logiciel scanne les 128 entrées en 1mS. Si
l'état d'un pin d'entrée à changé, le
programme cherchedans un large table au l'évènement MIDI
prédéfini qui correspond à cette
entrée , et l'envoie sur le port MIDI out:
Evènements MIDI
Sortants
|
Aux changements d'état
des pins d'entrée, envoie:
|
9n xx v1, 9n yy v2
|
Evènement de Note, canal n
numéro xx v1 si l'entrée=0V
numéro yy v2 si l'entrée=5V
|
An xx v1, An yy v2
|
Evènement Aftertouch , canal n
numéro xx v1 si l'entrée=0V
numéro yy v2 si l'entrée=5V
|
Bn xx v1, Bn yy v2
|
Evènement Controller, canal n
numéro xx v1 si l'entrée=0V
numéro yy v2 si l'entrée=5V
|
Cn xx
|
Evènement Program Change, canal n
numéro xx v1 si l'entrée=0V
numéro yy v2 si l'entrée=5V
|
Dn xx
|
Evènement Channel Aftertouch, canal n
|
En xx v1, En yy v2
|
Evènement Pitchbender, canal n
numéro xx v1 si l'entrée=0V
numéro yy v2 si l'entrée=5V
|
Sur les évènements MIDI entrants, le
logiciel cherche dans un autre tableau si un pin de sortie est
assigné à cet évènement MIDI et active (ou
inverse) l'état du(des) pin(s) si il y a correspondance:
Evènements
MIDI
Entrants
|
Pin de Sortie:
|
9n xx vv
|
0V si vv=00, sinon 5V
|
An xx vv
|
0V si vv=00, sinon 5V
|
Bn xx vv
|
0V si vv=00, sinon 5V
|
Cn xx
|
Deux modes sont configurables dans le fichier midio128.ini :
Normal Mode:
aux évènements "program change" entrants, le pin de
sortie correspondant basculera de 0V à 5V et vice versa
Alternative Mode:
aux évènements "program change" entrants, tous les pins
de sortie (assignés aux "program change") d'un même canal
seront mis à 0V, mais le pin assigné au canal et à
la valeur de "program change" sera mis 5V
|
Dn xx
|
Toggle: 0V si l'état actuel du pin de sortie est à 5V
5V si l'état actuel du pin de sortie est à 0V
|
En xx vv
|
0V si vv=00, sinon 5V
|
Les évènements MIDI pour tous les pins IO
peuvent être configurés dans le script
"mk_midio128_syx.pl", qui convertit un fichier texte " .ini" en fichier
de Dump SysEx Dump. Le dump SysEx doit ensuite être envoyé
à la MIDIO128 via MIDI. Vous pouvez donc réassigner les
IOs autant de fois que vous voulez, facilement et sans avoir à
reprogrammer complètement le PIC. :)
Notez que la polarité des pins
d'entrées et de sorties (état logique negatif ou positif)
peut également êtrec configurée dans le fichier
midio128.ini.
Merger MIDI
-
Le Merger MIDI doit être activé dans le fichier midio128.ini (voir mk_midio128_syx.zip).
Si vous l'activez, la MIDIO128 renverra tous les
évènement MIDI entrants vers le port MIDI Out. Cela vous
permet de cascader plusieurs appareils MIDI, par exemple de brancher
une autre MIDIO128, une MIDIbox ou un clavier avant ou aprés la
MIDIO128.
L'Interface
-
Chaque pin de sortie peut véhiculer
jusqu'à 10-20 mA. C'est suffisant pour des applications
digitales ou des LEDs. Pour contrôler des relais, des lampes, des
moteurs ou des machines à café, je vous recompmande
d'utiliser des transistors Darlington ULN2803, économiques et
pratiques. Vous trouverez un lien vers la datasheet plus bas.
Les entrées digitales réagissent à
des signaux de niveau TTL, c'est à dire qu'elles passent
à "0" avec un signal inférieur à 0.5V et passe
à "1" avec un signal supérieur à environ 3V. Ne chargez pas les entrées avec des niveaux supérieurs à 5V!!!
Référez-vous aux schémas de la
MIDIbox64 si vous souhaitez utiliser des boutons. Les Optocoupleurs
aident à isoler la MIDIO128 d'autres matériels critiques.
Comment configurer la MIDIO128
-
Utilisez le script mk_midio128_syx.zip pour assigner les évènements MIDI aux I/O et l'éditeur de Serge SysExBox pour transférer les données de configuration à la MIDIO128.
Téléchargements
-
NOTE: This design is expired! In 2011 MIDIO128 V3 has been developed which replaced the old version. See this page for more details.
Last update: 2015-09-24
Copyright © 1998-2015, Thorsten Klose. All rights reserved.
|