English Version
French Version
MIDIbox Link
Date de Création: Décembre 2002
J'ai finalement trouvé le moyen d'éviter
les problèmes de boucles MIDI qui survenaient lors du
chaînage de plusieurs MIDIbox tournant avec la fonction MIDI
merger activée. Ma première idée fût
d'ajouter une connection matérielle supplémentaire (un
système "MIDIbox Link" physique), qui se comporterait comme une
seconde connection MIDI entre les MIDIbox. Mais une telle connection serait instable et sensibles aux variations externes
(EMC), et pourrait planter à n'importe quel petit parasitage sur
les câbles entre les modules Core. La seule solution à ce
problème serait d'ajouter des composants, de ralentir les
transferts tout en corrigeant les erreurs.
Du coup, je suis parti dans une autre voie. J'ai
utilisé une chaîne MIDI classique en insérant des
bytes "Begin" et "End" afin de distinguer les évènements
devant quitter la chaîne de ceux devant êtres
renvoyés par le dernier maillon de la chaîne vers le MIDI
Out. En d'autres mots: tous les évènements MIDI
générés par les modules Core sont marqués
et ainsi forcément renvoyés sur le dernier MIDI Out.
Et voilà - ça fonctionne sans composants supplémentaires!
Voici quelques schémas pour rendre tout ça plus clair:
La première image montre le problème de
bouclage MIDI possible lorsque tous les Mergers sont activés.
Ceci peut être nécessaire (par exemple) si 3 modules avec
motorfaders sont connectés ensembles et que l'application
hôte doit envoyer la position des moteurs à tous les
modules Cores, et que les évènements MIDI émis par
les MIDIbox doivent être renvoyés vers l'hôte. Si le
programme hôte n'est pas en mesure de filtrer les
évènements qu'il a déjà envoyé, il
va de nouveau les renvoyés, et ainsi de suite, jusqu'à ce
que le programme (ou Windows) plante :-/
La solution: chaque évènement devant
être envoyé à l'hôte est inclu dans une trame
constituée d'un byte "start" et d'un byte "stop". Cette trame
sera prise en compte par le dernier Core avec le merger
désactivé. Seuls les évènements avec cette
trame seront renvoyés sur le MIDI Out, tous les autres seront
filtrés.
Voici le schéma des connectionS MIDI - notez qu'il n'y a qu'une route, qui passe "au travers" des Cores 1 à 3.
Le meilleur pour la fin: par ce moyen, des informations
autres que des évènements MIDI peuvent être
transmises sur la connection MIDI, informations qui seront
filtrées pour ne pas être en bout de chaîne
renvoyées vers le programme hôte - par exemple des
informations de type caractères pour LCD
(afin de n'utiliser qu'un seul LCD sur le Core 3 pour tous les Cores)
ou des messages de changement de Banques. De nouvelles
fonctionnalité qui peuvent être implémentées
trés facilement. :-)
PIC16F: le MIDIbox Link a été intégrés aux firmwares suivants: MIDIbox64, MIDIbox16e, MIDIbox MF.
PIC18F (MIOS): le MIDIbox Link est intégré au système d'exploitation. Voir aussi la description de la fonction MIOS_MIDI_MergerSet.
Le MIDIbox Link s'active via le menu de configuration MIDI, avec l'Editeur GUI ou part le script mk_syx .
Toutes les MIDIbox exceptée la dernière de la
chaîne doivent être réglées sur "MIDIbox
Link Forwarding Point", la dernière sur "MIDIbox Link Endpoint".
Si un gros système MIDI avec un menu de
navigation complet pour de multiples Cores doit être
réalisé, il est fortement recommandé d'utiliser le
MIOS, car ce système est beaucoup plus flexible, comparativement aux firmwares PIC16F. Voici une configuration possible:
Le premier Core fournit l'interface de navigation via
menus. Il envoit des informations de contrôles au dernier Core
qui gérent alors les évènements de sorties comme
les LCD, LEDs, LED digits. D'autre modules Core placés entre le
premier et le dernier peuvent aussi rajouter des messages de
contrôle sur le flux MIDI si nécessaire. Eventuellement,
le premier Core peut convertir des messages MIDI entrants en signaux de
contrôle et les renvoyer vers les autres Cores, par ex. pour
piloter la fonction "soft-overtake" des potars, pour déplacer
les faders motorisés, pour changer les patterns de LEDrings
directement.... Il peut également envoyer des messages pour
assigner des évènements MIDI aux
potars/faders/encodeurs. De cette manière, différents
setup peuvent être gérés par un seul module Core,
afin de simplifier la programmation.
Last update: 2015-09-24
Copyright © 1998-2015, Thorsten Klose. All rights reserved.
|