Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/06/2011, à 04:15

Hibou57

[Résolu] Messages et fichiers MIDI : paradoxe avec le format des SysEx

Bonsoir,

Remarque préalable : ce sujet s’adresse aux personnes connaissant le format des messages MIDI et des fichiers MIDI, sinon pour les autres, ça ne va être qu’une prise de tête inutile.



Tout d’abord, les deux références que j’utilise.

Pour le format des fichiers MIDI : Standard MIDI-File Format Spec. 1.1 (PDF).
Pour le format des messages MIDI : The MIDI Specification.

Je cale avec les messages SysEx, dont le format me parait contradictoire d’une spécification à l’autre.

Tout d’abord, le premier documents, à propos du format des fichiers MIDI, présente le format des messages SysEx comme suit :

F0 <length> <bytes to be transmitted after F0>

Et indique “The length is stored as a variable-length quantity.”.

Le second document parle lui aussi des message SysEx, et dit

Second document a écrit :

There can be any number of data bytes inbetween the initial 0xF0 and the final 0xF7. The most important is the first data byte (after the 0xF0), which should be a Manufacturer's ID.

Deux contradiction ici : le second parle d'un Manufacturer ID à l'endroit ou l'autre parle d'un paramètre Length. On ne peut pas avoir deux choses différentes au même endroit.

Puis une seconde contradiction : le premier document dit que le paramètre Length est encodé comme un Variable Length Quantity, et il se trouve que cet encodage n’est pas compatible avec l’encodage des données dans un message MIDI, dont tous les bit #8 doivent être à zéro. En effet, l’encodage Variable Length Quantity, qui est normalement utilisé pour les Delta Time des fichiers MIDI (ça ne fait pas partie des message MIDI eux-même, ça ne se trouve que dans les fichiers MIDI), donne la valeur 1 au 8-ième bit de chaque octet (ce qui le ferait confondre avec l’octet de statu d’un message MIDI), sauf pour le dernier, qui est à zéro.

Je serais donc tenté de dire que les message SysEx, soit ne peuvent pas contenir de paramètre Length encodé comme indiqué, ou alors soit que ce paramètre Length ne peut pas faire plus de 1 octet, auquel cas, cet unique octet a son bit #8 à zéro, ce qui le rend compatible avec l’encodage prévu pour les données des messages MIDI (dans ce cas alors, la longueur est limitée à l’intervalle 0..127).

Mais cela ne résous encore pas le problème du champ Manufacturer ID, que le deuxième document donne en lieu et place du champ Length, qu’il n’introduit pas du tout.

Ou alors les messages SysEx sont-ils encodés différemment selon qu’ils apparaissent dans un fichier MIDI ou dans un flux MIDI issue d’un périphérique MIDI ?

Dernière modification par Hibou57 (Le 11/06/2011, à 09:03)


Hajimemashteeeee… \(^o^)/ Tachikoma desu (^_^;)
Le saviez‑vous : le j’m’en foutisme est la cause de la plupart des fléaux du monde contemporain.
Mangez des standards : un grand bol de Standard tous les matins, et vous débutez la journée en pleine forme !
bulleforum.net — Forum de discussions, La Bulle (papotage de la vie courante ou choses trop sérieuses)

Hors ligne

#2 Le 11/06/2011, à 09:02

Hibou57

Re : [Résolu] Messages et fichiers MIDI : paradoxe avec le format des SysEx

J'ai peut-être une réponse. Dans Google Books, j'ai trouvé ceci : SysEx Messages in SMF.

Le titre de la section est déjà intéressant, par le fait qu’il souligne bien qu’il s’agit des SysEx, dans les fichiers MIDI en particulier, et voici ce qui en est dit :

In addition to delta time, there is another difference between the format of a regular SysEx message and the one stored as an SFM track event […] a variable-length value representing the length (in bytes) of the data to follow in inserted immediately after the FO byte […]

.

Ça répond à mes doutes et interrogations, en confirmant que les messages SysEx, ont bien un format particulier quand ils apparaissent dans les fichiers MIDI.

Mais c’est extrait d’un livre papier, en partie consultable sur Google Books. J’aurais préféré une référence plus formelle. Si quelqu’un(e) en connait une, I would welcome a link.

-- EDIT -- En fait, en lisant entre les lignes du premier document,  “Standard MIDI-File Format Spec. 1.1”, on peut également voir une réponse. Il dit :

For instance, the transmitted message F0 43 12 00 07 F7 would
be stored in a MIDI File as F0 05 43 12 00 07 F7.

Une différence est explicitement (mais trop discrètement) faite là aussi, entre un SysEx transmis entre des périphériques MIDI, et un SysEx stocké dans un fichier MIDI.

Bon, c’est complet, plus aucun doute maintenant.

Dernière modification par Hibou57 (Le 11/06/2011, à 10:37)


Hajimemashteeeee… \(^o^)/ Tachikoma desu (^_^;)
Le saviez‑vous : le j’m’en foutisme est la cause de la plupart des fléaux du monde contemporain.
Mangez des standards : un grand bol de Standard tous les matins, et vous débutez la journée en pleine forme !
bulleforum.net — Forum de discussions, La Bulle (papotage de la vie courante ou choses trop sérieuses)

Hors ligne