[RÉSOLU] codage fichier midi - besoin d'aide
Bonjour à tous
Nouveau ici, je cherche à résoudre un problème de codage de fichier MIDI.
Je crée en ce moment une application pour écouter des suites de notes sur des accords (pour expérimenter différentes combinaisons, je ne rentre pas dans le détail, ce serait long).
J'utilise un logiciel de gestion de base de données (File Maker pro) pour éditer et exporter du code midi, puis VLC pour écouter le fichier.
Je bute sur un problème de formatage de données concernant les délais :
1 - Entête du fichier :
codage de la division pour 1 temps (valeur de la note noire). Jusqu'à présent j'utilisais la valeur décimale 16 suffisante pour coder jusqu'à la quadruple croche.
Mais depuis que j'ai intégré des séquences batterie avec triolets de croches, cette division ne peut plus fonctionner.
Je vais donc utiliser la valeur 480 qui est assez répandue qui codée en hexa donne : 01 E0
2 - Délais des événements :
Mon problème est qu'avec cette valeur 480 je n'arrive plus à coder les délais des notes. Il doivent être codés sur 2 octets.
Je me réfère donc à la page du site : Decryptage-fichier-MIDI
paragraphe : "Le décalage ou délai pour traiter le code"
(j'ai du mal avec les bits à ignorer... je ne comprends pas tout)
D'après le peu que j'ai compris, pour coder le délai d'une noire je fais :
ENT (480 / 128) = 3
reste 96
ce qui donne en hexa : 03 60
Bien évidemment, ça ne marche pas, voire même pas du tout.
Quand je décortique des séquences de notes exportées depuis MUSESCORE
ex une noire qui démarre à la fin de la précédente note : 19 3C 50 83 47 3C 00
je trouve ces valeurs de délai :
le délai de note ON 19 devrait être 00 (puisque collé à la précédente note), je ne comprends pas la valeur 19
le délai de note OFF 83 47, si je le convertis en ticks, j'obtiens
83 = d131 = 131*128 = 16768
47 = d71
total 16768 + 71 = 16839 ticks
soit 16839/480 = 35,08 noires ???? je devrais obtenir 1 noire
je n'y comprends rien
Si quelqu'un peut venir à mon secours, merci....
Cordialement
Thierry
Nouveau ici, je cherche à résoudre un problème de codage de fichier MIDI.
Je crée en ce moment une application pour écouter des suites de notes sur des accords (pour expérimenter différentes combinaisons, je ne rentre pas dans le détail, ce serait long).
J'utilise un logiciel de gestion de base de données (File Maker pro) pour éditer et exporter du code midi, puis VLC pour écouter le fichier.
Je bute sur un problème de formatage de données concernant les délais :
1 - Entête du fichier :
codage de la division pour 1 temps (valeur de la note noire). Jusqu'à présent j'utilisais la valeur décimale 16 suffisante pour coder jusqu'à la quadruple croche.
Mais depuis que j'ai intégré des séquences batterie avec triolets de croches, cette division ne peut plus fonctionner.
Je vais donc utiliser la valeur 480 qui est assez répandue qui codée en hexa donne : 01 E0
2 - Délais des événements :
Mon problème est qu'avec cette valeur 480 je n'arrive plus à coder les délais des notes. Il doivent être codés sur 2 octets.
Je me réfère donc à la page du site : Decryptage-fichier-MIDI
paragraphe : "Le décalage ou délai pour traiter le code"
(j'ai du mal avec les bits à ignorer... je ne comprends pas tout)
D'après le peu que j'ai compris, pour coder le délai d'une noire je fais :
ENT (480 / 128) = 3
reste 96
ce qui donne en hexa : 03 60
Bien évidemment, ça ne marche pas, voire même pas du tout.
Quand je décortique des séquences de notes exportées depuis MUSESCORE
ex une noire qui démarre à la fin de la précédente note : 19 3C 50 83 47 3C 00
je trouve ces valeurs de délai :
le délai de note ON 19 devrait être 00 (puisque collé à la précédente note), je ne comprends pas la valeur 19
le délai de note OFF 83 47, si je le convertis en ticks, j'obtiens
83 = d131 = 131*128 = 16768
47 = d71
total 16768 + 71 = 16839 ticks
soit 16839/480 = 35,08 noires ???? je devrais obtenir 1 noire
je n'y comprends rien
Si quelqu'un peut venir à mon secours, merci....
Cordialement
Thierry