Publicité

Annonce

Réduire
Aucune annonce.

SYSTEME La latence et Linux

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • SYSTEME La latence et Linux

    Un peu provoqué par bluedid et un écran indiquant : échantillons/période= 64, fréquence d'échantillonnage = 48 kHz, nombre de période= 2, latency = 2,67ms, je remarque que 2,67=2*64/48.

    Un premier constat est que Linux prend en compte un paramètre inconnu des drivers Windows (nombre de périodes). Ma compréhension est que l'idée est la suivante : lorsque la carte son est saturée, elle ne génère plus d'interruption pour demander des échantillons. Le noyau peut alors accepter alors plusieurs "périodes" depuis le DAW (ici 2). Lorsqu'il seront pleins, le DAW (son thread audio) sera bloqué car n'ayant rien à faire. Le noyau enverra les périodes à la carte son lorsqu'elle sera disponible, ce qui libérera des "périodes" et décoincera donc le DAW. Si ce dernier met trop de temps à réagir, pas grave, il y a une deuxième période en réserve...

    Du coup, au niveau du PC, il y a une latence de 2*64/48=2,67ms, puisqu'il faut compter 2 périodes en réserve au maximum en fonctionnement normal. Cependant, on n'a pas vu ce qu'il se passe du côté de la carte son. Normalement, une carte son est réglée pour éviter des craquements lorsque le PC n'a pas un rythme régulier (et un OS complexe ne peut avoir un comportement régulier à la microseconde)... ce qui induit logiquement un peu de bufferisation ajoutée. Je m'attends donc à plus de 2,67ms

    Un réglage recommandé est 2 périodes. Cela me laisse perplexe. Pourquoi pas 1 avec des périodes de taille doubles ? cela limiterait la fréquence des interruptions du DAW sans changer la latence. Ceci-dit, avec un tel réglage, le DAW a plus d'achantillons à calculer en peu de temps, ce qui peut poser problème... 2 est peut-être l'idéal mesuré de façon empirique.

    A toute fin utile, 64 échantillons à 48 kHz sur mon UR22 sous Windows affiche 4,125ms (chiffre donné par un drivers Steinberg, donc a priori correct). A 128, on a 6,458ms (ce n'est pas le double !). Cela me laisse donc perplexe lorsqu'un logiciel utilise un règle mathématique simple pour calculer une latence (comme Reaper avec le mode WASAPI qui calcule bêtement 256/44,1=5,8ms... oui, un chipset intégré à 256 plus efficace que l'UR22 à 128... cherchez l'erreur).

    Pour info, les spécifications Audio/USB mentionnent une latence interne à l'interface audio (https://www.usb.org/sites/default/files/audio10.pdf, p 59). Et j'ai beau chercher dans les sources de Linux, pas de trace d'usage de cette information précieuse... on l'a dans /include/uapi/linix/usb/audio.h mais dans aucun fichier .c pertinent. (juste /drivers/usb/gadget/function/f_uac1.c ... où on force la valeur à 1 sans la lire).Bref l'info est décodée... puis ignorée !

    The bDelay field holds a value that is a measure for the delay that is introduced in the audio data stream due to internal processing of the signal within the audio function. The Host software can take this value into account when phase relations between audio streams, processed by different audio functions, are important.
    Du coup, pour mesurer une latence sous Linux, je ne vois que la méthode de brancher l'entrée sur la sortie est utiliser alsadelay... https://www.systutorials.com/docs/li.../1-alsa-delay/
    Dernière modification par floyer, 04 août 2022, 20h46.
    http://www.sinerj.org/~loyer/piano/

    It's never too late to learn to play the piano. (tip of the day)

    Côté piano : Yamaha N1X, pianos VSL Syncron et Vienna Imperial, Garritan CFX, Bechstein Digital Grand, Ivory, Galaxy et beaucoup d’autres pianos virtuels - Côté synthé : Roland A-500 Pro, Native-Instruments Komplete 13, Arturia V Collection 9, Korg Collection 3, Air Music Technology plugins, OP-X Pro II, dexed (émulateur DX7 libre), Yamaha S-YXG50 - DAW : Reaper 6, Cubase Artist 9 - Interface audio : Steinberg UR22 - Casque : AKG K-702

  • #2
    Merci pour toutes ces infos floyer

    En 2009 lors de RMML à Nantes j'avais expérimenté un noyau RT issu de la distribution mandriva et l'on avait justement fait des tests (le développeur du noyau était présent) et l'on était descendu à 2ms réel et le système tenait bien la route même avec un ordinateur de cette époque et une carte son intégrée !!!

    Aucune raison donc de ne pas croire les réglages qui sont affichés dans Jack pour obtenir la latence de 5,33 millisecondes exactement. Pour les calculs, on peut se poser la question mais bon, je reste toujours dans le coté "pratique" jouant toujours en temps réel au clavier, il faut que cela réagisse rapidement et autour de 5ms me semble une valeur correcte du moins jouable avec toutes sortes d'instruments virtuels.

    En fait sur système Linux c'est le noyau RT qui fait la différence pour justement obtenir de bonnes performances de latence pour la MAO, après il y a des réglages dans Jack par rapport aux cartes son ou interfaces audio utilisées... ... Les performances peuvent être quasi identiques aux pilotes propriétaire d'autres systèmes...

    Un peu de lecture : http://linuxmao.org/Le+noyau+Temps-R%C3%A9el

    Lorsque j'ai commencé en 2006, j'ai souvent compilé pour obtenir un noyau temps réel en appliquant un patch spécifique, c'était sportif mais à l'époque c'était le seul moyen d'avoir un ordinateur vraiment performant pour jouer en temps réel

    La musique c'est la vie en bleu avec... Midjay+, Motif 7 et XF, Pa50, Pa2x, Pa600, clavier maître UF8, Triton, Pa500M88, Zoom H6 et systèmes Linux Debian 9, 10, 11, 12, SID Librazik 2, 3, 4, Mx21 et Ubuntu Studio 18.04, 20.04, 22.04, 23.04 en MAO... ...en fait juste un piano droit son type "bastringue" me suffirait aussi !

    Commentaire


    • #3
      Sans le paramètre bDelay publié par la carte son, on ne peut que calculer latence induite par le PC. Pour prendre en compte la latence induite par la carte son, il faut ajouter ce bDelay... et le noyau ne semble pas l'exporter. J'ai donc une bonne raison de croire que la latence affichée par Jack ne prend en compte qu'une partie contrairement à un drivers ASIO bien codé. J'ai une seconde raison : le calcul est celui d'une latence induite par le PC (nb_période*nb_échantillon/fréq).

      Après, il peut être remarqué que le noyau peut être très réactif, là où sous Windows, n'importe quel driver mal conçu peut bloquer le PC une éternité vu des contraintes d'un driver audio, ce qui peut inciter à augmenter la taille des buffers et donc la latence.
      http://www.sinerj.org/~loyer/piano/

      It's never too late to learn to play the piano. (tip of the day)

      Côté piano : Yamaha N1X, pianos VSL Syncron et Vienna Imperial, Garritan CFX, Bechstein Digital Grand, Ivory, Galaxy et beaucoup d’autres pianos virtuels - Côté synthé : Roland A-500 Pro, Native-Instruments Komplete 13, Arturia V Collection 9, Korg Collection 3, Air Music Technology plugins, OP-X Pro II, dexed (émulateur DX7 libre), Yamaha S-YXG50 - DAW : Reaper 6, Cubase Artist 9 - Interface audio : Steinberg UR22 - Casque : AKG K-702

      Commentaire


      • #4
        Oui, c'est une question que l'on peut se poser...

        En tout cas le developpeur qui avait réalisé le noyau rt m'avait vraiment certifié la latence de 2ms mais il avait les outils spécifiques pour tester et c'était sur carte son intégrée...
        La musique c'est la vie en bleu avec... Midjay+, Motif 7 et XF, Pa50, Pa2x, Pa600, clavier maître UF8, Triton, Pa500M88, Zoom H6 et systèmes Linux Debian 9, 10, 11, 12, SID Librazik 2, 3, 4, Mx21 et Ubuntu Studio 18.04, 20.04, 22.04, 23.04 en MAO... ...en fait juste un piano droit son type "bastringue" me suffirait aussi !

        Commentaire


        • #5
          Si tu as une carte son avec entrée et sortie (et un câble pour les relier), un coup de alsa_delay devrait rendre les choses plus claires... Ou jack_delay.

          D'ailleurs, sur la main page https://manpages.debian.org/testing/...elay.1.en.html on note l'affichage possible de la full ou de l'excess latency. Je comprends excess par la latence qui ne peut pas être calculée mais mesurée. (Latence interne de la carte son). C'est d'ailleurs cohérent avec le calcul du programme. Je cite :

          The excess latency is the measured value minus the expected value for the given ports including any corrections set by Jack's -I and -O options.
          Je serais curieux de connaitre les outils pour tester...
          Dernière modification par floyer, 04 août 2022, 22h31.
          http://www.sinerj.org/~loyer/piano/

          It's never too late to learn to play the piano. (tip of the day)

          Côté piano : Yamaha N1X, pianos VSL Syncron et Vienna Imperial, Garritan CFX, Bechstein Digital Grand, Ivory, Galaxy et beaucoup d’autres pianos virtuels - Côté synthé : Roland A-500 Pro, Native-Instruments Komplete 13, Arturia V Collection 9, Korg Collection 3, Air Music Technology plugins, OP-X Pro II, dexed (émulateur DX7 libre), Yamaha S-YXG50 - DAW : Reaper 6, Cubase Artist 9 - Interface audio : Steinberg UR22 - Casque : AKG K-702

          Commentaire


          • #6
            J'ai trouvé une page sur la mesure de latence : https://www.alsa-project.org/wiki/Test_latency.c

            Sinon pour l'instant la commande alsa_delay ou jack_delay ne fonctionne pas https://command-not-found.com/alsa-delay même après avoir installé alsa-utils ( debian 11 LibraZiK-4) à voir donc...
            La musique c'est la vie en bleu avec... Midjay+, Motif 7 et XF, Pa50, Pa2x, Pa600, clavier maître UF8, Triton, Pa500M88, Zoom H6 et systèmes Linux Debian 9, 10, 11, 12, SID Librazik 2, 3, 4, Mx21 et Ubuntu Studio 18.04, 20.04, 22.04, 23.04 en MAO... ...en fait juste un piano droit son type "bastringue" me suffirait aussi !

            Commentaire


            • #7
              Il y a latence et latence… celle qui intéresse le musicien est le temps entre le jeu d’une touche et le retour dans les enceintes. (Mais on met généralement de côté l’aspect MIDI, de l’ordre de 1 ou 2ms ou moins) Le Test_latency mesure les plus gros envois aux driver. Cela mesure plus la réactivité de l’OS et la taille des « périodes » (sachant que sous Linux, un buffer fait potentiellement plusieurs périodes) qu’une réelle latence de la carte son.

              La mesure du programme est curieuse. Comme le driver n’accepte que des frames entières, le résultat est forcément period_size/sampling_freq… sauf si linux a trop « suspendu » le programme et qu’il ait mis deux périodes d’un coup (mais cela doit arriver rarement). Si j’avais réalisé le programme, j’aurais mis quelques éléments de chronométrage… mais faute d’avoir accès aux fameux paramètre bDelay de l’interface USB, je ne pourrais pas faire de miracles. Je pourrais au mieux faire quelque chose de semblable à latencymon sous Windows qui ne fait que mesurer le comportement de l’ordonnanceur.

              Les seuls tests de latence pertinents que tu peux trouver sont ceux où le signal sortant est mesuré. Cela peut être avec un retour vers la carte son (mais dans ce cas tu as aussi la latence à l’entrée qui s’ajoute), un oscilloscope (si tu as un programme qui bascule une sortie digitale en même temps que l’envoie à la carte son), etc.

              Comme le logiciel renvoie sur la sortie ce qu’il lit, tu peux avec des équipements externes mesurer une réelle latence. Mais ne te fie pas à un

              Code:
              Trying latency 128 frames, 2902.494us, 2.902494ms (344.5312Hz)
              Dernière modification par floyer, 05 août 2022, 15h44.
              http://www.sinerj.org/~loyer/piano/

              It's never too late to learn to play the piano. (tip of the day)

              Côté piano : Yamaha N1X, pianos VSL Syncron et Vienna Imperial, Garritan CFX, Bechstein Digital Grand, Ivory, Galaxy et beaucoup d’autres pianos virtuels - Côté synthé : Roland A-500 Pro, Native-Instruments Komplete 13, Arturia V Collection 9, Korg Collection 3, Air Music Technology plugins, OP-X Pro II, dexed (émulateur DX7 libre), Yamaha S-YXG50 - DAW : Reaper 6, Cubase Artist 9 - Interface audio : Steinberg UR22 - Casque : AKG K-702

              Commentaire


              • #8
                Oui c'est sur... Perso c'est d'abord des tests de "musicien" que je privilégie... ...dans une autre période c'était plutot oscilloscope, multimètre, fer à souder et compagnie vu que j'étais dans le métier

                Depuis des années je règle toutes mes cartes sons / interface audio avec les paramètres suivants :
                fréquence d'échantillonnage = 48000Hz
                échantillons/période : 128
                nombre de période : 2
                Latence affichée dans QjackCtl : 5.33ms

                Par expérience, pas eu de soucis de synchro ce qui n'as pas été toujours le cas avant quand je changeais mes réglages et que je transportais mes projets d'un ordinateur à un autre à l'époque ou la compensation de latence n'existait pas d'ou des problèmes de synchro surtout avec les effets !!! (faut dire que parfois j'utilisais des ordinateur vraiment peu puisants, la bidouille à fond !
                Dernière modification par bluedid, 06 août 2022, 13h49.
                La musique c'est la vie en bleu avec... Midjay+, Motif 7 et XF, Pa50, Pa2x, Pa600, clavier maître UF8, Triton, Pa500M88, Zoom H6 et systèmes Linux Debian 9, 10, 11, 12, SID Librazik 2, 3, 4, Mx21 et Ubuntu Studio 18.04, 20.04, 22.04, 23.04 en MAO... ...en fait juste un piano droit son type "bastringue" me suffirait aussi !

                Commentaire

                Chargement...
                X