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 :-)