Se connecter
Se connecter

ou
Créer un compte

ou

Sujet Fichier MIDI hexa -> décimal ?

  • 56 réponses
  • 4 participants
  • 2 495 vues
  • 5 followers
1 Fichier MIDI hexa -> décimal ?
Bonjour,

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 ]

Afficher le premier post
51
Bon, ça ne sert à rien de jouer aux devinettes pour retrouver le périphérique, je n'avais pas vu qu'on savait déjà que c'était un Viscount RD-70. Mais ça, c'est juste l'enregistrement, ça ne nous dit rien du convertisseur.

Ce qui est perturbant, c'est qu'au début du fichier, l'espace de quelques millisecondes, ça semble hésiter entre deux valeurs : 60 et 0, ce qui, sur les 4 bits du milieu fait 1111 et 0000 qui ne sont pas à proprement parler des valeurs voisines (quoique... en complément à deux...)
52
Salut alex.
Merci pour essayer de m'aider.
Pour l'hésitation 60 et 0, j'ai une idée : la pédale d'expression affiche des valeurs de 1 à 30 sur un écran digital. En position fermée elle affiche 2 (au lieu de 1). Pour obtenir le 1 il faut appuyer très fort sur la pédale d'expression. Peut-être un faux contact ou l'usure ne permet plus d'atteindre correctement la butée du 1. Donc quand l'organiste a enregistré il se peut que les valeurs aient oscillées de 1 à 2 ce qui a été traduit en MIDI par des oscillations entre 0 et 60.

Sur la fiche fabricant, il est explicitement indiqué que la pédale d'expression est encodée sur 7 bit maximum. Aucune indication n'est donnée pour les program change et control change.

[ Dernière édition du message le 02/05/2017 à 09:10:34 ]

53
Mon éditeur hexa me donne les valeurs ci-dessous. J'ai essayé de les recomposer en évènements (1er bit à 1) pour plus de clarté. Je n'ai pas touché au début qui doit correspondre au SysEx car j'ai du mal à comprendre comment ça marche.
Si j'ai fait juste, à quoi correspondent les lignes entre les "B0 07 xx", comme "8A 43". Les évènements "8" sont des "note off". C'est impossible car les "note off" sont normalement codées sur 3 octets alors que là il y en a que 2. De plus, certains évènement B0 (control change) sont codés sur 4 octets ! exemple "B0 07 00 01 "

4D 54 68 64 00 00 00 06 00 00 00 01 00 60 4D 54 72 6B 00 00 00 AA 00 FF 58 04 04 02 18 08 00 FF 51 03 07 A1 00 00 F0 19 31 20 52 44 37 30 20 52 65 63 6F 72 64 65 64 20 5F 52 44 5F 30 30 32 33 F7
8A 43
B0 07 3C
83 40
B0 07 00 01
B0 07 3C 03
B0 07 00 01
B0 07 3C 01
B0 07 00 02
B0 07 3C
84 21
B0 07 38
86 3A
B0 07 04
84 3C
B0 07 18
91 09
B0 07 24
90 30
B0 07 20
84 2F
B0 07 1C
86 4A
B0 07 10
85 0C
B0 07 2C
85 1D
B0 07 28
84 32
B0 07 14
83 6F
B0 07 08
82 7F
B0 07 34
84 0C
B0 07 30
83 78
B0 07 0C
89 28
FF 2F 00

54
C'est carrément bizarre cette affaire. Je n'avais vu que les cc 07 et pas les notes, parce que j'avais ouvert le fichier avec kmidimon, qui n'a pas affiché les événements invalides. Mais en regardant avec hexdump, ça devient carrément spé.

En effet, les 0x90 (note on) et 0x80 (note off) ont deux octets d'info. On peut supposer que sur un orgue, il n'y a pas de vélocité, mais dans ce cas la convention est de sortir une valeur fixe (traditionnellement 100 ou 127), pas d'omettre carrément l'octet (ce qui n'est pas conforme à la spec) ! Par ailleurs, les notes on/off ne sont pas équilibrées, on a du note off sur une note pour laquelle on n'a pas eu de on avant...

Quant à la série de B0 avec 3 octets d'infos, mystère. Avec 4 octets derrière, ce serait tout bêtement un running status, mais 3, ça n'existe pas.

On a la référence de l'enregistreur MIDI (Viscount RD-70), mais ce serait très intéressant d'avoir la référence du kit MIDI installé sur l'orgue qui sort de pareilles horreurs).
55
Ben c'est d'autant plus bizarre qu'aucune note n'a été jouée. On a cliqué sur "record" du viscount RD70 et on a monté progressivement la pédale d'expression.
Autre chose bizarre : il y a 30 incréments sur l'affichage de l'orgue et uniquement 16 évènements B0 07 xx.
On aurait codé une valeur sur deux ?
J'ai contacté la boîte qui a installé le viscount RD70 sur l'orgue. Ils ne m'ont pas apporté d'explication et n'ont plus les infos sur l'orgue. L'installation remonte à 1997.
Ils m'ont juste dit qu'en 20 ans, il se peut que la mémoire programmée peut avoir perdu la remembrance.


[ Dernière édition du message le 02/05/2017 à 17:46:18 ]

56
Quand tu enregistres quelque chose sur le RD70, puis que tu le rejoues, sur l'orgue ça joue bien ce qu'il faut ? Juste pour vérifier que la MIDIfication de l'orgue ne délire pas, déjà, pour commencer, histoire de voir si c'est un protocole bizarre non-standard mais qui marche, ou si c'est le truc qui délire complètement.
57
oui quand le RD70 lit le fichier MIDI ça rejoue bien les mêmes choses qui ont été enregistrées.