Chargement...
 
Skip to main content

1 - Le matériel et les pilotes ALSA, FFADO, ...


Tablette Lenovo pour MAO ?

Bonjour à tous,
j'ai une tablette Lenovo miix 320 (atom x5/4go de ram) sur laquelle j'ai installé ubuntu Studio connecté à une carte son usb Roland Quad Capture.

Etant batteur je voudrais pouvoir utiliser la tablette en live afin de trigger ma grosse caisse.

J'utilise Ezdrummer grâce à Carla dans Reaper (natif linux). J'arrive à avoir une latence de 12ms avec Jack (512/88200khz) sans craquements mais cela reste trop élevé pour une utilisation live.
J'ai essayé Drumgizmo en pensant que ça demanderait moins de ressources que Ezdrummer, mais le résultat est le même. J'ai également essayé de désactiver tous les sons hormis la grosse caisse dans Ezdrummer en espérant libérer de la ram mais sans résultat non plus :/

Y a-t-il d'autres leviers que le buffer et la fréquence pour espérer abaisser la latence ?
Une distrib plus légère que ubuntu studio ou un plugin léger (peut-être en stand alone, sans utiliser de daw...) ? En fait je ne cherche qu'un son de kick 😛

Copy to clipboard
nicko@nicko-Lenovo-MIIX-320-10ICR:~$ cat /proc/asound/cards 0 [chtrt5645 ]: chtrt5645 - chtrt5645 LENOVO-80XF-LenovoMIIX320_10ICR-LNVNB161216 1 [Audio ]: HdmiLpeAudio - Intel HDMI/DP LPE Audio Intel HDMI/DP LPE Audio 2 [QUADCAPTURE ]: USB-Audio - QUAD-CAPTURE Roland QUAD-CAPTURE at usb-0000:00:14.0-2.2, high speed


Copy to clipboard
nicko@nicko-Lenovo-MIIX-320-10ICR:~$ aplay -l **** Liste des Périphériques Matériels PLAYBACK **** carte 0: chtrt5645 [chtrt5645], périphérique 0: 3 [] Sous-périphériques: 1/1 Sous-périphérique #0: subdevice #0 carte 0: chtrt5645 [chtrt5645], périphérique 1: Deep-Buffer Audio (*) [] Sous-périphériques: 1/1 Sous-périphérique #0: subdevice #0 carte 1: Audio [Intel HDMI/DP LPE Audio], périphérique 0: HdmiLpeAudio [Intel HDMI/DP LPE Audi] Sous-périphériques: 1/1 Sous-périphérique #0: subdevice #0 carte 1: Audio [Intel HDMI/DP LPE Audio], périphérique 1: HdmiLpeAudio [Intel HDMI/DP LPE Audi] Sous-périphériques: 1/1 Sous-périphérique #0: subdevice #0 carte 1: Audio [Intel HDMI/DP LPE Audio], périphérique 2: HdmiLpeAudio [Intel HDMI/DP LPE Audi] Sous-périphériques: 1/1 Sous-périphérique #0: subdevice #0 carte 2: QUADCAPTURE [QUAD-CAPTURE], périphérique 0: USB Audio [USB Audio] Sous-périphériques: 1/1 Sous-périphérique #0: subdevice #0


Copy to clipboard
nicko@nicko-Lenovo-MIIX-320-10ICR:~$ uname -a Linux nicko-Lenovo-MIIX-320-10ICR 5.8.0-48-lowlatency #54~20.04.1-Ubuntu SMP PREEMPT Sat Mar 20 23:24:50 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux


Copy to clipboard
nicko@nicko-Lenovo-MIIX-320-10ICR:~$ cat ~/.config/rncbc.org/QjackCtl.conf [Defaults] ConnectionsTabPage=1 MessagesStatusTabPage=0 PatchbayPath=/home/nicko/reaper_linux_x86_64/baie-reaper.xml SessionSaveVersion=true [Geometry] qjackctlConnectionsForm\geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\xc2\0\0\x1\x63\0\0\x3\b\0\0\x2\xbb\0\0\0\xc3\0\0\x1{\0\0\x3\a\0\0\x2\xba\0\0\0\0\0\0\0\0\x5\0\0\0\0\xc3\0\0\x1{\0\0\x3\a\0\0\x2\xba) qjackctlConnectionsForm\visible=false qjackctlMainForm\geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x1Q\0\0\x2\x65\0\0\x3N\0\0\x2\xe6\0\0\x1R\0\0\x2}\0\0\x3M\0\0\x2\xe5\0\0\0\0\0\0\0\0\x5\0\0\0\x1R\0\0\x2}\0\0\x3M\0\0\x2\xe5) qjackctlMainForm\visible=true qjackctlMessagesStatusForm\geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x1\\\0\0\0K\0\0\x3s\0\0\x2~\0\0\x1]\0\0\0\x63\0\0\x3r\0\0\x2}\0\0\0\0\0\0\0\0\x5\0\0\0\x1]\0\0\0\x63\0\0\x3r\0\0\x2}) qjackctlMessagesStatusForm\visible=false qjackctlPatchbayForm\geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x1\xc2\0\0\x1\x43\0\0\x4\xa2\0\0\x2\x82\0\0\x1\xc2\0\0\x1\x43\0\0\x4\xa2\0\0\x2\x82\0\0\0\0\0\0\0\0\x5\0\0\0\x1\xc2\0\0\x1\x43\0\0\x4\xa2\0\0\x2\x82) qjackctlPatchbayForm\visible=false qjackctlSessionForm\geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\x31\0\0\x1\xdf\0\0\x1p\0\0\0\0\0\0\0\x31\0\0\x1\xdf\0\0\x1p\0\0\0\0\0\0\0\0\x5\0\0\0\0\0\0\0\0\x31\0\0\x1\xdf\0\0\x1p) qjackctlSessionForm\visible=false [History] MessagesLogPathComboBox\Item1=qjackctl.log ServerConfigNameComboBox\Item1=.jackdrc ServerNameComboBox\Item1=(default) ServerPrefixComboBox\Item1=/usr/bin/jackd ServerPrefixComboBox\Item2=jackd ServerPrefixComboBox\Item3=jackdmp ServerPrefixComboBox\Item4=jackstart StartupScriptShellComboBox\Item1=a2jmidid -e & StartupScriptShellComboBox\Item2=a2midid -e & XrunRegexComboBox\Item1=xrun of at least ([0-9|\\.]+) msecs XrunRegexComboBox\Item2=d\xe9synchronisation (XRUN) d'au moins ([0-9|\\.]+) ms [Options] ActivePatchbay=false ActivePatchbayPath= ActivePatchbayReset=false AliasesEditing=false AliasesEnabled=false AlsaSeqEnabled=true BaseFontSize=0 BezierLines=false ConnectionsFont="Noto Sans,9,-1,5,50,0,0,0,0,0" ConnectionsIconSize=0 DBusEnabled=true DisplayBlink=true DisplayEffect=true DisplayFont1="Noto Sans,14,-1,5,75,0,0,0,0,0" DisplayFont2="Noto Sans,8,-1,5,50,0,0,0,0,0" JackClientPortAlias=0 JackClientPortMetadata=false JackDBusEnabled=false KeepOnTop=false LeftButtons=true MessagesFont="Noto Sans,9,-1,5,50,0,0,0,0,0" MessagesLimit=true MessagesLimitLines=1000 MessagesLog=false MessagesLogPath=qjackctl.log PostShutdownScript=false PostShutdownScriptShell= PostStartupScript=false PostStartupScriptShell= QueryClose=true QueryDisconnect=true QueryShutdown=true RightButtons=true ServerConfig=true ServerConfigName=.jackdrc ServerConfigTemp=false ShutdownScript=false ShutdownScriptShell= Singleton=true StartJack=false StartMinimized=false StartupScript=false StartupScriptShell= StdoutCapture=true StopJack=true SystemTray=false SystemTrayQueryClose=true TextLabels=true TimeDisplay=0 TimeFormat=0 TransportButtons=true XrunRegex=xrun of at least ([0-9|\\.]+) msecs [Presets] DefPreset=(default) [Program] Version=0.5.0 [Settings] Audio=0 Chan=0 Dither=0 Driver=alsa Frames=512 HWMeter=false HWMon=false IgnoreHW=false InChannels=0 InDevice="hw:QUADCAPTURE,0" InLatency=0 Interface= MidiDriver=seq Monitor=false NoMemLock=false OutChannels=0 OutDevice="hw:QUADCAPTURE,0" OutLatency=0 Periods=2 PortMax=512 Priority=95 Realtime=true SampleRate=48000 Server=/usr/bin/jackd ServerName= ServerSuffix= Shorts=false SoftMode=false StartDelay=2 Timeout=500 UnlockMem=false Verbose=false Wait=21333 WordLength=16 [Splitter] AlsaConnectView\sizes=38, 20, 38 AudioConnectView\sizes=269, 90, 269 InfraClientSplitter\sizes=12, 12 MidiConnectView\sizes=257, 43, 257 PatchbayView\sizes=38, 20, 38

France
L'interface audio dont tu parles, c'est bien la Roland quad-capture UA-55 ?

[...] ou un plugin léger (peut-être en stand alone, sans utiliser de daw...)


drumgizmo peut s'utiliser en ligne de commande -> pas besoin d'une STAN.
Oui c'est bien cette carte son que j'ai 😊

Je ne savais pas qu'on pouvait l'utiliser direct depuis le terminal, je vais essayer ça !
Salut collègue batteur, je comprends ton problème, j'y suis moi aussi confronté. Il faut commencer par mesurer la latence de boucle de ton matériel. Pour cela utilise jack_iodelay. Ensuite il faut tâtonner pour voir quelle partie de la chaîne ralenti le système.
Je suis actuellement à 8ms de latence de boucle. Pour mon utilisation, ça reste correct (140 à 150 bpm max à la noire), mais j'essaie de faire mieux
Si tu veux triguer ta grosse caisse, est ce pour du métal à haute vitesse ? il te faudrait dans ce cas 4 ou 5 ms idéalement. Il faut être assez agressif dans les réglages de Jack (48 kHz, 64 de tampon), sans xruns.
Ok je vais tester ça également.
Oui plutôt metal avec des tempos qui peuvent avoisiner les 220/240bpm. ^^
Sur ma config fixe sous windows je suis effectivement dans les 3ms.

J'essaie de voir ça aujourd'hui sinon ce week-end et je vous tiendrai au courant 😉
Lorsque tu mets tes paramètres dans jack, il te donne déjà sa latence théorique. Avec les paramètres que je t'ai indiqué, j'ai déjà 2,67 ms rien que pour jack. Ce n'est pas une machine très récente. Et sur ma machine principale bien plus puissante, même réglage, j'ai la même valeur, c'est indépendant de la puissance de la machine.
Il te faudrait mettre une fréquence d’échantillonnage encore plus rapide, et baisser la taille du tampon. Mais surveille les xruns.

Ensuite tu pourras travailler sur le reste (midi, audio, et conversion midi--> audio)
Comment sors tu l'audio (le son après trig)

Pour te donner un ordre de grandeur, à 240 bpm à la noire, ça te fais un coup toute les 250 ms (4 coups par seconde).
en double croche, c'est 16 fois moins , soit 15 ms. 5 ms c'est 1/3 de la double croche, à ces vitesses là, c'est acceptable.
France
il te donne déjà sa latence théorique.


Ça n'est pas une latence "théorique", c'est la latence introduite par JACK.
Théorique dans le sens "calculée" avec le taux d’échantillonnage, la taille de buffer, etc.
J'ai tourné ce soir en 96000 Hz et 32 de buffer, pas de xruns.
Jack en dessous de la ms, léger mieux sur le live.
Niko510, tu devrais essayer ces réglages plus agressifs de jack, tout en surveillant les xruns.
Rien que là tu gagnes plusieurs ms.
France
Je maintiens ici que l'utilisation de "latence théorique" de JACK dans le contexte d'utilisation MAO est une mauvaise idée et semble dénoter d'une mauvaise compréhension de ta part.

La latence donnée par JACK, c'est la latence qu'induit l'utilisation de JACK sur un système. Elle ne donne pas pas la latence totale du système (il faut ajouter les temps de conversion des DAC/ADC par exemple, et d'autres choses également), elle donne uniquement la latence que l'utilisation de JACK ajoute. Elle n'est pas plus théorique que pratique.

Quand JACK affiche une latence de 2,7 ms, c'est qu'il induit une latence supplémentaire de 2,7 ms. Point barre.
Olinux, je n'ai jamais dit le contraire. C'est pour ça que le test de boucle est important.
France
Tu mélanges beaucoup de concept et de mots.
J'en reviens à mon point de base : parler de "latence théorique de JACK" n'a pas de sens. La latence de jack est la latence de jack. Point barre. Elle n'est pas plus théorique que pratique.
France
Pas de latence ajoutée par JACK ?

Je suis allé lire la foire aux questions sur le site officiel et voilà la belle page qu'on y trouve : FAQ JACK Image .

nicko510 écrit:
Y a-t-il d'autres leviers que le buffer et la fréquence pour espérer abaisser la latence ?


Pour répondre à la question du fil, il y a beaucoup de levier pour abaisser la latence. En fait il faut commencer par être sur d'avoir mis en place tout ce qu'il faut pour atteindre le traitement du son à basse latence par ta distribution. Je ne connais pas Ubuntu Studio mais j'espère que c'est le cas.

Ensuite il faut effectivement appliquer les bons réglages de lancement de JACK et lui donner la bonne valeur de priorité. Elle doit être plus basse que les choses plus essentielles que le son et plus haute que celle des choses qui sont moins essentielles pour nous.
Plus le taux d'échantillonage est haut, plus la latence baisse. mais certains greffons ne supportent pas plus de 48kHz... bref c'est fonction de ce que tu utilises. De plus, l'utilisation du CPU va grimper à chaque hausse (le DSP aussi). C'est à doser donc.

La taille des tampons doit être réglée pour éviter les décrochages. Plus le tampon est petit, plus la latence est basse et plus le CPU est chargé (le DSP aussi). Pareil, trouver le bon dosage.

Ensuite il faudra éviter tout ce qui peut perturber la machine dans le traitement du son pour pouvoir atteindre le traitement le plus rapide et donc la plus faible latence.

un système allégé, effectivement, si tu dois ne traiter qu'un seul trig pour ta grosse caisse, il faut surement éviter de charger des gros logiciels qui savent faire énormément de choses qui ne vont pas te servir.

Une piste pourrait être d'utiliser un noyau temps réel si le noyau d'ubuntu studio ne te donne pas satisfaction.
France
@jujudusud : le lien que tu as mis ne parle pas de la même chose que ce dont on parlait dans cette discussion. L'utilisation de JACK ajoute un délai connu sous le nom de "latence de bloc" ("bloc latency" Image ) qui est fonction des configurations appliquées à JACK.
France
@olinuxx : D'accord. Merci.