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.