[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! 😀