English Version French Version

MIDIbox SID "Control Surface Step B"

Date de Création: 2003

La Control Surface "Step B" pour la MIDIbox SID permet de contrôler 3 modules SID supplémentaires depuis l'unité de contrôle. Chaque module SID requiert un module CORE dédié, mais cette solution présente quelques avantages comparée au cablage MIDI en parallèle :

  • tous les paramètres sont accéssibles sans avoir besoin de passer par un ordinateur
  • tous les modules SIDs esclaves peuvent partager le même BankStick avec le SID maître (jusqu'à 8 BankSticks)
  • les changements de paramètres peuvent être routés en temps réel simultanément sur plusieurs SIDs  - une fonction essentielle pour créer des effets stéréo ou de gros sons mono.
  • des mode de jeu supplémentaires Super-Poly, Super-Arpeggiator, Split, Layer, Unisono deviennent possibles et seront implémentés dans les prochaines mises à jours.

Réalisation

Avant de parler de la partie matérielle, voici quelques informations sur le principe du SID Step B: les messages vers les modules SIDs esclaves transitent par l'interface MIDI classique du module CORE. Chaque module esclave requiert une Device ID différente dans la chaîne MIDI afin que le module maître puissent communiquer indépendamment avec chaque SID . La Device ID est indépendante du canal MIDI auquel le SID a été assigné, pour permettre une plus grande souplesse dans la configuration. Par exemple, si le même canal est sélectionné pour tous les SIDs, différents sons - joué depuis le même clavier - peuvent être répartis dans l'image stéréo. Si chaque SID utilise son propre canal, des timbres plus complexes peuvent réalisés (Note: l'implémentation PIC18F de la MIDIbox SID permet de répartir les voix sur plusieurs zones du clavier (split), ainsi jusqu'à 12 voix peuvent être superposées ou jouées indépendamment).

Comme mentionné plus haut, le maître partage le Patch stocké dans le BankStick avec les modules esclaves. Cela permet de réduire le coût et d'utiliser un même setup pour plusieur SIDs sans avoir à copier les Patchs d'un BanckStick vers l'autre.
Aucun BanckStick ne doit être installé sur les modules esclaves.

Les évènements MIDI entrants comme les Notes ou les CC sont renvoyés par le MIDI merger intégré vers les modules esclaves lorsque le mode "Link" est actif. Seuls des transferts uni-directionnels sont possibles, ce qui signifie que le maître ne peut recevoir de données des esclaves, et du coup ne connaît jamais l'état exact des ces derniers. Cette limitation ne pose aucun problème tant que les modules esclaves se comportent de la manière déterminée, ce qui est heureusement le cas dans ce simple système. Une connection bi-directionnelle (Point-to-Point, bus, orientée "paquet", ou chaîne circulaire) demanderait une partie matérielle supplémentaire et un protocole sophistiqué qui ne soit pas orienté "cible". Cette liaison uni-directionnelle ne présente que trois désavantages: le maître ne peut savoir si un module esclave est connecté ou non (c'est donc à l'utilisateur de le notifier) et - un problème plutôt relatif à la partie logicielle - lorsque le maître reçoit des messages CCs et SysEx destinés aux esclaves, il se contente de les renvoyer vers ces derniers sans en analyser le contenu. Cela peut induire des commandes incohérentes si l'utilisateur modifie un paramètre simultanément avec la Surface de Contrôle et depuis un ordinateur ou un autre contrôleur MIDI. Ce problème ne concerne pas les messages destinés au module maître. Trouver une solution à ce problème demanderait trop d'efforts et de complications, mais ce n'est finalement pas si gênant!
La troisième limitation concernent votre config MIDI : vu que le MIDI merger du module CORE renvoie  chaque évènement MIDI entrant sur le MIDI Out pour les esclaves, votre ordinateur aussi recevra ces données (boucle). Vous devez donc vous assurer que votre séquenceur ne renvoie pas de nouveau ces évènements (fonction MIDI thru). Notez que ce problème n'apparait pas lorsque le mode "LINK" est désactivé.

Hardware

Il est possible d'utiliser l'interface stepB sans aucun module SID esclave, ou bien avec un, deux ou trois SID esclaves... Trois étant le nombre maximal de SID esclaves possible.

Le module CORE maître doit être monté avec un PIC18F452, le firmware approprié est disponible à la page MIOS download . Les modules CORE esclaves peuvent eux être équipés aussi bien d'un PIC18F452 que d'un PIC16F877 - donc, s'il vous reste quelques vieux PIC16F, voici une bonne occasion de les recycler!

L'interfacage MIDI des modules maître et esclaves se fait via le port J11 des modules CORE. Avec cette connection digitale directe, il n'est plus nécessaire d'utiliser un optocoupleur côté esclave (-> Seul le port MIDI In du module CORE maître requiert un optocoupleur).
Ce diagramme montre les inter-connections MIDI nécessaires.

Une alimentation unique peut être partagée par tous les modules. Le système entier (4 modules COREs et 4 modules SIDs) draîne aux alentours de 600 mA. Notez que le 7805 du module CORE maître peut devenir trés chaud lorsqu'un LCD rétro-éclairé est utilisé. Ceci peut poser problème si un module SID est équipé d'un SID- 6581, car ce chip requiert du 12V pour travailler et du coup au moins 15V en entrée avant le 7812) - le 7805 va dissiper la différence de 10V en chaleur. Le moyen le plus simple de contourner le problème est d'utiliser un 7809, connecté aprés le pont-rectifieur du module CORE. Dans la mesure où les 78xx nécessite d'être alimentés en DC, il est recommandé de connecter ce régulateur de tension entre C9 (le condensateur 2200uF derrière le pont-rectifieur) du module SID ET C5 du module CORE, comme expliqué ici.

La meilleure solution consiste à récupérer l'alimentation d'origine du C64, car celle-ci délivre et du 5V DC pour le CORE et du 9V pour le module SID - Vous trouverez le schéma ici.

Vous pouvez également réaliser un PCB unique pour tout le circuit. Référez-vous aux questions de  Nebula dans cet article du forum.

Les sorties audio des SIDs peuvent au choix être cascadées (Audio Out SID1->Audio In SID2->Audio Out SID2->...) ou connectées en parallèle via des résistances de 10k , afin d'obtenir deux canaux mixant les quatres signaux des quatres SIDs . Notez qu'aucune de ces deux solutions n'est la meilleure. Un mixer actif, réalisé à base d'amplis Op (AOPs) serait l'idéal, mais demanderait une tension de polarisation (+/- 9V ou plus). La meilleure solution, la plus flexible, consiste à utiliser 4 canaux distincts sur une table de mix ou une carte son, un pour chaque SID, car ceci vous laisse la possibilité de jouer avec les panoramiques et de router indépendamment les 4 sorties dans des effets séparés.

La configuration multi-SID requiert au minimum la surface de contrôle minimum décrite ici. 7 boutons supplémentaires et quelques LEDs sont nécessaires pour une parfaite interaction avec les SIDs, un exemple de configuration est disponible ici: 2x20_enc_multi.pdf. Notez que l'assignation des pins DIN et DOUT peuvent être modifiée dans l'application MIOS (voir fichier d'en-tête "main.asm") - Si vous souhaiter économiser un module DOUTX1, il est possible d'utiliser les pins libres du port J5 (sur le CORE) pour piloter les LEDs, voir ce schéma. Dans ce cas le paramètre SR ID doit être changé de 1 vers 0 dans le fichier "cs_menu_io_tables.inc".

Préparation des modules COREs PIC18F cores

Step by step:

  • Nous partons du principe qu'à ce stade le bootstrap loader est chargé dans le PIC18F, et que le module maître à l'ID MIOS: 0x00, et les esclaves l'ID MIOS: 0x01, 0x02 et 0x03 - si vous avez oublié de définir l'ID correcte ID, utilisez l'application "change_id", disponible sur la page MIOS download, pour modifier l'en-tête ID. Dans ce cas vous devez vous assurer qu'un seul module esclave est connecté directement à votre PC, dans le cas contraire, tous les CORE chargés avec cette application se retrouverait avec la même ID!
  • Uploader le MIOS V1.7 ou supérieur dans le module maître en suivant les instructions de la page MIOS bootstrap.Utilisez toujours la dernière version disponible du MIOS!
  • Uploader l'application SID dans le module maître. Vous trouverez dans l'archive SID différents fichiers .syx, utilisez soit le fichier "setup_6581_with_cs.syx" ou "setup_8580_with_cs.syx", en fonction du type de chip SID installé dans vos modules.
  • Testez le maître avant d'aller plus loin! Vous pouvez vouys servir du clavier virtuel de MIDI-Ox pour jouer quelques notes. Notez que le canal MIDI #1 est sélectionné par défaut, mais si un BankStick est connecté, le canal peut être différent en fonction du dernier Setup sauvegardé. Le canal MIDI est affiché sur l'écran LCD, vérifiez donc!
  • Appuyez maintenant sur la touche LINK pour ouvrir la connection vers les modules esclaves. si vous ne disposez pas (encore) de ce boutons, envoyez F0 00 00 7E 40 00 0D 01 00 58 28 00 01 00 00 00 00 00 00 F7 au module maître - cette commande SysEx active le MIDI merger intégré.
  • Préparez le MIOS pour votre premier module esclave avec l'ID MIOS 0x01 - vous devez recompiler le fichier mios_v1_x.hex file (remplacez v1_x par la version actuelle, le fichier est situé dans le répertoire hex/ de l'archive MIOS) avec "perl hex2syx.pl mios_v1_x.hex -os_upload -device_id 0x01"
  • Uploadez le fichier généré mios_v1_x.syx .
  • Uploader l'application SID dans le module esclave. L'archive SID contient des fichiers .syx préparés pour chaque ID esclave.
  • Recommencez l'opération pour les autres modules esclaves (ID 0x02 et 0x03)
  • Testez les modules esclaves. Notez que le canal MIDI #1 est sélectionné par défaut, mais si un BankStick est connecté, le canal peut être différent en fonction du dernier Setup sauvegardé.

Préparation des modules esclaves PIC16F

Si des modules esclaves équipés de PIC16F sont connectés, vous devez changer leur ID matérielle manuellement. Le premier esclaves requiert l'ID 1, le second esclave l'ID 2, le troisième l'ID 3. Cette opération peut être faite avec MIDI-Ox, connectez simplement un seul core à votre PC et envoyez les commandes SysEx suivantes : F0 00 00 7E 46 [old device-number] 0D 03 00 [new device-number] F7.
Slave 1: F0 00 00 7E 46 00 0D 03 00 01 F7
Slave 2: F0 00 00 7E 46 00 0D 03 00 02 F7
Slave 3: F0 00 00 7E 46 00 0D 03 00 03 F7

Prise en Main

Référez-vous à l' Introduction sur l'unité de contrôle pour savoir comment naviguer dans les menus. Le tableau suivant liste les fonctions des boutons et LEDs supplémentaires.

SID1-4 Utilisez ces touches pour sélectionner le(s) SID(s).
Ils se comportent en bouton "radio" lorsqu'un seul est pressé, ce qui vous permet de passer rapidement d'un SID à l'autre. Il est également possible de sélectionner plusieurs SIDs simultanément en maintenant enfoncé l'un des bouton SID pendant que vous sélectionnez les suivants - dans ce cas les changements affecteront tous les SIDs sélectionnés. Here a video
Link Ce boutons active le MIDI merger, et de fait établi la connection vers les modules esclaves. Notez que cette fonction est désactivée au démarrage. Vous pouvez inversé ce comportement en mettant sur 1 l'entrée < #define CS_MENU_DEFAULT_LINK dans le fichier main.asm du firmware.
CC Cette fonction active le mode CC. Lorsque ce mode est actif, les changements effectués manuellement via l'unité de contrôle seront transmis comme évènements CC vers le port MIDI Out. Si vous avez connecté ce port au MIDI In de votre ordinateur, vous pouvez enregistrez vos mouvements et variations (par exemple les mouvements de filtre ou les slides du portamento)
Edit Lorsque le mode EDIT est actif, tous les changements de paramètres effectués seront automatiquement sauvegardé dans le patch actuellement sélectionné avant de basculer vers un autre patch. La LED clignote lentement afin de vous informez que des modifications ont été faites (et qu'il a donc quelque chose à sauvegarder).

Cela ne vous suffit toujours pas?!

...alors, allons un peu plus loin, par ici...



Last update: 2015-09-24

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