Tutoriel : Les SysEx du D10

Par thomasDX7 le 29/11/2013 - (Expert)

Voici un petit tuto pour ceux qui veulent utiliser les SysEx pour éditer les paramètres du D10 (mais aussi du D20 et du D110):

Je m'appuie sur le manuel du synthé (en anglais ou français c'est la même chose, ce n'est pas traduit).

Et un petit lien vers des infos utiles sur les SysEx.


1. Le message SysEx :

 

Tout à la fin, après le chapitre '7. Annexes', on trouve un document intitulé 'Roland Exclusive Messages' qui nous détaille les différents types de messages et leur utilisation.
On y lit que pour faire ce qui nous intéresse (modifier des paramètres de son), nous devons envoyer au D10 des messages SysEx de type DT1, et on trouve le tableau descriptif du format du message DT1.
J'ajoute au passage que pour le D10 Device ID=10H et Model ID=16H.
Le message va donc s'écrire sous la forme : F0 41 10 16 12 aa bb cc dd xx F7, avec aa bb cc qui est une adresse, dd qui est une valeur, et xx qui est un checksum.

 


2. Les adresses de paramètres :

 

Dans le manuel, après la section 'Roland Exclusive Messages', se trouve la section 'Implémentation de l'interface MIDI' ('MIDI implementation' dans la version en anglais).

 

Rendez-vous directement ici :

 

"6. PARAMETER ADDRESS MAP
Addresses are shown in 7-bit hexadecimal.

Address            MSB                                  LSB
Binary              0aaa aaaa      0bbb bbbb     0ccc cccc
7-bit hex.         AA                BB                 CC

The actual address of parameter in a block is the sum of the start address of each block and one or more offset address.
Parameters marked by *6_1 have two offset addresses : one in the table in *6_1 and the other one in the 'Common parameter' table or in the 'Partial parameter' table."

 


J'ai volontairement reproduit le paragraphe car il est d'une importance capitale, bien qu'il passe quasiment inaperçu!
En gros il nous explique que les adresses sont constituées d'une 'start address' et d'une ou deux 'offset address' qu'il faut additionner (pour obtenir l'adresse utilisable dans le message SysEx, la fameuse aaH bbH ccH…).
Il nous dit aussi que les adresses s'écrivent en '7-bit hexadécimal' : 0xxx xxxx.

Mais… qu'est ce que ça veut dire? Ça veut dire que les octets d'adresse (aaH, bbH et ccH) ont en fait un bit qui ne sert pas à transmettre des données, et dont la valeur est fixe et égale à 0.

Oui, très bien, mais qu'est ce que ça change?
Ça change tout!! Parce que quand on va additionner les deux ou trois adresses qu'on trouve dans les différents tableaux pour obtenir l'adresse utilisable dans un message SysEx, il va falloir tenir compte de ces foutus bits à 0 pour ne pas se retrouver avec des adresses qui ne fonctionnent pas!

 


3. Exemple :

 

Je veux donner au paramètre LOWER TONE / PARTIAL 1 / TVF CUTOFF FREQ la valeur 100.

 

Page suivante du manuel, on trouve dans les tableaux les infos suivantes :

 

"Start Address                Description
04 01 76                       Tone Temporary Area (Part 2/ Lower Tone)    *6_1"

 

Ce qui nous renvoie au tableau *6_1 Tone Temporary Area , où l'on trouve :

"Offset address               Description
00 00 0E                       Partial parameter (for partial 1)                    *6_2"

 

Ce qui nous renvoie au tableau *6_2 Partial parameter, où l'on trouve :

"Offset address               Description
00 17                           0aaa aaaa         TVF CUTOFF FREQ         0-100"

 

 

4. Calcul de l'adresse du paramètre :

 

On a donc trois adresses hexadécimales à additionner :
La start adress : 04 00 00
La première offset address : 00 00 0E
La deuxième offset address : 00 17
Mais attention! Il faut absolument tenir compte du fait que tout est codé en '7 bits utiles' et que le bit le plus à gauche ne peut pas prendre d'autre valeur que 0.


On commence donc par convertir en binaire les adresses hexadécimales :

04 01 76     =    0000 0100 0000 0001 0111 0110
00 00 0E     =    0000 0000 0000 0000 0000 1110
(00) 00 17   =    0000 0000 0000 0000 0001 0111


Puis on additionne :
(Additionner du binaire, il faut savoir que 1+1=10, 1+1+1 =11, etc…)

   0000 0100 0000 0001 0111 0110
+ 0000 0000 0000 0000 0000 1110
+ 0000 0000 0000 0000 0001 0111

 

Comme une addition normale on commence par la droite :
Bit 0 : 0+0+1=1
Bit 1 : 1+1+1=11, j'écris 1 et je retiens 1
Bit 2 : 1+1+1(+1, la retenue)=100, j'écris 0 et je retiens 10
Bit 3 : 0+1+0(+10)=11 soit 1 avec retenue 1
Bit 4 : 1+0+1(+1)=11 soit 1 avec retenue 1
Bit 5 : 1+0+0(+1)=10 soit 0 avec retenue 1
Bit 6 : 1+0+0(+1)=10 soit 0 avec retenue 1
Bit 7 : 0+0+0(+1)=1

 

Et là on se rend compte que ce n'est pas possible : le bit 7 doit être à 0. Sinon le synthé ne va pas comprendre le SysEx.
Il faut donc mettre le bit 7 à 0 quelle que soit sa valeur, et si besoin, décaler la retenue dans l'octet suivant.
Si l'on avait simplement pris additionné les adresses en hexadécimal on n'aurait pas tenu compte de ce bit de statut et la valeur obtenue serait inutilisable: 76H+0EH+17H = 9BH, alors que le résultat de notre addition donne en binaire 00011011, soit 1BH.

 

On continue à additionner nos bits et le Bit 0 du deuxième octet accueille la retenue qu'on a décalée d'un rang :
1+0+0(+1)=0
0+0+0(+1)=1
etc…

04 01 76 + 00 00 0E + (00) 00 17 ne nous donne pas l'adresse 04 01 9B comme on aurait pu le penser, mais bien 04 02 1B.

 

 

5. Ecriture du SysEx :

 

On voulait donner à la CUTOFF FREQ du PARTIAL 1 du LOWER TONE la valeur max : 100, soit 64 en hexadécimal.
Voici donc le sysex presque définitif, avec adresse et valeur :
F0 41 10 16 12 04 02 1B 64 xx F7

Il ne reste qu'à calculer le cheksum. J'utilise le calculateur de cheksum et j'obtiens mon SysEx définitif :

F0 41 10 16 12 04 01 9B 64 7B F7

Y'a plus qu'à balancer ce SysEx au D10 pour voir que la valeur du cutoff concernée change bien à la réception et voilà, le tour est joué!

 

Perso j'ai utilisé ça pour paramétrer une surface de contrôle BCR 2000 pour avoir plein de potards à tourner plutôt qu'un pauvre slide et des tas de menus.
Il suffit alors de paramétrer la BCR pour qu'elle mette une valeur variable à la place de l'octet dd et qu'elle calcule automatiquement le checksum xx… et roule!

 


Merci de m'avoir lu et bon courage!

 

 

P.S. : vous pouvez télécharger ici la liste complète des adresses SysEx du D10, les paramètres pré-enregistrés du D10 pour l'éditeur BC-Manager, ainsi que le preset que je me suis bricolé pour pouvoir éditer les Tones du D10 avec ma BCR2000 (avec les templates qui correspondent en PDF, à imprimer)

 

  • J'aime
  • Tweet
  • Partager
  • Mail