2 votes

Écrire un fichier Midi à partir de zéro en utilisant l'hexadécimal

J'essaie d'écrire un fichier midi à partir de rien. Il jouera un arpège en do majeur de 3 crochets. J'ai utilisé sublime text pour enregistrer en utilisant l'encodage hexadécimal. J'importe ensuite le résultat dans logic (après avoir changé l'extension en .mid). Jusqu'à présent, cela n'a pas fonctionné, et logic ne fait simplement rien.

J'ai tiré la plupart de mes informations de aquí et ont écrit ce qui suit :

4d 54 68 64 00 00 00 06 00 00 00 01 00 18 4d 54 72 6b 00 00 00 1e 80 18 81 3c 7f 80 00 91 3c 00 80 18 81 40 7f 80 00 91 40 00 80 18 81 43 7f 80 00 91 43 00

Voici une ventilation de chaque octet, sous forme de note, mais qui résume ma compréhension du format de fichier : Byte breakdown for MIDI file

Quelqu'un pourrait-il m'expliquer pourquoi cela ne charge pas le bon résultat dans Logic ? Ai-je mal compris le format de fichier lui-même ou le problème est-il plus profond dans l'encodage ?
UPDATE : voici l'hexadécimal final, corrigé...

4d 54 68 64 00 00 00 06 00 00 00 01 00 18 4d 54 72 6b 00 00 00 22 80 18 91 3c 7f 80 00 81 3c 00 80 18 91 40 7f 80 00 81 40 00 80 18 91 43 7f 80 00 81 43 00 00 ff 2f 00

1voto

CL. Points 46451

La piste est dépourvue du méta-événement de fin de piste (type 2F, longueur 0). Il faut donc ajouter les octets 00 FF 2F 00 et ajustez la taille de la piste en conséquence.

La piste contient six messages MIDI. Tous les six sont des messages d'annulation de note, il n'y a donc pas de notes réelles.

8x est un message d'arrêt.
9x est un message de note-on, mais une vélocité de 0 spécifie en fait une note-off. (Il s'agit d'une optimisation qui est utile lors de l'utilisation de l'état de marche).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X