HomeProductsDownloadOrderSupportSearch
  
 
 Myriad Blog 1.3.0 Thursday, Mar 28th, 2024 at 12:55am 

Tuesday, Jul 19th, 2011 at 05:16pm
Acam III, version Ubuntu, étape 63

 
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...
by Olivier Guillion
Comments

Comment from Gilbert Rouquié Wednesday, Jul 20th, 2011 at 04:50pm
Fonction activée toutes les 5 ms
Avez vous considéré gérer l'appel périodique comme dans VLC ou JACK ? Comme suit :
 
Créer une Thread qui boucle sans fin.
- Appel de la fonction périodique
- sleep sur le résidu du temps à 5 millisecondes
 
Il existe des services Linux qui donnent les sleep et clock avec une précision à la microseconde.
Et vous pouvez programmer la Thread en Scheduling = Realtime, ce qui ne demande pas un noyau Linux recompilé, mais demande des authorisations appropriées.
 
Sincèrement

Comment from Olivier Guillion Thursday, Jul 21st, 2011 at 04:10pm
Re: Fonction activée toutes les 5 ms
Oui, le thread séparé, avec un usleep(5000) est la dernière méthode que nous avons testé avant de changer complètement de stratégie.
C'est la partie "scheduling real-time" qui nous a arrêtés, ne sachant pas comment faire pour gérer les autorisations.


Most recent first
Oldest first

Top of page
Legal information Cookies Last update:  (c) Myriad