Chargement...
 
Skip to main content

5 - Les serveurs son : JACK, PipeWire, PulseAudio et autres...


[CONFIGURATION] Jack 1.9.5 pour ladish avec .asoundrc perso

Bonjour a tous,
je m'arrache les cheveux depuis plus d'une semaine et là je désespère ... Oui, oui, je viens un peu pour pleurnicher 😂

Alors première question a laquelle je répond avant qu'on ne me la pose :
Pourquoi Jack2 et pas Jack1 ?
Réponse : Parceque je veux utiliser Ladish et que seul jack2 propose la compilation avec le mode jackdbus (si j'ai bien compris ...)

Jusqu'a ce jour, j'utilisais jack1 des dépôts proposer dans Ubuntu Studio 9.10 et tout était en ordre. Je dispopse d'une carte son Audio4DJ et le fichier .asoundrc avec lequel jack1 fonctionnait parfaitement est le suivant :

Copy to clipboard
pcm.multi { type multi # bind hardware devices slaves.a.pcm "hw:1,0,0" slaves.a.channels 2 slaves.b.pcm "hw:1,0,1" slaves.b.channels 2 bindings.0.slave a bindings.0.channel 0 bindings.1.slave a bindings.1.channel 1 bindings.2.slave b bindings.2.channel 0 bindings.3.slave b bindings.3.channel 1 } # JACK will be unhappy if there is no mixer to talk to, so we set # this to card 0. This could be any device but 0 is easy. #note that audio4dj is actually card 1 -- we are faking mixer elements so JACK is happy: ctl.multi { type hw card 3 }


Seulement voilà ... depuis mon passage a jack2 (1.9.5), impossible de démarrer jackdbus avec ce fichier... J'ai donc recompilé jack2 en mode jackd (et non jackdbus) pour faire des test avec qjackctl, mais c'est la même histoire. Par contre, si je lance jackd avec hw:1 ou hw:1,1 ca marche ... mais je ne dispose que de deux entrées/sorties au lieu de quatre. J'ai aussi essayé de tourner mon asoundrc dans tous les sens:

slaves.a.pcm "hw:1,0"
slaves.a.channels 2
slaves.b.pcm "hw:1,1"
slaves.b.channels 2


mais rien a faire ...

Le problème se situe ici :
Copy to clipboard
creating alsa driver ... multi|multi|512|3|44100|0|0|nomon|swmeter|-|32bit control open "multi" (No such file or directory)


Voici le log complet (en mode bavard ... ) lorsque je demmare jackd :
Copy to clipboard
11:58:19.035 Baie de brassage désactivée. 11:58:19.039 Réinitialisation des statistiques. Cannot connect to server socket err = Aucun fichier ou dossier de ce type Cannot connect to server socket jack server is not running or cannot be started 11:58:19.099 Changement du graphique des connexions ALSA. 11:58:19.288 Changement des connexions ALSA. 11:59:10.074 Script de démarrage... 11:59:10.075 artsshell -q terminate Cannot connect to server socket err = Aucun fichier ou dossier de ce type Cannot connect to server socket jack server is not running or cannot be started sh: artsshell: not found 11:59:10.476 Script de démarrage terminé avec statut de sortie=32512. 11:59:10.476 JACK démarre... 11:59:10.477 /usr/bin/jackd -v -R -u -dalsa -r44100 -p512 -n3 -D -Cmulti -Pmulti 11:59:10.487 JACK a été démarrer avec le PID=6076. no message buffer overruns could not open driver .so '/usr/lib/jack/jack_oss.so': /usr/lib/jack/jack_oss.so: undefined symbol: _jack_get_microseconds no message buffer overruns could not open component .so '/usr/lib/jack/jack_oss.so': /usr/lib/jack/jack_oss.so: undefined symbol: _jack_get_microseconds jackdmp 1.9.4 Copyright 2001-2005 Paul Davis and others. Copyright 2004-2009 Grame. jackdmp comes with ABSOLUTELY NO WARRANTY This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING for details JACK server starting in realtime mode with priority 10 Jack: Create non RT thread Jack: ThreadHandler: start Jack: JackSocketServerChannel::Open Jack: Bind: addr.sun_path /dev/shm/jack_default_1000_0 Jack: JackSocketServerChannel::BuildPoolTable size = 1 Jack: JackEngine::Open Jack: Connect: addr.sun_path /dev/shm/jack_default_1000_0 Jack: apparent rate = 44100 Jack: frames per period = 512 Jack: capture device multi Jack: playback device multi Jack: JackDriver::Open capture_driver_name = multi Jack: JackDriver::Open playback_driver_name = multi Jack: JackEngine::ClientInternalOpen: name = system Jack: JackEngine::AllocateRefNum ref = 0 Jack: JackFifo::Allocate name = /dev/shm/jack_fifo.1000_default_system Jack: JackEngine::NotifyAddClient: name = system Jack: JackGraphManager::SetBufferSize size = 512 Jack: JackConnectionManager::DirectConnect first: ref1 = 0 ref2 = 0 Jack: JackGraphManager::ConnectRefNum cur_index = 0 ref1 = 0 ref2 = 0 Jack: JackDriver::SetupDriverSync driver sem in flush mode creating alsa driver ... multi|multi|512|3|44100|0|0|nomon|swmeter|-|32bit control open "multi" (No such file or directory) Jack: ~JackDriver Cannot initialize driver Jack: JackEngine::Close Jack: JackClientSocket::Close Jack: JackServerSocket::Close /dev/shm/jack_default_1000_0 Jack: no message buffer overruns Jack: JackPosixThread::Stop Jack: ThreadHandler: exit JackServer::Open() failed with -1 Jack: Succeeded in unlocking 73670936 byte memory area Jack: JackShmMem::delete size = 0 index = 0 Jack: ~JackDriver Jack: JackEngine::~JackEngine Jack: Succeeded in unlocking 1012 byte memory area Jack: JackShmMem::delete size = 0 index = 1 Jack: cleaning up shared memory Jack: cleaning up files Jack: unregistering server `default' Failed to start server 11:59:10.788 JACK a été arrêté avec statut de sortie=255. 11:59:10.788 Script post-extinction... 11:59:10.789 killall jackd jackd: no process found 11:59:11.202 Script post-extinction terminé avec statut de sortie=256. 11:59:14.624 Impossible de connecter le serveur JACK comme client. - L'opération a échoué. - Incapable de se connecter au serveur. Veuillez consulter la fenêtre des messages pour plus d'informations. Cannot connect to server socket err = Aucun fichier ou dossier de ce type Cannot connect to server socket jack server is not running or cannot be started


Je désespère vraiment ... Quelqu'un a-t-il réussi a faire fonctionner jack2 avec un .asoundrc personalisé ?

Je vous remerci par avance et a bientôt ...

Jean
France
je vais peut etre compliquer le probleme, mais AFAIK ladish de fonctionne qu'avec jackdbus, donc il faudrait peut etre commencer par installer jack en fonction
de plus, je crois aussi que qjackctl ne fonctionne pas avec jackdbus, pour simplifier l'affaire...😕

question de n00b : a quoi te sert un .asoundrc perso ?
je vais peut etre compliquer le probleme, mais AFAIK ladish de fonctionne qu'avec jackdbus, donc il faudrait peut etre commencer par installer jack en fonction
de plus, je crois aussi que qjackctl ne fonctionne pas avec jackdbus, pour simplifier l'affaire...😕

question de n00b : a quoi te sert un .asoundrc perso ?


Je sais que ladish ne fonctionne qu'en jackdbus. Mais comme ca ne marchait pas, j'ai voulu tester le daemon jackd (1.9.5) pensant que cela provenait de jackdbus. Si jackd ne fonctionne pas, jackdbus ne pourra pas fonctionner non plus. Donc, je veux dabord faire marcher jackd sans ladish.

.asoundrc, me sert a "grouper" mes quatres sorties de la carte son. En effet, un pcm de type multi üpermet de faire cela. Sans quoi, il est impossible d'utiliser les quatre sortie puisque le kernel voit 2 interfaces : hw:1,0 et hw:1,1. Jack ne peux utiliser qu'une seule interface a la fois. .asoundrc permet de combiner plusieurs interfaces en une seule.

Voilà ... 😉
France
mmm je seche un peu la..
tu peux essayer avec une commande plus simple ?
du genre :
Copy to clipboard
jackd -v -dalsa -dmulti -r44100 -p512 -n3 -o4


ps : jack2 n'accepte plus l'option -R, elle est activée automatiquement, même si cela n'est pas la source de ton problème...🙄
mmm je seche un peu la..
tu peux essayer avec une commande plus simple ?
du genre :
Copy to clipboard
jackd -v -dalsa -dmulti -r44100 -p512 -n3 -o4


ps : jack2 n'accepte plus l'option -R, elle est activée automatiquement, même si cela n'est pas la source de ton problème...🙄


Je ne savais pas que Jack2 ne prenait plus l'option -R. Merci du tuyau.
Je viens d'installer une version "vierge" de Ubuntu 9.10 sur une nouvelle partition et ai procédé a l'installation complète de ladish + jackdbus en suivant le tuto [ ladishdev ] a la lettre présent sur le site. Le résultat est est le même. J'ai donc désinstallé jackdbus puis recompilé en jackd pour faire des tests.

Le problème se situe a coup sur au niveau du .asoundrc, mais je ne trouve aucune info sur internet concernant jack2 a ce sujet ... Je me demande si tous simplement jack2 ne permet pas d'utiliser des interfaces pcm de type multi ... 😧

Voici le résultat de jackd -v -dalsa -dmulti -r44100 -p512 -n3 -o4 :

Copy to clipboard
jeant@Dresdnerlinux:~$ jackd -v -dalsa -dmulti -r44100 -p512 -n3 -o4 jackdmp 1.9.6 Copyright 2001-2005 Paul Davis and others. Copyright 2004-2009 Grame. jackdmp comes with ABSOLUTELY NO WARRANTY This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING for details no message buffer overruns could not open driver .so '/usr/lib/jack/jack_oss.so': /usr/lib/jack/jack_oss.so: undefined symbol: _jack_get_microseconds no message buffer overruns could not open component .so '/usr/lib/jack/jack_oss.so': /usr/lib/jack/jack_oss.so: undefined symbol: _jack_get_microseconds JACK server starting in realtime mode with priority 10 Jack: Create non RT thread Jack: ThreadHandler: start Jack: JackSocketServerChannel::Open Jack: Bind: addr.sun_path /dev/shm/jack_default_1000_0 Jack: JackSocketServerChannel::BuildPoolTable size = 1 Jack: JackEngine::Open Jack: Connect: addr.sun_path /dev/shm/jack_default_1000_0 Jack: playback device multi Jack: capture device multi Jack: apparent rate = 44100 Jack: frames per period = 512 Jack: JackDriver::Open capture_driver_name = multi Jack: JackDriver::Open playback_driver_name = multi Jack: JackEngine::ClientInternalOpen: name = system Jack: JackEngine::AllocateRefNum ref = 0 Jack: JackFifo::Allocate name = /dev/shm/jack_fifo.1000_default_system Jack: JackEngine::NotifyAddClient: name = system Jack: JackGraphManager::SetBufferSize size = 512 Jack: JackConnectionManager::DirectConnect first: ref1 = 0 ref2 = 0 Jack: JackGraphManager::ConnectRefNum cur_index = 0 ref1 = 0 ref2 = 0 Jack: JackDriver::SetupDriverSync driver sem in flush mode creating alsa driver ... multi|multi|512|3|44100|0|4|nomon|swmeter|-|32bit control open "multi" (No such file or directory) Jack: JackDriver::Close Jack: JackConnectionManager::DirectDisconnect last: ref1 = 0 ref2 = 0 Jack: JackGraphManager::DisconnectRefNum cur_index = 0 ref1 = 0 ref2 = 0 Jack: JackEngine::ClientCloseAux ref = 0 Jack: JackGraphManager::RemoveAllPorts ref = 0 Jack: JackFifo::Destroy name = /dev/shm/jack_fifo.1000_default_system Jack: ~JackDriver Cannot initialize driver Jack: JackEngine::Close Jack: JackClientSocket::Close Jack: JackServerSocket::Close /dev/shm/jack_default_1000_0 Jack: no message buffer overruns Jack: JackPosixThread::Stop Jack: ThreadHandler: exit JackServer::Open() failed with -1 Jack: Succeeded in unlocking 82213148 byte memory area Jack: JackShmMem::delete size = 0 index = 0 Jack: ~JackDriver Jack: JackEngine::~JackEngine Jack: Succeeded in unlocking 1012 byte memory area Jack: JackShmMem::delete size = 0 index = 1 Jack: cleaning up shared memory Jack: cleaning up files Jack: unregistering server `default' Failed to start server

France
Le problème se situe a coup sur au niveau du .asoundrc

mouaif apparement tu as raison...
je me déclare incompétant sur le sujet et passe le relais 😕

bon courage !
Merci a toi quand même 😉

Bon je vais quand même exposer le pourquoi je veux utiliser ladish. Peut être q'une solution alternative existe ...

Alors voilà, je suis équipé de deux platine vinyl. Je mix bien évidemment des vinyl classique mais également des fichiers avec xwax. J'aimerais aussi pouvoir ajouter des instruments a la volé dans jack (genre sooperlooper ou autre) sans avoir a me soucier des branchements en plein live ... Parceque actuellement, je ne vous explique pas le bordel : Chercher un disque, le caler sur le morceau précédent (ca prend un peu de temps), démarrer un plugin avec jack, le connecter, déconnecter xwax pour reconnecter ailleur enfin bref ... c'est complètement ingérable ... et me suis dit que la solution pouvait peut être se trouver du côté de ladish.

En fait, dans l'idéal, je cherche a pouvoir écrire des petits scripts pour jack du genre :
déconnecte un tel et connecte celui-ci.
De cette facon , je n'aurais quand lancer ces script dans un terminal et le tour est joué ...
Malheureusement, je n'ai encore rien trouvé de tel 😕
France
En fait, dans l'idéal, je cherche a pouvoir écrire des petits scripts pour jack du genre :
déconnecte un tel et connecte celui-ci.
De cette facon , je n'aurais quand lancer ces script dans un terminal et le tour est joué ...
Malheureusement, je n'ai encore rien trouvé de tel

je suppose que ladish est le plus conseillé dans ce genre de cas, et surtout la solution de simplicité (quand son installation se fait sans probleme)
le truc c'est qu'etant un programme en pleine évolution, il n'est peut etre pas assez stable en configuration "live"
sinon tu peut regarder du coté de son prédécesseur lash
personnellement, j'utilise des scripts pleine balle pour lancer mes apps, c'est simple, efficcace, je n'ai jamais eu de probleme avec, mais c'est de la bidouille et ca prend du temps
si tu veux te lancer la dedans, voici 2 ou 3 conseils :
  • commence par faire un script de lancement des applications, en utilisant a gogo la terminaison & a la fin de tes lignes, et ne pas hesiter a rajouter des sleep aussi (vois en fonction des capacité de ta machine pour en mettre le moins possible, il faut faire un certain nombre d'essais
    la premiere ligne de ton script (apres #!/bin/bash) sera bien sur jackd
  • une fois que ca marche, fixe l'ordre de tes cartes sons une bonne fois pour toutes dans le fichier alsa.conf
  • ensuite utilise aconnect (pour le midi) et jack_lsp (pour l'audio) pour connaitre les noms/numéros de tes différents périphériques, puis ecrit un script utilisant aconnect et jack_connect pour connecter toutes tes apps
  • un bon truc a faire aussi, c'est de connaitre un peu le fonctionnement des regles udev, en effet, par exemple chez moi, je peut déconnecter mon pad/clavier a tout moment et lorsque je le reconnecte, ca lance le script de connection utilisant jack_connect et aconnect
Ne te lance la dedans que si tu as du temps a perdre !, mais si c'est le cas et que tu rencontre des problemes, n'hesite pas a ouvir un sujet de forum adéquat, je serai ravi de faire découvrir cette manière de procéder !

encore une fois, bon courage ! 😬

oliv'
Merci beaucoup a toi Olivier, je crois que je vais me lancer la dedans. Tant qu'a perdre du temps dans des installs qui ne marche pas, autant apprendre la méthode des scripts...

J'ai donc ouvert un post ici : http://www.linuxmao.org/tikiwiki/tiki-view_forum_thread.php?topics_offset=1&forumId=16&comments_parentId=20229" class="wiki wikinew text-danger tips">http://www.linuxmao.org/tikiwiki/tiki-view_forum_thread.php?topics_offset=1&forumId=16&comments_parentId=20229