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

Schémas & PCBs
Fichier Taille Description
MBHP LINK voir MIDIbox Hardware Platform
Firmware
MIOS Download LINK Portage vers le PIC18F452 avec les Codes Source
PIC16F Firmwares LINK Firmware pour le PIC16F877 (dépassé, n'utilisez pas ce micro-contrôleur pour de nouvelles MIDIbox!)
ChangeLog LINK Le ChangeLog de la MIDIO128 
Générateur de fichier ".syx" 
mk_midio128_syx.zip 11k Pour créer les dumps de configuration pour la MIDIO128
sysex_implementation.txt 2k L'implémentation SysEx 
Gestionnaire de Download/Upload 
miostools.midibox.org LINK Gestionnaire de Download/Upload par Serge
PCBs alternatifs (voir aussi MBHP)
midio128_pcb_rasmus.zip 1.38MB modèle de PCB par Rasmus
midio128_pcb_roman.zip 675k modèle de PCB par Roman Krause
Misc.
MIDIbox Forum LINK Le support du Forum MIDIbox
MIDIbox Wiki LINK Une foule d'informations complémentaires sur les MIDIbox, MIOS et la MIDIO128
midi_thru.gif 50k Port MIDI Thru Optionnel
relay_example.pdf 6k Comment connecter des relais à la MIDIO128
uln2803.pdf 96k datasheet des transistors Darlington ULN2803
mbhp_doutx1_reed_relays.pdf 9k Comment connecter des relais Reed à un module DOUT  - voir aussi cette photo
fratipcb.jpg 33k Une photo de l'interface MIDI pour le Frati 
mvdReijden.html LINK Une article sur le projet MIDIO128 par Willy van Reijden

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: 2014-02-23

Copyright 1998-2014, Thorsten Klose. All rights reserved.