Se connecter
Se connecter
Créer un compte

ou

Sysex and sun

Par jemap le 09/11/2015 - (Tout public)

Sysex and sun

 

Comme il est dit dans la célèbre chanson, le sysex vous apporte du soleil, tout au moins un éclairage nouveau sur vos appareils midi.
Sysex est la contraction de "system exclusive", un message midi propre à un appareil midi et déterminé librement par son constructeur.


De quoi c'est fait, un sysex ?

"Pas de sysex sans midi" ; ce proverbe trop peu connu nous rappelle qu'un sysex est un message midi, donc une simple suite de chiffres entre 0 et 255.
Le premier chiffre est 240 pour prévenir d'un début de sysex.
Le dernier chiffre est 247 pour prévenir d'une fin de sysex.
Les valeurs entre les deux sont des chiffres compris entre 0 et 127.
En midi, tout message commence par un chiffre entre 128 et 255 pour annoncer un type de message, puis une suite de valeurs entre 0 et 127. Facile, sauf que les chiffres sont souvent exprimés en hexadécimal pour intimider le débutant.

Prenons par exemple le sysex de demande générale d'identification en hexadécimal : F0 7E 7F 06 01 F7
On constate :
- qu'il commence par F0 (240),
- qu'il finit par F7 (247),
- que les valeurs entre les deux ne dépassent pas 7F (127),
- que chaque chiffre est une paire de valeurs hexadécimales.
Un appareil midi qui reçoit cette demande doit en principe répondre par F0 7E 7F 06 02 ... F7, message sysex qui respecte les mêmes règles.


A quoi sert un sysex ?

Les sysex servent à contrôler les paramètres d'un appareil midi ou à regrouper tous les paramètres d'un son ou d'une configuration.
Le contrôle est bien plus étendu qu'avec les control changes midi.
Le sysex permet également de transférer les données internes de l'appareil (les paramètres d'un son par exemple, une banque de sons d'un synthétiseur, les affectations de messages midi d'un contrôleur) vers un autre instrument identique ou vers un support de stockage tel un fichier avec une extension ".syx" sur le disque dur de votre ordinateur.
Un fichier sysex préalablement sauvegardé pourra être rechargé et renvoyé vers votre instrument pour restaurer des paramètres.
Les constructeurs utilisent souvent des fichiers sysex pour mettre à jour l'OS des appareils midi, c'est à dire l'"operating system" qui gère les menus et fonctionnalités,  avec ajout de fonctions et corrections de bugs éventuels.
Des messages sysex peuvent être inclus dans un fichier midi avec une extension ".mid".


"A compter, tu réapprendras." disait Yoda à Luke lorsqu'il lui enseigna l'hexadécimal.

Les sysex sont majoritairement exprimés en hexadécimal, du latin "hexa" six, "déci" dix et "mal" fois ;
6 + 10 = 16 signes sont utilisés pour compter (on parle de "base 16" dans les milieux autorisés).
Il faut donc réapprendre à compter.

L'humain moyen est doté de dix doigts et compte assez rapidement en base 10 : on utilise 10 signes 0 1 2 3 4 5 6 7 8 9. Au-delà de 9, on prend le chiffre suivant disponible 1 et on ajoute la série 0 à 9, puis on prend 2 et on ajoute la série 0 à 9, etc. En ne prenant que 2 signes, on peut compter jusqu'à 99. On parle de décimal.

Un ordinateur est un très puissant calculateur : il sait compter jusqu'à 1 parce qu'il n'a qu'un doigt, virtuel, mais il compense par sa grande mémoire et sa grande vitesse. Pour simplifier, l'électricité qui parcourt un circuit d'ordinateur lui indique éteint = 0, allumé = 1.
Ces signes 0 et 1 sont des bits pour compter en base 2 ; on parle de binaire. Tout fichier ou message informatique est binaire.
Un appareil midi utilise ce langage informatique binaire et communique chaque chiffre en un paquet de 8 bits, soit un octet du latin "octo" huit. En anglais un octet est un "byte" à ne pas confondre avec "bit".
Comme pour le décimal, après 1 on prend le chiffre suivant disponible 1 et on ajoute la série 0 à 1 :
00000000 = 0
00000001 = 1
00000010 = 2
00000011 = 3
...
10000000 = 128
...
11111111 = 255
On constate que lorsque le premier bit le plus à gauche est 1, on dépasse 127 ce qui correspond en midi à un indicateur de type de message (de 128 à 255).
A ma connaissance, les manuels de Dave Smith, l'un des fondateurs du midi, expriment le midi et les sysex en binaire.
On passe du binaire au décimal en multipliant chaque bit par 2 à la puissance correspondant au rang du bit dans l'octet moins 1 :

Par exemple, 10101011 =
   1 x 2 puissance 7 (7 = 8ème rang -1)
+ 0 x 2 puissance 6
+ 1 x 2 puissance 5
+ 0 x 2 puissance 4
+ 1 x 2 puissance 3
+ 0 x 2 puissance 2
+ 1 x 2 puissance 1
+ 1 x 2 puissance 0 = 128 + 0 + 32 + 0 + 8 + 0 + 2 +1 = 173

 

Entre le décimal humain et le binaire électronique, les informaticiens ont inventé l'hexadécimal.
En hexadécimal on compte avec 16 signes 0 à 9 et A à F, avec A = 10, B=11, C=12, D=13, E=14 et F=15.
Comme pour les autres bases, après F on prend le premier chiffre disponible et on ajoute la série 0 à F :
0 1 2 3 4 5 6 7 8 9 A B C D E F   10 11 ... 1E 1F   20 21 ... 2E 2F ... ... FF

Pour ne pas confondre les valeurs lorsqu'un document mélange plusieurs bases comme cet article, ces bases ayant des signes en commun, on ajoute une lettre "b" pour binaire, "d" pour décimal, "h" pour hexadécimal : 11b (valeur 3) n'est pas 11d (valeur 11) et n'est pas 11h (valeur 17).

Les avantages de l'hexadécimal sont :
- il ne faut que deux signes pour compter jusqu'à FFh au lieu de trois en décimal et 8 en binaire (FFh = 255d = 11111111b) ;
- il permet aux informaticiens de protéger leur territoire des envahisseurs qui n'ont que dix doigts ;
- il permet de garder le sysex du côté obscur ;

L'hexadécimal ne sert qu'à représenter des chiffres dans les manuels ou sur un écran.
Tout sysex est constitué d'octets représentés en paires de signes hexadécimaux.
Une paire de signes hexadécimaux est un octet de 8 bits, c'est donc un simple chiffre entre 0 et 255.

Pour convertir l'hexadécimal en décimal, multipliez le premier signe par la base 16 et ajoutez le second chiffre :
35h = 3 x 16 + 5 = 53d
BDh = 11 (B) x 16 + 13 (D) = 189d
40h= 4 x 16 + 0 = 64d
7Fh = 7 x 16 + 15 (F) = 127d
F0h = 15 (F) x 16 + 0 = 240d
F7h = 15 (F) x 16 + 7 = 247d
En décimal, vous auriez fait 53d = 5 x 10 + 3

Pour passer du binaire à l'hexadécimal, on coupe l'octet en deux ; par exemple 01111010 devient 0111 et 1010 ; on convertit chaque groupe de 4 bits : 0+4+2+1=7d=7h et 8+0+2+0=10d=Ah ; on obtient 7Ah.

Pour votre culture, vous pouvez inventer votre propre base de comptage : par exemple en alphabétique on a 26 signes de A à Z ; en utilisant 2 signes, on peut compter de AA à ZZ.
Plus généralement, le nombre de signes disponibles à la puissance nombre de signes utilisés - 1 = chiffre maximum obtenu :
- base 10 puissance 2 - 1 = 99 avec 2 signes en décimal.
- base 2 puissance 8 - 1 = 255 avec 8 signes en binaire (un octet midi)
- base 16 puissance 2 - 1 = 255 avec 2 signes en hexadécimal (un octet midi)
- base 26 puissance 2 - 1 = 675 avec 2 signes alphabétiques, inutilisable en pratique.
Les men in black connaissent un extraterrestre qui a 36 doigts et compte avec 36 signes jusqu'à 36² - 1 avec 2 de ces signes, mais très lentement.


Qu'est-ce que ça dit un sysex ?

L'association internationale des constructeurs midi définit certaines structures de sysex comme notre demande d'identification F0 7E 7F 06 01 F7. On trouve dans les manuels des sysex qui gèrent les paramètres globaux, les configurations pour les contrôleurs, un son ou une banque de sons pour les instruments, la gestion unitaire de chaque paramètre.
Les constructeurs prévoient en principe les messages de requêtes (request en anglais), par exemple un sysex qui demande à un appareil de renvoyer un paramètre ou tous les paramètres ou une banque. A ces messages de requêtes reçus, un appareil midi renvoit un sysex de réponse (dump en anglais). On peut envoyer directement un message de sysex dump, sans avoir reçu de requête préalable, pour fixer une valeur de paramètre ou restaurer une banque de paramètres.

Un sysex peut parfois contenir des valeurs qui nécessitent un retraitement :
- certains paramètres nécessitent des valeurs supérieures à 7Fh ou 127d. Il faudra combiner plusieurs octets, en général un "ms" "most significant" ou le plus signifiant multiplié par 128  et additionné à un "ls" "less significant" ou le moins signifiant : par exemple, 01d (ms) x 128d + 60d (ls) = 178d (> 127d).
- certains octets peuvent contenir plusieurs valeurs ; par exemple, 75h est 01110101b en binaire, le premier 0 à gauche étant ignoré, on a sept valeurs 0 éteint/off ou 1 allumé/on pour des effets, un arpéggiateur, un glide, etc.
- des constructeurs peuvent organiser des paquets de valeurs convertis en une suite d'octets de sysex ; par exemple, 7 valeurs de 8 bits sont empaquetés ou rangés selon une disposition particulière dans 8 octets de 7 bits le premier bit à gauche étant toujours à zéro en midi.
Il faudra donc encoder/décoder les sysex pour retrouver les valeurs d'origine ; tests, concentration et cachets d'aspirine sont alors à prévoir.


Comment sont filtrés les sysex ?

Les sysex ne disposent pas de canal midi pour filtrer les messages.
Les en-têtes de sysex qui suivent F0 doivent en principe identifier l'appareil midi en rappelant des valeurs parmis celles renvoyées par la réponse F0 7E 7F 06 02 ... F7 à la requête F0 7E 7F 06 01 F7. Ainsi, les en-têtes garantissent qu'un sysex à destination d'un appareil n'ira pas perturber un autre appareil.

Tout sysex incomplet ou avec le mauvais en-tête ou contenant une valeur supérieure à 7F sera toujours ignoré.

Les constructeurs ajoutent souvent des contrôles supplémentaires :
- un ou plusieurs octets qui suivent un en-tête peuvent annoncer le nombre d'octets qui suivent, le sysex étant ignoré si le nombre annoncé ne correspond pas au décompte constaté en réception ;
- un "checksum" ou addition de contrôle, c'est à dire un octet placé à la fin, avant F7, fait la somme des valeurs d'octets qui précèdent en s'arrangeant pour rester inférieur à 7F ; le sysex est ignoré si le checksum annoncé dans le sysex envoyé n'est pas identique au checksum calculé par l'appareil qui reçoit le sysex ; parfois, le checksum est optionnel et peut être contourné par un octet général 7F.
- un octet d'ID ou numéro d'identification permet de distinguer les appareils d'un même modèle dans un réseau midi ;
comme pour le checksum, un ID égal à 7F est parfois accepté par tous les appareils, sans filtrer les messages ;
l'ID fait partie des informations renvoyées par la réponse F0 7E 7F 06 02 ... F7 à la requête F0 7E 7F 06 01 F7.

Les informations renvoyées par la requête F0 7E 7F 06 01 F7 ne sont pas normées et peuvent être difficiles à interpréter sans manuel.


Quelles sont les sources de sysex ?

- les manuels d'appareils midi ; les sysex sont souvent en fin de manuel ou dans un manuel à part.
- ce que votre appareil midi retransmet dans vos phases de tests, c'est à dire un "dump" après un "request" ;
- internet : de précieux renseignements sur les sysex ont été découverts par les internautes et ne figurent pas dans les manuels du constructeur.

De rares appareils ne bénéficient pas des sysex par choix du constructeur :
l'appareil midi ne répondra alors pas à la requête F0 7E 7F 06 01 F7 et aucune mention de sysex n'est faite dans les manuels.


Quels sont les outils pour communiquer en sysex ?

Vous aurez besoin au moins de l'un des outils suivants :
- un ou deux cables midi pour échanger des sysex entre appareils du même modèle.
- un cable usb pour échanger des sysex avec un ordinateur. Si votre appareil midi n'a pas de port usb, il faut le connecter par câbles midi à une interface midi qui elle disposera de l'usb/firewire/thunderbolt.
- quelques stan ou séquenceurs permettent d'enregistrer et renvoyer des sysex.
- midi-ox (Windows) ou snoize (Mac) sont des utilitaires qui gèrent les sysex.
- des applications comme Max for Live ou Synthmaker, désormais Flowstone en autonome ou inclus dans Imageline FL Studio.
- des librairies de développement d'applications informatiques comme jack ou winmm.dll.
- un gestionnaire de fichiers hexadécimal pour visualiser le contenu d'un fichier .syx ou .mid.
- un outil de conversions décimal/hexadécimal/binaire : une calculatrice scientifique ou un tableur.

 

  • alunel 43 posts au compteur
    alunel
    Nouvel·le AFfilié·e
    Posté le 29/03/2021 à 21:22:02
    Merci!
  • Jtho 165 1 post au compteur
    Jtho 165
    Nouvel·le AFfilié·e
    Posté le 18/03/2022 à 05:06:30
    Bravo, c'est Limpide et ça décrasse la mémoire..Merci !!!

Vous souhaitez réagir à cet tutoriel ?

Se connecter
Devenir membre
cookies
Nous utilisons les cookies !

Oui, Audiofanzine utilise des cookies. Et comme la dernière chose que nous voudrions serait de perturber votre alimentation avec des choses trop grasses ou trop sucrées, sachez que ces derniers sont fait maison avec des produits frais, bio, équitables et dans des justes proportions nutritives.
Ce que cela veut dire, c’est que les infos que nous y stockons ne visent qu’à simplifier votre usage du site comme à améliorer votre expérience sur nos pages et vous afficher des publicités personnalisées (en savoir plus).

Nous tenons à préciser qu’Audiofanzine n’a pas attendu qu’une loi nous y oblige pour respecter la vie privée de nos membres et visiteurs. Les cookies que nous utilisons ont en commun leur unique objectif qui est d’améliorer votre expérience utilisateur.

Tous nos cookies
Cookies non soumis à consentement
Il s'agit de cookies qui garantissent le bon fonctionnement du site Audiofanzine. Le site Web ne peut pas fonctionner correctement sans ces cookies. Exemples : cookies vous permettant de rester connecté de page en page ou de personnaliser votre utilisation du site (mode sombre ou filtres).
Analyse de l’audience (Google Analytics)
Nous utilisons Google Analytics afin de mieux comprendre l’utilisation que nos visiteurs font de notre site pour tenter de l’améliorer.
Publicités (Google Ads)
Ces informations nous permettent de vous afficher des publicités qui vous concernent grâce auxquelles Audiofanzine est financé. En décochant cette case vous aurez toujours des publicités mais elles risquent d’être moins intéressantes :) Nous utilisons Google Ad Manager pour diffuser une partie des publicités, des mécanismes intégrés à notre CMS pour le reste. Nous sommes susceptibles d’afficher des publicités provenant de notre propre plateforme, de Google Advertising Products ou encore de la régie Adform.
Marketing (Meta Pixel)

Sur nos sites web, nous utilisons le Meta Pixel. Le Meta Pixel est un pixel de remarketing mis en œuvre sur nos sites web qui nous permet de vous cibler directement via le Meta Network en diffusant des publicités aux visiteurs de nos sites web lorsqu’ils visitent les réseaux sociaux Facebook et Instagram. Les métapixels sont des extraits de code capables d’identifier votre type de navigateur via l’ID du navigateur - l’empreinte digitale individuelle de votre navigateur - et de reconnaître que vous avez visité nos sites web et ce que vous avez regardé exactement sur nos sites web. Lorsque vous visitez nos sites web, le pixel établit une connexion directe avec les serveurs de Meta. Meta est en mesure de vous identifier grâce à l’identifiant de votre navigateur, car celui-ci est lié à d’autres données vous concernant stockées par Meta sur votre compte d’utilisateur Facebook ou Instagram. Meta diffuse ensuite des publicités individualisées de notre part sur Facebook ou sur Instagram qui sont adaptées à vos besoins.

Nous ne sommes nous-mêmes pas en mesure de vous identifier personnellement via le pixel meta, car à part l’ID de votre navigateur, aucune autre donnée n’est stockée chez nous via le pixel.

Pour plus d’informations sur le Meta Pixel, les détails du traitement des données via ce service et la politique de confidentialité de Meta, veuillez consulter le site suivant Meta Privacy Policy - How Meta collects and uses user data pour Facebook et Meta Privacy Policy - How Meta collects and uses user data pour Instagram.

Meta Platforms Ireland Ltd. est une filiale de Meta Platforms, Inc. basée aux États-Unis. Il n’est pas exclu que vos données collectées par Facebook soient également transmises aux États-Unis.


Nous tenons à préciser qu’Audiofanzine n’a pas attendu qu’une loi nous y oblige pour respecter la vie privée de nos membres et visiteurs. Les cookies que nous utilisons ont en commun leur unique objectif qui est d’améliorer votre expérience utilisateur.

Tous nos cookies
Cookies non soumis à consentement

Il s’agit de cookies qui garantissent le bon fonctionnement du site Audiofanzine. Le site Web ne peut pas fonctionner correctement sans ces cookies. Exemples : cookies vous permettant de rester connecté de page en page ou de personnaliser votre utilisation du site (mode sombre ou filtres).

Analyse de l’audience (Google Analytics)

Nous utilisons Google Analytics afin de mieux comprendre l’utilisation que nos visiteurs font de notre site pour tenter de l’améliorer. Lorsque ce paramètre est activé, aucune information personnelle n’est envoyé à Google et les adresses IP sont anonymisées.

Publicités (Google Ads)

Ces informations nous permettent de vous afficher des publicités qui vous concernent grâce auxquelles Audiofanzine est financé. En décochant cette case vous aurez toujours des publicités mais elles risquent d’être moins intéressantes :) Nous utilisons Google Ad Manager pour diffuser une partie des publicités, des mécanismes intégrés à notre CMS pour le reste. Nous sommes susceptibles d’afficher des publicités provenant de notre propre plateforme, de Google Advertising Products ou encore de la régie Adform.

Marketing (Meta Pixel)

Sur nos sites web, nous utilisons le Meta Pixel. Le Meta Pixel est un pixel de remarketing mis en œuvre sur nos sites web qui nous permet de vous cibler directement via le Meta Network en diffusant des publicités aux visiteurs de nos sites web lorsqu’ils visitent les réseaux sociaux Facebook et Instagram. Les métapixels sont des extraits de code capables d’identifier votre type de navigateur via l’ID du navigateur - l’empreinte digitale individuelle de votre navigateur - et de reconnaître que vous avez visité nos sites web et ce que vous avez regardé exactement sur nos sites web. Lorsque vous visitez nos sites web, le pixel établit une connexion directe avec les serveurs de Meta. Meta est en mesure de vous identifier grâce à l’identifiant de votre navigateur, car celui-ci est lié à d’autres données vous concernant stockées par Meta sur votre compte d’utilisateur Facebook ou Instagram. Meta diffuse ensuite des publicités individualisées de notre part sur Facebook ou sur Instagram qui sont adaptées à vos besoins.

Nous ne sommes nous-mêmes pas en mesure de vous identifier personnellement via le pixel meta, car à part l’ID de votre navigateur, aucune autre donnée n’est stockée chez nous via le pixel.

Pour plus d’informations sur le Meta Pixel, les détails du traitement des données via ce service et la politique de confidentialité de Meta, veuillez consulter le site suivant Meta Privacy Policy - How Meta collects and uses user data pour Facebook et Meta Privacy Policy - How Meta collects and uses user data pour Instagram

Meta Platforms Ireland Ltd. est une filiale de Meta Platforms, Inc. basée aux États-Unis. Il n’est pas exclu que vos données collectées par Facebook soient également transmises aux États-Unis.


Vous pouvez trouver plus de détails sur la proctection des données dans la politique de confidentialité.
Vous trouverez également des informations sur la manière dont Google utilise les données à caractère personnel en suivant ce lien.