Forum : 1 - La documentation et les nouvelles de LinuxMAO

[Fait] Wiki - Portail Matériel - choisir une carte son

pianolivier utilisateur non connecté France
Bonjour,

J'ouvre ce fil pour discuter de la page Cartes son qui -je pense- mérite une petite réfection.
Ce mini-projet fait partie d'un plus gros, ré-orga du portail matos (autre sujet du forum).

Pour la page Cartes son, je propose plusieurs trucs à discuter :
  • simplification générale de la page
  • ré-écriture de manière chronologique pour choisir une carte-son
    • 1/ type de carte son (carte son, interface hybride ou spécialisée...)
    • 2/ connectique audio et nombre d'e/s (le type de connectique du coté pc en dépend comme PCI ou firewire pour un grand nombre d'e/s)
    • 3/ fonctions spéciales (chainage, monitoring...)
    • 3/ conseils généraux, les constructeurs linux friendly...
  • ajout de quelques précisions
    • il n'est pas nécessaire d'avoir une carte "(semi)professionnelle" pour atteindre de très basses latences comme le suggère la page actuelle (typiquement il est possible d'utiliser la carte son intégrée d'un ordi portable récent avec une poignée de millisecondes de latence avec certains logiciels+jack)
    • Si le choix se présente, préférez le PCI au firewire. FFADO fonctionne très bien pour les quelques cartes officiellement supportées, mais l'installation et la configuration d'une carte PCI est toujours moins prompt à problèmes (pas de controleur supplémentaire entre la carte mère et la carte son, pilotes/modules plus faciles à installer et plus rodés)
  • déplacement du paragraphe "synthèse matérielle (hardware)" dans la page dédiée aux soundfont car cela n'est plus tres utilisé il me semble, et concerne de vieilles cartes son.

Au passage, si quelqu'un comprend le paragraphe "Cartes USB1 et USB2", je veux bien qu'il m'explique :-)

Vala, dites moi ce que vous en pensez

oliv'

Dominique utilisateur non connecté Suisse
pianolivier écrit :
Bonjour,

Au passage, si quelqu'un comprend le paragraphe "Cartes USB1 et USB2", je veux bien qu'il m'explique :-)

oliv'


J'ai simplifié un peu. Pour le passage technique (config de JACK), il faudrait faire une page dédiée ce qui permettrait d'alléger celle-ci tout en expliquant plus en détail comment faire.

Ciao,
Dominique

pianolivier utilisateur non connecté France
Ben puisque tu es là Dominique peux-tu répondre à mes questions sur ce paragraphe ?

citation :
Pour améliorer les choses, suivez les conseils de Dominique :
La période d'interruption d'un bus USB est d'environ 1 msec. Pour que jackd fonctionne aussi bien que possible, il est nécessaire qu'il soit réglé sur un multiple de cette période, par exemple 48 kHz 3 periods, dans qJackCtl. De plus, le chargement de snd-usb-audio avec le paramètre "nrpacks=1" améliore aussi beaucoup la latence (CONFIG_USB_BANDWIDTH et CONFIG_USB_DYNAMIC_MINORS ne doivent pas être sélectionnés dans la configuration du kernel)

  • c'est quoi exactement cette période d'interruption d'un bus USB d'environ 1 msec ?
  • pourquoi vaut-il mieux régler le nombre de tampons sur un multiple de cette période ? (liens ?)
  • un multiple de 1 n'est-il pas n'importe quel nombre entier ?
  • les paramètres nrpacks=1, CONFIG_USB_BANDWIDTH=n et CONFIG_USB_DYNAMIC_MINORS=n sont-ils toujours d'actualité ? (vu que le post date de 2006)

merci d'avance ! wink
et, en effet, certaines de ces choses si elles sont encore valables seront déplacées dans des pages plus appropriées.

oliv'

Dominique utilisateur non connecté Suisse
pianolivier écrit :
c'est quoi exactement cette période d'interruption d'un bus USB d'environ 1 msec ?
pourquoi vaut-il mieux régler le nombre de tampons sur un multiple de cette période ? (liens ?)
un multiple de 1 n'est-il pas n'importe quel nombre entier ?
les paramètres nrpacks=1, CONFIG_USB_BANDWIDTH=n et CONFIG_USB_DYNAMIC_MINORS=n sont-ils toujours d'actualité ? (vu que le post date de 2006)


Pour une info technique sur l'usb 2 voir http://www.usbmadesimple.co.uk/ums_6.htm

La période d'interruption est le temps entre deux interrogations - transferts de données sur le bus usb par le système. La période p est l'inverse de la fréquence, d'où p = 1 / f = 1 ms (et pas 1 s) = 1 / 1kHz. Ce n'est donc pas un multiple de 1 mais un multiple de 0,001.

Dans le cas des cartes son usb, la plupart de ces cartes utilisent la fréquence d'interruption de 1kHz de l'usb pour déterminer leur fréquence d'échantillonage. C'est pourquoi il est important que la période de jackd soit un multiple de la période d'interruption de l'usb. Certaines cartes comme les SB Audigy 2 NX ou les UA-101 ne font pas cette synchronisation, dans ce cas, la période de jackd n'a pas d'importance. (voir le lien plus bas).

Cette valeur est valable pour l'usb 1 et 2 (low et high speed) pour des raisons de compatibilité. Cette période est utilisée pour déterminer la fréquence à laquelle sont effectués les transferts de données sur le bus usb, celà est effectué grace à une interruption gardware et elle sert de référence temporelle à cette interruption, et aussi comme référence temporelle pour les transferts. L'usb2 met plus de paquets de données par période d'une miliseconde que l'usb1.

Les connections d'un microprocesseur comportent toujours au moins un bus de données, un bus d'adresses, une référence temporelle (sa fréquence de travail ou d'horloge fixée par un quartz), et des lignes d'interruption et d'alimentation. En simplifiant, une de ces lignes d'interruption est utilisée pour la synchro de l'usb. La fréquence de cette ligne d'interruption peut être obtenue dans le hardware en divisant la fréquence du quartz ou en comptant sa période. Elle peut aussi être obtenue de façon logicielle d'une de ces deux façons.

Il y a aussi des interruptions logicielles. Le but de toutes ces interruptions est de signaler au microprocesseur qu'il foit arrêter la tâche en cours pour basculer sur la tâche assignée à l'interruption, dans notre cas, s'occuper de ce qui se passe sur le bus usb.

Dans qjackctl, Sample rate = 48000, periods=3 et frames =16 donne 1ms. frames=32 donne 2 ms, frames =64 donne 4ms, etc.

Il y a une discussion à ce sujet ici: http://old.nabble.com/usb-and-jack-td26046087.html

Il semble que le minimum possible soit frames=64, donc une latence de 4 ms, mais que jack est instable. Il vaut donc mieux utiliser un nombre de frames plus élevé (128, ...). En résumé, il faut expérimenter.

Selon cette discussion, il n'y a plus besoin de mettre l'option nrpacks=1 pour snd-isb-audio car ce driver a été fixé il y a plusieurs années pour fournir lui-même des valeurs adéquates.

Dominique utilisateur non connecté Suisse
Pour CONFIG_USB_BANDWIDTH=n, un grep sur le fichier de config de mon kernel 3.0.4 ne me donne rien, donc cette option n'existe plus.

Par contre CONFIG_USB_DYNAMIC_MINORS existe toujours et doit donc être à n.

pianolivier utilisateur non connecté France
merci pour ces explications, je vais potasser tout ça et essayer de l'intégrer au wiki judicieusement dans les jours à venir :-)

oliv'

pianolivier utilisateur non connecté France
OK je pense avoir compris la théorie.
Par contre, j'ai fait plusieurs essais avec ma carte usb et je ne suis pas arrivé à des résultats concluants à part vu qu'en effet, jack accepte des tailles de périodes non multiples de 2.
Ca fonctionne vraiment chez toi pour obtenir de très basses latences Dominique ?

oliv'

Dominique utilisateur non connecté Suisse
pianolivier écrit :
OK je pense avoir compris la théorie.
Par contre, j'ai fait plusieurs essais avec ma carte usb et je ne suis pas arrivé à des résultats concluants à part vu qu'en effet, jack accepte des tailles de périodes non multiples de 2.
Ca fonctionne vraiment chez toi pour obtenir de très basses latences Dominique ?

oliv'

J'en sais rien, je n'ai pas de cartes son usb.

Je ne fais que reprendre ici les infos que l'on trouve sur le net et qui font sens pour moi et mes connaissances en électronique.

Le truc que la période de jackd doit être un multiple de 1 ms me semble correct pour toutes les cartes son qui utilisent la période d'interruption du bus usb pour synchroniser leur fréquence d'échantillonage. Maintenant, il faut voir chaque combinaison de hardware, c'est pourquoi il faut faire des tests et de fier avant tout au résultat de ces tests.

pianolivier utilisateur non connecté France
Ok je pense qu'on est sur la même longueur d'onde alors.
Je vais de ce pas déplacer/expliquer le truc de la latence usb dans la page QJackCtl_configuration et rajouter l'option du noyau USB_DYNAMIC_MINORS dans la page compiler un noyau linux 3.x pour la mao (même si l'aide intégrée de menuconfig déconseille cette option par defaut de toute facon).

oliv'

pianolivier utilisateur non connecté France
voilà c'est fait j'ai écrit un topo plus noob-compatible sur la page QJackCtl_configuration.
Si tu peux y aller faire un tour vérifier qu'il n'y a pas de grosse connerie je t'en serai reconnaissant wink

oliv'

pianolivier utilisateur non connecté France
Attention les yeux, la page Cartes son est officiellement en chantier pour quelques jours et ça pique.
Pour ce soir, j'ai implémenté le nouveau plan et déplacé les paragraphes dans tout les sens du coup c'est un peu cahotique pour le moment... on verra ça demain wink

oliv'

Dominique utilisateur non connecté Suisse
pianolivier écrit :
voilà c'est fait j'ai écrit un topo plus noob-compatible sur la page QJackCtl_configuration.
Si tu peux y aller faire un tour vérifier qu'il n'y a pas de grosse connerie je t'en serai reconnaissant wink

oliv'

J'ai rajouté quelques précisions que je trouve importantes pour celui qui veut vraiment y comprendre quelque chose... La formule de la latence et plus d'info sur les paramètres de cette formule. C'est une traduction de Jack frame, period, buffer info . Je regarderais plus tard pour la suite.

pianolivier utilisateur non connecté France
Ce n'est pas vraiment le sujet mais en effet, la page QJackCtl Configuration ne demande qu'à être améliorée, merci pour ces ajouts !
De mon coté je n'ai fait dans cette page qu'écrire le paragraphe sur l'USB basé sur tes explications, les liens et mes test. cool

oliv'

Dominique utilisateur non connecté Suisse
J'ai commencé une nouvelle page Test de latence avec JACK?, mais son titre ne s'affiche pas...

pianolivier utilisateur non connecté France
Dominique écrit :
J'ai commencé une nouvelle page Test de latence avec JACK?, mais son titre ne s'affiche pas...

mode admin
Je déplace ta question sur ce nouveau fil du forum vu qu'il s'agit d'un autre sujet que "Portail Matériel - choisir une carte son".
Du coup je te répond là-bas wink

oliv'

pianolivier utilisateur non connecté France
plop,

j'ai fini la ré-orga de la page Cartes son, en espérant qu'elle soit maintenant plus digeste et qu'elle colle mieux avec la liste des cartes son des utilisateurs.

Si ça vous va, je considère le sujet résolu et le fermerai dans quelques jours.

oliv'

pianolivier utilisateur non connecté France
edition admin pianoliv - Fil de discussion verrouillé.
Si besoin, adressez-vous à un modérateur pour le ré-ouvrir, patati-patata...

oliv'