Bonjour à tous
J'ai testé le code melody pour arduino :
http://www.arduino.cc/en/Tutorial/Melody
Je me suis dis que ça pourrait être sympa si on pouvait utiliser des fichiers midi. Après quelques recherches j'ai trouvé le format tse3, qui enregistre les données dans un format comme celui là :
Events
{
0:12/26/0/0/0
0:9/76/64/0/0-16:8/76/64/0/0 # E-6
0:11/0/0/0/0
24:9/76/64/0/0-40:8/76/64/0/0 # E-6
72:9/76/64/0/0-88:8/76/64/0/0 # E-6
120:9/72/64/0/0-136:8/72/64/0/0 # C-6
144:9/76/64/0/0-160:8/76/64/0/0 # E-6
192:9/79/64/0/0-208:8/79/64/0/0 # G-6
384:9/72/64/0/0-400:8/72/64/0/0 # C-6
....
A droite on peut voir les notes, donc ça facile, mais à gauche je ne connais pas trop à quoi ça correspond…
http://tse3.sourceforge.net/doc/TSE3MDL.html
Là ils disent : "There is one event per line in the form TIME:TOP/BOTTOM where TIME, TOP and BOTTOM are integer values. "
Time je peux comprendre, mais à quoi correspondent les top et bottom ? Quelqu'un a une idée ?
Merci d'avance.
# abc
Posté par fravashyo . Évalué à 2.
désolé je ne vois pas, et ce projet semble un peu vieux.
Par contre je peux te rediriger vers le format abc :
http://abcnotation.com/software
Il y a beaucoup d'outils unix pour les utiliser, et on peut convertir facilement du midi vers abc avec le programme abcmidi, ensuite comme c'est écrit dans le genre |BEE dE2|BAG FG2| ça sera plus facile à analyser dans ton logiciel.
ps : par rapport au code que tu présentes, tu dis qu'à droite on voit les notes. Je pense plutôt que c'est un commentaire et les notes sont plutôt dans le code à gauche. Par exemple pour E6 ça correspond toujours à gauche à 9/76 puis 8/76 et C6 à 9/72 puis 8/72
« I approve of any development that makes it more difficult for governments and criminals to monopolize the use of force. » Eric Raymond
# Mauvaise section
Posté par gouttegd . Évalué à 6. Dernière modification le 25 août 2013 à 17:00.
Tu ne regardes pas la bonne section de la documentation, le format de ces lignes est décrit dans la section « Phrase chunk », juste en-dessous :
Ainsi :
est un message Program Change (STATUS = 12), où 26 est le numéro de programme ;
est un message Note On, où 76 est la note à émettre et 64 sa vélocité, suivi du message Note Off correspondant
Tous ces messages étant émis sur le canal MIDI 0, sur le port MIDI 0.
[^] # Re: Mauvaise section
Posté par Jackbot (site web personnel) . Évalué à 1.
Merci pour les réponses
Pourrais-tu m'expliquer comment passer de 76 à la note et ce qu'est la vélocité ?
J'ai fais un essaie en ne me basant que sur les temps et la note qui est en commentaire, mais j'ai du créer un facteur temps pour ralentir le tempo. Donc si je pouvais partir du 76, enfin des vrai données et pas des commentaires ça serait plus propre, et je suppose que la vélocité doit être lié à ce facteur temps que j'ai du créer.
"si c'est idiot, mais que ça marche, c'est que ce n'est pas idiot."
[^] # Re: Mauvaise section
Posté par gouttegd . Évalué à 4.
Il suffit de savoir que 60 est le middle C, normalement C₄. 61 est C♯₄, 62 est D₄, 63 est D♯₄, etc. 76 devrait être E₅, mais apparemment l’auteur des commentaire considère que le middle C est C₅ et non C₄.
C’est une valeur de 0 à 127 indiquant une sorte « d’intensité » avec laquelle la note doit être jouée : plus la vélocité est élevée, plus la note doit être jouée avec force (fortissimo, en quelque sorte). Sur les contrôleurs MIDI à clavier, la vélocité traduit généralement la vitesse avec laquelle le musicien enfonce la touche.
Je ne sais pas comment tu as créé ce facteur temps, mais normalement tu obtiens le tempo correct de la façon suivante :
Dans l’en-tête du fichier, il doit y avoir un champ « PPQN » (Pulses Per Quarter Note) indiquant le nombre de « battements d’horloge » par noire. Tous les temps dans le reste du fichier sont exprimés en battements d’horloge. Par exemple :
le message Note On est émis à t=0, et le message Note Off correspondant à t=16, soit 16 battements d’horloge plus loin. Si par exemple PPQN vaut 64 (64 battements d’horloge par noire), alors cette note a une durée de 16/64 ou 1/4 de noire, soit une double croche.
Ne reste plus qu’à connaître le tempo proprement dit. Il est indiqué par un ou plusieurs champs « TEMPO », exprimé sous la forme du nombre de microsecondes par noire (par défaut normalement dans un fichier MIDI, le tempo est de 120 noires par minutes, donc une noire dure 500 000 microsecondes). Dans l’exemple ci-dessus, la note doit donc sonner pendant 125 000 microsecondes.
Le format TSE3MDL semble être une transcription directe, en mode texte, du format binaire SMF (Standard MIDI File). Donc tu devrais trouver la réponse à la plupart de tes questions dans la documentation des standards MIDI et SMF (source officielle, et une très bonne référence officieuse).
[^] # Re: Mauvaise section
Posté par Jackbot (site web personnel) . Évalué à 1.
Merci pour toutes ces précisions, je vais essayer d'arranger mon code pour le rendre plus "propre".
"si c'est idiot, mais que ça marche, c'est que ce n'est pas idiot."
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.