Question:
comment calculer l'heure d'arrêt midi
ja.
2015-05-07 22:05:34 UTC
view on stackexchange narkive permalink

J'essaye d'écrire un programme pour convertir la notation musicale en midi

Comment choisir l'heure de fin d'une note midi?

Naïvement, je pourrais m'attendre à stop_time: = start_time + note_duration mais pour de nombreux instruments, la note décroît beaucoup plus rapidement que la durée. Pour un tambour, la note se décompose très rapidement et pour un orgue pas du tout.

Si j'ai deux notes (crotchet, crotchet) sur un piano sans délai entre les deux, je finirais par programmer l'heure de début de la deuxième note en même temps que le temps d'arrêt de la première note - mais un être humain ne jouerait jamais cela - il faudrait un délai physique pour permettre le mouvement des doigts. La note se serait également désintégrée rapidement - donc je suppose que je pourrais l'arrêter après (disons) 80% de la durée.

L'heure d'arrêt est-elle vraiment importante?

Des idées?

Pourquoi n'utilisez-vous pas [MIDICSV] (http://www.fourmilab.ch/webtools/midicsv/#midicsv.1) sur un fichier midi déjà créé pour savoir ce que vous devez faire? Du haut de ma tête, je suis à peu près sûr que début + durée convient dans tous les cas que vous énumérez, car vous souhaitez généralement conserver une note pendant toute la durée, mais tous les instruments ne sont pas capables de la maintenir.
Six réponses:
MattPutnam
2015-05-07 22:21:49 UTC
view on stackexchange narkive permalink

Naïvement, je pourrais m'attendre à stop_time: = start_time + note_duration mais pour de nombreux instruments, la note décroît beaucoup plus rapidement que la durée. Pour une batterie, la note se décompose très rapidement et pour un orgue pas du tout.

Le MIDI ne sait rien de la manière dont il va être synthétisé. Vous pouvez prendre le même flux MIDI et l'exécuter via deux patchs différents avec des enveloppes différentes. Ce n'est pas quelque chose dont vous devriez vous inquiéter.

mais un être humain ne jouerait jamais à ça - il devrait y avoir un délai physique pour permettre le mouvement des doigts. La note se serait également désintégrée rapidement - donc je suppose que je pourrais l'arrêter après (disons) 80% de la durée.

Vous entrez maintenant dans toute la "lecture humaine" vers. C'est vraiment à vous de décider. Essayez certaines choses et voyez si elles vous conviennent. Dans ce cas, je suppose que cet écart devrait être une durée fixe et non un pourcentage de la durée de la note.

Très bonne réponse! Mais je ne suis pas d'accord avec "c'est vraiment à vous de décider" dans le dernier paragraphe. Je sais que je serais moi-même confus et ennuyé si une application prétendait «convertir la notation en MIDI», puis prenait des décisions arbitraires sur la façon dont elle le faisait. Si une note est censée durer un quart de mesure, je m'attendrais à ce qu'elle fasse exactement cela: la faire durer 0,25 de la mesure, même si ce n'est pas ainsi qu'un humain la jouerait vraiment. Je m'ATTENDrais à devoir l'humaniser MANUELLEMENT si je voulais qu'il soit humanisé. (Ce n'est pas du tout un problème s'il existe une option "humaniser" explicite dans l'application elle-même.)
Cette réponse fait un bon travail pour séparer les deux aspects distincts de cette question (synthèse et performance). Cela ne vaut rien du côté de la synthèse qui, non seulement le son pourrait chuter avant la fin de la note midi, mais cela pourrait également s'étendre au-delà de la fin de la note midi en raison des effets de réverbération. Mais aucun de ces problèmes ne doit affecter le moment où l'événement NoteOff se produit, qui représente la fin de la lecture d'une note, pas l'arrêt du son. En ce qui concerne la performance, la réponse de Stephen Hazel est raisonnable (par défaut à 100% durée -1 tick, avec des ajustements pour les articulations notées).
@CalebHines, ce ne sont pas seulement les effets de réverbération qui pourraient faire prolonger la note après la désactivation de la note - c'est aussi le réglage du temps de relâchement sur le synthétiseur jouant la note.
@topomorto Correct, et un point très important. Mais j'étais à court de personnages. Le point principal que j'illustrais était que le son pouvait s'arrêter de * l'un ou l'autre * côté de l'événement Note Off. J'aurais probablement pu mieux formuler les choses.
Stephen Hazel
2015-05-08 00:03:31 UTC
view on stackexchange narkive permalink

si vous avez une noire, vous devez régler l'heure de fin sur l'heure de début plus la durée moins un "tick".

vous pouvez entrer dans les staccato, portato, leggerio, legato si la musique le précise. Legato a une durée complète (moins une coche pour ne pas gâcher la note suivante). leggerio est la fin habituelle de 3/4 de durée. portato vaut 1/2, stacatto vaut 1/4 ou moins.

vous ne devriez pas vous soucier de savoir si c'est une batterie, un piano ou un orgue. Si c'est ce que dit la partition, c'est ce que devrait être le fichier midi.

la synthèse vient APRÈS que le midi est décidé et c'est une toute autre boîte de vers.

Vous ne pouvez pas écrire entièrement le MIDI sans tenir compte de la synthèse. Après tout, le MIDI est simplement un ensemble d'instructions pour le synthétiseur, et la façon dont le synthétiseur interprète ces instructions est ce qui fait le son réel.
topo Reinstate Monica
2015-05-07 22:31:37 UTC
view on stackexchange narkive permalink

Vous devez avoir une idée de l'enveloppe de volume de la voix de synthétiseur particulière qui répondra aux messages midi.

Habituellement, lorsque vous déclenchez une note activée, le synthétiseur attaché jouera l'attaque partie du son, puis la partie de décroissance du son, jusqu'à ce qu'il atteigne le niveau de maintien. Lorsque vous relâchez la note (envoi d'une note off), la note décroît (disparaît) en fonction du temps de déclin.

Avec les sons percussifs, le temps d'attaque est souvent nul (très rapide), et le temps de déclin et le temps de relâchement sont souvent exactement les mêmes. Cela signifie que la durée de la note MIDI n'a en fait aucune importance - vous pouvez envoyer la note off après une milliseconde ou une minute, et cela ne fera aucune différence (à part quelques subtilités liées à la façon dont les voix sont attribuées, mais nous pouvons ignorer pour le moment).

Un son de piano aura également une attaque rapide, puis commencera à décroître jusqu'à zéro. Le temps de relâchement est alors très rapide, car la note est atténuée lorsque la note est relâchée. Je pense que vous êtes sur la bonne voie lorsque vous avez dit que vous deviez réfléchir à la durée pendant laquelle un joueur humain tiendrait réellement la note. Rappelez-vous que le style musical et la technique de jeu font une différence - dans certains cas, sur un piano, vous pouvez jouer les notes si longtemps qu'elles se chevauchent; dans d'autres cas, vous les joueriez court et staccato. De plus, vous avez la possibilité d’utiliser des messages de contrôleur MIDI amortisseur / sustain / sostenuto pour étendre les notes, plutôt que les notes off - encore une fois, en fonction de la façon dont le synthétiseur est programmé.

Notez qu'avec les synthétiseurs basés sur des échantillons, vous devez également prendre en compte l'enveloppe de volume inhérente à l'échantillon en cours de lecture, ainsi que les paramètres du synthétiseur.

Mais en gros: si le niveau de maintien de la voix de synthé est nul et que le temps de relâchement et le temps de déclin sont identiques, cela ne fait aucune différence lorsque vous envoyez la note. Dans tous les autres cas, cela fera une différence.

Je suis curieux de connaître le vote négatif ...
ce n'était pas moi, mais je dirais parce que cela n'aborde pas la question de savoir quoi faire réellement avec la note-off; seulement les conséquences du moment où cela se produit.
@Tetsujin C'est une sorte de réponse "tout dépend" - mais c'est la réponse la plus votée actuellement, n'est-ce pas? De plus, je pensais être entré dans un peu plus de détails sur ce que cela dépend réellement * de * - J'ai déjà écrit un logiciel MIDI avant donc je me demandais si j'avais oublié ce que j'avais appris et si j'avais fait une erreur d'écolier! Tant pis. Merci.
Vous avez peut-être trop à dire sur ce sujet pour tenir dans une seule réponse, topo morto. Avez-vous pensé à poser / répondre à une série de questions concoctées? (Cela pourrait prendre des jours / semaines / mois / ...) Ou avez-vous déjà? (Je n'ai pas regardé.) Je leur demanderai peut-être. J'apprends actuellement le MIDI en vivant, en respirant et en tapant.
@musicn pour être honnête, je vais maintenant dans la direction opposée - du MIDI vers des façons moins `` basées sur les notes '' de représenter la musique, mais je répondrai quand même à toutes les questions que je peux ...
user20283
2015-05-08 00:41:58 UTC
view on stackexchange narkive permalink

Les durées des notes MIDI correspondent au moment où vous appuyez sur une touche et lorsque vous la relâchez. Tout le reste de l'enveloppe est l'affaire du synthétiseur qui interprète le Midi. «Relâcher» avec des instruments à percussion peut signifier un amortissement actif (évident avec un charleston).

Pour les instruments mélodiques, le fait que le relâchement atteigne la note suivante, la chevauche ou s'arrête avant cela dépend si vous jouez legato, legatissimo ou leggiero. Mais cela ne dépend pas notamment du type d'instrument: fondamentalement, vous traduisez la partition en Midi sans que le rendu dépende de l'instrument Midi réel utilisé.

"Mais cela ne dépend pas notablement du type d'instrument" est incorrect - les voix de synthé polyphonique qui ont des temps de relâchement longs auront des notes qui se chevauchent si les notes activées sont assez rapides, * indépendamment * du moment où les notes sont envoyées.
ja.
2017-08-12 00:03:02 UTC
view on stackexchange narkive permalink

Très bonne question. Moi aussi, j'écris du code similaire au vôtre.

Moi aussi, je m'étais interrogé à ce sujet. Pour un instrument pincé ou une batterie, la durée de la note est plus ou moins sans importance. La durée me dit le moment où la note suivante commence, pas quand la note actuelle se termine.

Si vous prenez (dites) de la musique de piano et raccourcissez toutes les notes comme disons 1 / 16 notes mais assurez-vous que les heures de début sont correctes, cela ne sonnera pas trop mal.

J'ai également rencontré un problème lors de la programmation d'une syntaxe monophonique Moog à l'aide d'un contrôleur midi - lors de la lecture de notes successives, j'ai envoyé une note sur commandes immédiatement après les commandes note off précédente, mais la syntaxe ne pouvait pas répondre assez rapidement et certaines notes ont été manquées, alors j'ai désactivé les notes une milliseconde avant la note suivante de la commande.

Pour être honnête, la spécification midi n'aide pas ici - Si j'envoie deux notes sur des messages sur le même canal et avec la même hauteur suivie d'une noteoff, la note doit-elle toujours sonner (dans le cas d'un orgue) - ou dois-je en envoyer deux?

Il me semble qu'une note est une chose assez complexe, elle a une représentation imprimée (comme dans une partition) - elle a une note réelle sur et une note hors temps qui peut ou non correspondre aux heures implicite dans la partition, et pendant la lecture, le volume et le vibrato de la note peuvent changer.

Je note que certaines DAW (j'oublie lesquelles) permettent de modifier les heures de début et de fin dans une note dans un éditeur de piano roll afin que l'écran affiche à la fois les heures de début et de fin nominales (correspondant à ce que serait une note dans une partition) et les heures de début et de fin réelles (qui diffèrent de la partition)

Pour faire un bon son de piano, il faut aussi prendre en compte la pédale, le battement et les variations de volume impliquées par le phrasé - tout cela est assez délicat :-)

Laurence Payne
2018-09-02 05:43:29 UTC
view on stackexchange narkive permalink

Envoyez la durée complète du crochet. C'est le métier de l'instrument de lecture ce qu'il en fait.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...