[MCP] Un peu de théorie avec les SysEx

Entrons dans le vif du sujet: le détail du protocole!

Comme annoncé dans mon article précédent, le controleur et le DAW (STAN en français) dialoguent entre eux via MIDI, et plus particulièrement via des messages de controle MIDI ou des SysEx.

Si les données transmises ou reçues font plus que 3 bytes, alors le protocole utlisera des SysEx, sinon des messages MIDI «standards» seront utilisés.

Tout les bytes transmis sont noté en utilisant le format Hexadécimal (0xF0, 0x6C par exemple). Toutes les infos que je présente ici sont dispo en anglais, et peut-être un peu moins détaillée dans le Manuel LogicControl

Les messages SysEx

Ceux-ci commencent par un 0xF0 indiquant un début de trame.

La trame commence par un header de 5 bytes comme par exemple F0 00 00 66 00 :

  • F0 : début de la trame SysEx,
  • 00 00 66 : id du fabricant (mackie)
  • 00 : id du produit (je suppose)

Dans la suite de cet article, je simplifierai ce header en <hdr>

Afficher des données sur l’écran LCD

  • Tous les messages concernant le LCD commencent par le <hdr> suivi du byte 0x12.
  • Le byte suivant détermine la position à laquelle le message devra être affiché.
  • Le texte du message arrive ensuite (généralement 6 caractères)
  • Enfin, le message SysEx termine avec le byte 0xF7.

 

La surface MCU possède 8 pistes à controler et un écran LCD sur lequel il est possible d’afficher 2 lignes de 56 caractères. Un rapide calcul nous permet de determiner que chaque piste nous permettra d’afficher 7 caractères.

Chaque position de caractère est identifié par une valeur Hexa:

  • allant de 0x00 à 0x37 (soit 56 valeurs) pour la première ligne,
  • et de 0x38 à 0x6F pour la seconde ligne.

Soit une représentation:

lcd_representation
Cliquer pour agrandir

 

Prenons l’exemple d’un SysEx:

F0 00 00 66 00 12 38 ***4C 35 30 52 35 30 20*** FC
 <hdr>          |   \_position                    \_end of SysEx
           LCD message

 

  • 5 chars : F0 00 00 66 00  qui correspond à l’identifiant du device,
  • 12 : qui indique le début du message LCD
  • Puis : 38 4C 35 31 52 34 39 20 8
  • Donc: à partir de l’offset 38 (2e ligne, 1er caractère) on doit donc afficher :
SysEx 4C 35 31 52 34 39 20
Affiche L 5 1 R 4 9 (espace)

 

Si vous suivez jusque là, on a donc un affichage de Panoramique (PAN)  sur la 2e ligne, 1er afficheur : L51 R49  (j’ai du me rater dans le DAW pour faire un PAN pareil icon_redface.gif )

 

La suite la prochaine fois avec un peu de mise en pratique! 😀

[MCP] Introduction au protocole Mackie Control

Retour inatendu sur le blog, cet article est le début d’une petite série concernant la réalisation d’une surface de contrôle pour DAW via le protocole Mackie Control, largement utilisé dans le milieu audionumérique.

Un peu d’histoire (quelque peu simplifiée, je vous l’accorde):

Quelques années en arrière, et encore maintenant, dans un studio d’enregistrement/mixage/mastering on avait une grosse console analogique au centre et des périphériques audio (analogiques toujours) reliés à celle-ci pour appliquer des effets et autres traitements. Les puristes diront que c’est la seule configuration viable, et la seule qui retranscrit le vrai son. Les principaux problèmes de cette configuration, c’est son prix (la somme du matériel contenu dans un studio pro peut facilement dépasser les 100 000€), son encombrement et son poids. Autre inconvénient de taille, c’est que si on veut pouvoir retravailler un morceau dans le futur, il faut avoir pris soin de noter tous les réglages pour tous les équipements utilisés (je vous laisse imaginer un projet avec plus de 40 pistes, avec chacune plusieurs processeurs d’effets: compresseur, reverbe, echo et j’en passe…)

MSR Studio
Le MSR Studio à New York

 

Avec l’arrivée des ordinateurs, on a résolu beaucoup de ces problèmes, tout peut être réalisé numériquement dans le DAW, ce qui permet bien souvent d’ajouter un nombre illimité de pistes et de traitements audio. Le gain de place est énorme, il suffit d’une carte son (avec suffisamment d’entrées pour les enregistrements multipistes comme pour la batterie par exemple), d’un système d’écoute et d’un ordinateur. Il est également très facile de rappeler une session de travail.

Le principal inconvénient à la configuration dite « in the box », c’est qu’il faut tout faire à la souris, ou avec des raccourcis claviers. Quand on doit faire des automations (changements de paramètres en temps réel) ou modifier le volume de plusieurs pistes à la fois, c’est pas pratique.

Pour palier à ça, les ingénieurs on créé des surfaces de contrôle, qui ressemblent grandement à des tables de mixages traditionnelles, mais sans le traitement audio.

Une surface de contrôle permet juste d’envoyer la position et la valeur des paramètres au logiciel et inversement si les potentiomètres de celle-ci sont motorisés.

SSL Nucleus
La surface de contrôle SSL Nucleus

Le protocole en question:

La communication entre l’ordinateur et la surface de contrôle se fait via MIDI, qui est basiquement de la communication série un peu boostée.

Le MIDI étant assez limité dans sa version de base, le constructeur Mackie a créé un protocole pour faire passer des informations plus « concrètes » (comme du texte, des états de voyants, des actions permettant de contrôler en détail les logiciels de musique) entre ses surfaces de contrôle et le DAW. C’est ainsi qu’est né le protocole Mackie Contrôle.

Mackie Control
Mackie Control

Le protocole utilise des messages MIDI standards, tels que le Control Change (CC), NoteOn, NoteOff, AfterTouch etc.  Mais aussi des messages SysEx qui embarquent des messages beaucoup plus gros.

Le protocole est propriétaire, mais à la suite d’une « erreur » de la part d’Apple, qui a documenté la surface de contrôle Mackie HUI pour son OS en y joignant une annexe avec la description MIDI détaillée, le protocole a fuité, et beaucoup de constructeurs ont commencés à le réutiliser pour leur matériel. C’est alors devenu une référence pour beaucoup de fabricants de surfaces de contrôle actuelles, allant des moins chères (Behringer entre autres), aux moins abordables (Avid, SSL nucleus).

 

Je m’arrête là pour cette introduction, dans le prochain article, on jettera un œil aux données qui transitent via ce protocole!