Devant l'impossibilité, sur Linux, de disposer d'une fonction qui serait appelée régulièrement (par exemple chaque 1/200e de seconde), nous avons dû nous résoudre à utiliser les fonctions ALSA haut niveau de traitement de file d'attente MIDI. Dans ce mode de fonctionnement, le programme stocke à l'avance la liste de commandes MIDI à jouer, chaque commande contenant le temps exact, en nanosecondes (!) par rapport au lancement de la sortie MIDI, auquel elle doit être effectivement envoyée au matériel. Les premiers essais sont concluants, les envois sur la MIDI sont maintenant bien réguliers. Reste un problème de synchronisation. Avec cette méthode, il faut absolument que le démarrage de la MIDI et le démarrage de la sortie numérique soient parfaitement simultanés. Or, pour l'instant, il y a des délais variables entre les deux sorties, différents à chaque lancement de la musique, et pouvant atteindre un quart de seconde. Espérons que ce n'est pas inhérent à ALSA, et cela pourra être résolu. Sinon, on est mal... |