Fichier MIDI hexa -> décimal ?
- 56 réponses
- 4 participants
- 2 849 vues
- 5 followers

Nicolas Massot

Je dois modifier un fichier MIDI d'un morceau joué par orgue à tuyaux doté d'un enregistreur MIDI.
J'ai la notice des contrôleurs utilisés dans l'orgue mais quand j'ouvre le fichier avec cubase, il ne m'affiche pas les mêmes numéros de contrôleurs que ceux de la notice.
Exemple : pour changer de registre de l'orgue, comme pour les sons des synthés, on utilise program change.
Sur un synthé général MIDI, program change 0 = piano etc...
Sur l'orgue, j'ai par exemple
Registre n°1 ON = program change - canal 8 - controler 00
Registre n°1 OFF = program change - canal 8 - controler 01
ou
Registre n°x ON = program change - canal 8 - controler 0A
Registre n°x OFF = program change - canal 8 - controler 0B
Sauf que dans cubase, cela n'apparaît pas de la même façon, on a plutôt des chose du style
Program Change - donnée 1 = 2 - donnée 2 = 0 - donnée 3 = (vide) - voie = 8
J'ai donc trois colonnes de données et aucune ne correspond à celles de la notice.
Est-ce que c'est parce que j'ouvre le fichier MIDI avec un logiciel qui n'est pas adéquat ?
De plus, j'ai plein de contrôleurs qui apparaissent et qui ne correspondent pas à ceux de la notice.
Quelqu'un a une idée pour la correspondance des deux langages, s'ils sont toutefois différents ?
J'ai essayé d'ouvrir avec un éditeur hexa mais j'ai un flow de chiffres incompréhensibles.
Merci
[ Dernière édition du message le 03/04/2017 à 18:04:15 ]

Nicolas Massot

Si ça peut vous aider, voici la notice du lecteur/enregistreur MIDI de l'orgue. Il s'agit du VISCOUNT RD-70
https://www.manualslib.com/manual/908684/Viscount-Rd-70.html

Rémy M. (chimimic)

Donc le contenu du fichier sysex n'influe pas du tout sur les banques de son ou sur les paramètres de l'orgue etc ?
A priori non.
Le principal semble être dans le fichier .MID.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

Nicolas Massot


Rémy M. (chimimic)

Il faut essayer.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

Nicolas Massot

RD70 est le modèle de l'enregistreur MIDI
_RD_0006 est le nom du fichier MIDI
le ≡1 du début et le ≈ de la fin, c'est quoi?
"≡1 RD70 Recorded _RD_0006≈", est-ce juste une information pour qu'une personne tombant un jour sur le fichier MIDI sache par quelle machine il a été enregistré (donc juste une signature de la machine à titre d'information pour l'utilisateur) ou est-ce un code pour charger une configuration ou un langage propre (infos indispensables pour la lecture du fichier) ?
J'habite à 100km de l'orgue. J'irai essayer la semaine prochaine. J'espère que cela fonctionne sinon ça va me revenir cher l'essai. Pour ne rien arranger, le lecteur MIDI (des années 90) utilise des disquettes 1.44. J'ai dû en acheter un en USB.
[ Dernière édition du message le 06/04/2017 à 18:47:00 ]

Nicolas Massot

Aurais-tu un soft pour ouvrir les fichiers MIDI en hexa.
L'entreprise me dit que les séquenceurs tels que CUBASE peuvent se planter dans l'affichage des données, celles-ci étant parfois en hexa mais aussi en gray.
J'ai effectivement le même control change et les même valeurs pour l'activation d'un registre et pour la pédale d'expression, ce qui n'est pas du tout possible. Il y a erreur dans l'affichage des control change et des valeurs.

Rémy M. (chimimic)

oui, j'en ai développé un il y a plus de 10 ans, mais on doit surement trouver mieux maintenant

Editeurs hexa
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

Nicolas Massot

Ce qu'il faudrait c'est avoir des colonnes avec une grille temporelle et le nom de l'évènement en lettre (pour se repérer) et le code natif.
Car si je veux trouver "le controleur et sa valeur" de l'évènement qui survient mesure 107.04.04.020, je le trouve comment dans la suite de milliers de chiffres de l'éditeur hexa ?

Nicolas Massot

Comment le logiciel qui va décrypter les suites d'octets va faire pour savoir s'il s'agit d'un évènement program change (2 octets) ou control change (3 octets) puisque rien ne sépare les suites d'octets.
Ex : imaginons 3 évènements de 2 octets. Suivant la valeur des octets, le logiciel ne peut-il pas se tromper et penser qu'il s'agit de 2 évènements de 3 octets ?
[ Dernière édition du message le 25/04/2017 à 01:18:40 ]

Rémy M. (chimimic)

j'ai déjà un éditeur hexa mais ça m'affiche des centaines de lignes. Comment se repérer dans cet amas de milliers de chiffres? si je veux trouver "le controleur et sa valeur" de l'évènement qui survient mesure 107.04.04.020, je le trouve comment dans la suite de milliers de chiffres de l'éditeur hexa ?
Il est tout simplement impossible de s'y retrouver si on ne connait pas la structure du fichier.
Ce qu'il faudrait c'est avoir des colonnes avec une grille temporelle et le nom de l'évènement en lettre (pour se repérer) et le code natif.
Eh bien là on tombe dans le développement sur mesure

une autre question : un évènement MIDI peut comporter 1, 2 ou 3 octets (ou plus d'après ce que tu as écrit). Comment le logiciel qui va décrypter les suites d'octets va faire pour savoir s'il s'agit d'un évènement program change (2 octets) ou control change (3 octets) puisque rien ne sépare les suites d'octets.
La norme MIDI décrit cela de façon claire, toute confusion est impossible. Chaque octet de début d'évènement (ou octet d'évènement si le message MIDI ne comporte qu'un seul octet) peut prendre une valeur que les autres octets ne peuvent prendre.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

Nicolas Massot

Je connais la structure musicale du fichier MIDI mais comment me repérer ?

Rémy M. (chimimic)

Donc il n'y a aucun logiciel/développeur qui ouvre les fichiers MIDI en code pur, tout en séparant visuellement les évènements ? Ou bien un logiciel avec l'éditeur en liste des évènements MIDI et quand on clique sur un des évènements, on obtient le code en hexa ?
Cela peut bien sûr se faire, je l'ai fait (en partie) avec mon logiciel MidiFileAnalyser, qui extrait des infos MIDI pour les présenter sous une forme particulière.
Au risque de me répéter, ton besoin semble nécessiter un développement sur mesure...
Je connais la structure musicale du fichier MIDI mais comment me repérer ?
En analysant la structure du fichier.
C'est un peu long quand on débute, mais tu peux y arriver.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

Nicolas Massot

La pédale d'expression est encodée sur 7 bit. Elle possède 30 positions visibles sur un écran digital. Et si la pédale avait été encodé en code gray ? Dans ce cas, comment visualiser le codage ? Cubase et l'éditeur hexa me donnent des valeurs complètement farfelues.

Rémy M. (chimimic)

Oui, et comme indiqué dans le descriptif, mon soft analyse les fichiers MIDI standard pour établir des statistiques. Mais je pourrais faire d'autres choses que des statistiques avec les données extraites...
Quelque soit le format utilisé pour coder ou stocker une info, il faut connaître le format en question pour savoir comment extraire l'info...
Cubase et l'éditeur hexa me donnent des valeurs complètement farfelues.
Que l'éditeur hexa te donne des valeurs farfelues m'étonne beaucoup...
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
[ Dernière édition du message le 28/04/2017 à 17:57:48 ]

Nicolas Massot

Je possède deux versions de cubase (SX et 5) et un éditeur hexa avec lesquelles j'ai ouvert le fichier MIDI.
- cubase SX me donne un fichier totalement vide sans aucun évènement MIDI
- Cubase 5 et l'éditeur hexa me donne ceci :
Control Change 7, canal 1, valeurs 0 - 60 - 56 - 4 - 24 - 36 - 32 - 28 - 16 - 44 - 40 - 20 - 8 - 52 - 48 - 12
Trois choses me chagrinent :
- pourquoi j'obtiens 16 valeurs alors qu'il y a 30 positions d'ouverture de la pédale.
- la logique voudrait que la pédale d'expression parte de 0 (position fermée) à 60 (position ouverte), or, ici les valeurs sont illogiques.
- pourquoi cubase sx qui reconnaît pourtant dans d'autres fichiers MIDI le Control change 7, ne m'affiche aucune donnée MIDI. Dans les autres fichiers MIDI utilisant également la pédale d'expression, toutes les données sont retranscrites (notes, program change, control change) et à chaque fois, à l'endroit où la pédale d'expression est utilisée, il n'y a rien dans le fichier MIDI.
Je crois donc que cubase 5 et l'éditeur hexa transcrivent le contenu du fichier MIDI en pensant qu'il s'agit d'un control change 7 avec les valeurs décrites plus haut, mais qu'en réalité il n'en est rien, et c'est bien là le mystère.
Une preuve :
- lorsque je lis le fichier MIDI en question sur l'orgue, la pédale d'expression s'ouvre de la même manière que lorsqu'elle a été enregistrée. Par contre, j'ai crée un fichier MIDI de toute pièce en écrivant manuellement exactement les mêmes évènements : et bien, en lecture, il ne se passe rien, la pédale d'expression ne bouge pas.
Donc, il ne s'agit pas d'un vrai control change 7
[ Dernière édition du message le 29/04/2017 à 23:11:47 ]

Rémy M. (chimimic)

Je crois donc que cubase 5 et l'éditeur hexa transcrivent le contenu du fichier MIDI en pensant qu'il s'agit d'un control change 7 avec les valeurs décrites plus haut, mais qu'en réalité il n'en est rien.
Un éditeur hexa ne peut pas se tromper, puisqu'il n'interprète rien. Il ne fait qu'afficher ce qu'il lit.
Cubase 5 est peut-être perdu, mais si les données ne sont pas aux normes MIDI, on ne peut pas lui en vouloir.
lorsque je lis le fichier MIDI en question sur l'orgue, la pédale d'expression s'ouvre de la même manière que lorsqu'elle a été enregistrée. Par contre, j'ai crée un fichier MIDI de toute pièce en écrivant manuellement exactement les mêmes évènements : et bien, en lecture, il ne se passe rien, la pédale d'expression ne bouge pas. Donc, il ne s'agit pas d'un vrai control change 7
Ce test semble confirmer que les données correspondant aux mouvements de la pédale d'expression sont sauvegardées dans un "format" autre qu'un simple Control Change 7/39 (volume) ou 11/43 (expression)...
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

Nicolas Massot

Un éditeur hexa ne peut pas se tromper, puisqu'il n'interprète rien. Il ne fait qu'afficher ce qu'il lit.
Cubase 5 est peut-être perdu, mais si les données ne sont pas aux normes MIDI, on ne peut pas lui en vouloir.)
Je comprends bien, mais ce que je veux dire par "tromper" c'est que si, par exemple, le code "original" est du code gray, l'éditeur hexa va afficher des données interprétées comme du binaire, donc faussées, dans le sens où elles ne correspondent à la réalité programmée (code gray).
00000100 en binaire = 04 en hexa
00000100 en code gray = 07 en hexa
Ce test semble confirmer que les données correspondant aux mouvements de la pédale d'expression sont sauvegardées dans un "format" autre qu'un simple Control Change 7/39 (volume) ou 11/43 (expression)...
C'est exactement ce que je voulais entendre. Mais alors, comment savoir quel est ce "format" ? Comment retrouver le langage natif ?
Je pensais que le langage MIDI répondait à une norme ou format bien précis. Peut-on programmer autre chose, dans un autre langage pour envoyer des informations MIDI ?
[ Dernière édition du message le 30/04/2017 à 10:09:00 ]

Rémy M. (chimimic)

Si certaines données ont été stockées dans un arrangement binaire différent de l'hexa standard (code Gray, BCD ou autre), c'était sans doute pour simplifier la vie de l'électronicien qui a mis au point le système électronique. Tu peux retrouver les valeurs d'origine en traduisant / convertissant chaque octet qui a besoin de l'être. Si le fabricant peut (accepte de) t'en dire plus sur la méthode employée, tant mieux. Sinon ça va te prendre plus de temps.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

Nicolas Massot


Rémy M. (chimimic)

Pour créer mon fichier MIDI, je suis obligé d'écrire en hexa
Pour un fichier MIDI standard, oui.
Mais dans ton cas (fichier MIDI apparemment pas standard) il faudrait peut-être utiliser le codage prévu par le concepteur. Tu as l'avantage d'avoir créé un fichier "MIDI" ne contenant que des infos "pédale d'expression". Utilise-le comme élément de comparaison.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

Nicolas Massot


Rémy M. (chimimic)

J'y jetterai un oeil.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

Nicolas Massot

https://www.dropbox.com/s/rgewh3vkblhwqiy/_RD_0023.MID?dl=0
Je précise que dans ce fichier, je n'ai joué aucune note. J'ai simplement ouvert lentement la pédale.
[ Dernière édition du message le 01/05/2017 à 00:37:33 ]

alex.d.

Je m'immisce dans la conversation. Ce cas m'intrigue

Dans ce fichier MIDI, on a d'abord un message System Exclusive, avec un ID de 0x31, correspondant à "Intercontinental Electronics", qui semble être utilisé en pratique par Viscount (ont-ils racheté la société ?). C'est cohérent, Viscount fait des orgues MIDIfiés et des mécanismes de MIDIfication d'orgues. Je ne sais pas si on peut déduire le modèle exact du boîtier MIDI à partir de ce sysex.
Par la suite, on a les valeurs suivantes sur le CC #7 :
(décimal, et traduction en binaire)
60 0011 1100
56 0011 1000
04 0000 0100
24 0001 1000
36 0010 0100
32 0010 0000
28 0001 1100
16 0001 0000
44 0010 1100
40 0010 1000
20 0001 0100
08 0000 1000
52 0011 0100
48 0011 0000
12 0000 1100
Ça ne semble pas être la valeur littérale (pas proportionnelle). On remarque que les deux premiers bits sont toujours à 0 (pour le premier bit, c'est imposé par la spec MIDI), et aussi les deux derniers. Donc en pratique, seuls les 4 bits centraux sont utilisés, soit 16 valeurs. Ça ne ressemble pas à un code de Gray.
Juste une idée, comme ça, il faudrait tenter d'isoler ces 4 bits du milieux et voir ce que ça donne en décimal en prenant juste ces bits (éventuellement en ordre inverse, d'après le schéma qui semble se dessiner).

Rémy M. (chimimic)

tu as bien raison de t'immiscer ! Plus on est de fous...

J'ai passé plus de deux heures ce matin à décortiquer ce bout de fichier et essayer de comprendre la philosophie du fabricant. J'en suis arrivé à la même conclusion que toi : ça ne ressemble pas à du Gray. D'autant qu'une conversion en Gray de valeurs comprises entre 0 et 127 aurait conduit à des valeurs supérieures à 127, ce qui aurait posé problème (ou nécessité de la tambouille supplémentaire pour répartir l'info sur 2 octets en 2x7 bits).
L'idée du codage sur 4 bits est plausible, mais pourquoi diable se limiter à cette résolution si le fabricant affirme qu'on peut disposer de 60 valeurs (6 bits requis) ? Même en travaillant sur ces 4 bits centraux, je ne vois pas d'évolution logique progressive allant dans le sens de valeurs 0..127.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
- < Liste des sujets
- Charte