Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]

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

> Forums de discussion > 5 - Les serveurs son : JACK, PulseAudio et autres... > [CONTOURNE] Passer des paramètres à cadence
Dernier post

[CONTOURNE] Passer des paramètres à cadence

piratebab utilisateur non connecté
Bonjour, je lance cadence via un script, un script par contexte (le script lance aussi raysession , fait des connexion Jack ..)

J'ai plusieurs cartes son (une par contexte), et je dois donc passer des paramètres à cadence via la ligne de commande pour lui indiquer la carte à utiliser en entrée et en sortie.
Je n'arrive pas à trouver de la doc sur ce sujet.
cadence --help lance cadence.
Savez vous si c'est possible ?
Toutes les docs que je trouve configurent cadence via l'interface graphique.
Si ce n'est pas possible, je devais utiliser autre chose pour configurer et lancer jack.

Houston4444 utilisateur non connecté France
piratebab, cadence est juste une interface pour contrôler jackdbus, si tu veux configurer JACK comme cadence le fait, utilise
jack_control
.

Celà dit, tu vas dire que je prêche pour ma paroisse mais pourquoi ne pas plutôt utiliser des sessions RaySession scriptés avec mémoire de configuration de JACK ?

Même si tu as d'autre choses à mettre dans ton script, c'est tout à fait possible.

piratebab utilisateur non connecté
j'utilise effectivement raysession, mais après avoir configuré et lancé jack, puis fait le ménage dans les liaisons audio créées automatiquement.
.
A l'poque je n'avais pas trouvé comment effacer les liaisons qui se font automatiquement au lancement de jack via raysession..

Houston4444 utilisateur non connecté France
Je pense que c'est plus simple d'utiliser les scripts de RS, tout est déjà écrit pour basculer la config de JACK avant d'ouvrir une session. Si la config est déjà la bonne, le script ouvre la session sans rien changer.

Dans le script d'ouverture de session
load.sh
, tu peux effectuer des déconnexions avec jack_disconnect avant que le script n'ouvre la session. par exemple le fichier load.sh donnerait ceci:

#!/bin/bash

########################################################################
#                                                                      #
#  Here you can edit the script runned                                 #
#  each time daemon order this session to be loaded                    #
#  WARNING: You can be here in a switch situation,                     #
#           some clients may be still alive                            #
#           if they are NSM compatible and capable of switch,          #
#           or if they are not NSM compatible at all                   #
#           but launched with NSM protocol and not via proxy           #
#                                                                      #
#  You have access the following environment variables                 #
#  RAY_SESSION_PATH : Folder of the current session                    #
#  RAY_SCRIPTS_DIR  : Folder containing this script                    #
#     ray-scripts folder can be directly in current session            #
#     or in a parent folder.                                           #
#  RAY_PARENT_SCRIPT_DIR : Folder containing the scripts that would    #
#     be runned if RAY_SCRIPTS_DIR would not exists                    #
#  RAY_SWITCHING_SESSION: 'true' or 'false'                            #
#     'true' if session is switching from another session              #
#     and probably some clients are still alive.                       #
#                                                                      #
#  To get any other session informations, refers to ray_control help   #
#     typing: ray_control --help                                       #
#                                                                      #
########################################################################

# set it to 'false' if you want the script
# not to handle the ports of the PulseAudio -> JACK bridge
export RAY_MANAGE_PULSEAUDIO=true

# set it to 'false' if you want the script
# if you want the script to trust the parameters of JACK
export RAY_JACK_RELIABILITY_CHECK=true

# set it to 'false' if you want the script to not consider hostname
# then, a session can not be open on another machine
# if it doesn't have the same sound interface
export RAY_HOSTNAME_SENSIBLE=true

ray-jack_config_script load || exit 0
ray_control hide_script_info

jack_disconnect port_entree port_sortie

ray_control run_step


Pour info, je suis en train de retravailler la mémoire des connexions (ray-jackpatch) pour qu'à son démarrage il déconnecte les connexions qui n'étaient pas présentes à la dernière sauvegarde, si il y a une sauvegarde et si les ports en question étaient présents (ça veut dire qu'il va être obligé de sauvegarder l'ensemble des ports présents). Comme la gestion des connexions est un paramètre hyper sensible (quand on touche à ça y a moyen de flinguer les sessions de pas mal de monde), je marche sur des oeufs il faudra beaucoup de tests ;).

piratebab utilisateur non connecté
Je suis plus radical dans mon approche.
après lancement de jack (aujourd’hui via cadence, mais je vais changer), je déconnecte tout via le script bash (j'ai de nombreuses connexions entre la carte son et pulseaudio). J'ai une ligne disconnect par connexion, je n'ai pas trouvé de commande "disconnect-all".
Je lance ensuite RaySession qui me lance ardour et refait les connections mémorisées entre ardour et la carte son.
Comme ça c'est plus lisible si je dois modifier des connexions en cours de session.

piratebab utilisateur non connecté
Je me suis repenché sur le sujet, avec une nouvelle carte et un nouvel usage.
J'ai conservé la meme logique pour le script:
- je lance jack avec qjaclctl et un fichier de config enregistré
- je déconnecte toutes les liaisons entre les ponts pulse audio et la carte son (ce sont les mêmes lignes quelle que soit l'interface audio, seul leur nombre change en fonction du nombre E/S de l'interface)
- je lance raysession avec la persistance des connections (connexion des entrées ardour sur les entrées de l'interface)

9a fonctionne plutot bien, sauf bémol:
- les connections de la sortie auditionner d'ardour vers l'interface réapparaissent à chaque démarrage
- jack s’arrête après le démarrage d'ardour (ça ne me le faisait pas avec une autre interface)

A suivre

piratebab utilisateur non connecté
Pour ma nouvelle config, j'ai opté pour qjackctl, et sa sauvegarde de configuration qu'on peut rappeler lors du lancement en CLI.
qjackctl

piratebab utilisateur non connecté
voici le script que j'utilise pour configurer ma session (qjackctl, ardour, raysession).
Si ça peut aider quelqu'un ....
#!/bin/bash

# Lancer qjackctl avec le fichier de config
qjackctl -p enregistrement_batterie -s &

sleep 3
#Démuter les sorties de la focusrite

cd ~/scarlett_yaml
python3 scarlett_yaml.py load scarlett-18i20-default.yaml

sleep 3
#lister les ports de connexion
# jack_lsp -c

# jack_disconnect
jack_disconnect system:capture_1 "PulseAudio JACK Source:front-left"
jack_disconnect system:capture_2 "PulseAudio JACK Source:front-right"
jack_disconnect system:capture_3 "PulseAudio JACK Source:rear-left"
jack_disconnect system:capture_4 "PulseAudio JACK Source:rear-right"
jack_disconnect system:capture_5 "PulseAudio JACK Source:front-center"
jack_disconnect system:capture_6 "PulseAudio JACK Source:lfe"
jack_disconnect system:capture_7 "PulseAudio JACK Source:side-left"
jack_disconnect system:capture_8 "PulseAudio JACK Source:side-right"
jack_disconnect system:capture_9 "PulseAudio JACK Source:aux0"
jack_disconnect system:capture_10 "PulseAudio JACK Source:aux1"
jack_disconnect system:capture_11 "PulseAudio JACK Source:aux2"
jack_disconnect system:capture_12 "PulseAudio JACK Source:aux3"
jack_disconnect system:capture_13 "PulseAudio JACK Source:aux4"
jack_disconnect system:capture_14 "PulseAudio JACK Source:aux5"
jack_disconnect system:capture_15 "PulseAudio JACK Source:aux6"
jack_disconnect system:capture_16 "PulseAudio JACK Source:aux7"
jack_disconnect system:capture_17 "PulseAudio JACK Source:aux8"
jack_disconnect system:capture_18 "PulseAudio JACK Source:aux9"


jack_disconnect system:playback_1 "PulseAudio JACK Sink:front-left"
jack_disconnect system:playback_2 "PulseAudio JACK Sink:front-right"
jack_disconnect system:playback_3 "PulseAudio JACK Sink:rear-left"
jack_disconnect system:playback_4 "PulseAudio JACK Sink:rear-right"
jack_disconnect system:playback_5 "PulseAudio JACK Sink:front-center"
jack_disconnect system:playback_6 "PulseAudio JACK Sink:lfe"
jack_disconnect system:playback_7 "PulseAudio JACK Sink:side-left"
jack_disconnect system:playback_8 "PulseAudio JACK Sink:side-right"
jack_disconnect system:playback_9 "PulseAudio JACK Sink:aux0"
jack_disconnect system:playback_10 "PulseAudio JACK Sink:aux1"
jack_disconnect system:playback_11 "PulseAudio JACK Sink:aux2"
jack_disconnect system:playback_12 "PulseAudio JACK Sink:aux3"
jack_disconnect system:playback_13 "PulseAudio JACK Sink:aux4"
jack_disconnect system:playback_14 "PulseAudio JACK Sink:aux5"
jack_disconnect system:playback_15 "PulseAudio JACK Sink:aux6"
jack_disconnect system:playback_16 "PulseAudio JACK Sink:aux7"
jack_disconnect system:playback_17 "PulseAudio JACK Sink:aux8"
jack_disconnect system:playback_18 "PulseAudio JACK Sink:aux9"
jack_disconnect system:playback_19 "PulseAudio JACK Sink:aux10"
jack_disconnect system:playback_20 "PulseAudio JACK Sink:aux11"

#connexion sorties casques et moniteur de l'interface a pulseAudio Jack Sink pour le playback
jack_connect system:playback_1 "PulseAudio JACK Sink:front-left"
jack_connect system:playback_2 "PulseAudio JACK Sink:front-right"
jack_connect system:playback_3 "PulseAudio JACK Sink:front-left"
jack_connect system:playback_4 "PulseAudio JACK Sink:front-right"
jack_connect system:playback_9 "PulseAudio JACK Sink:front-left"
jack_connect system:playback_10 "PulseAudio JACK Sink:front-right"


echo "fin des deconnexions"
echo "lancement session "repete `date +"%D %T"`
raysession -s enregistrement_batterie &

sleep 15
#deconnexions post lancement session
echo "****** deconnexions post lancement session ******"

for numero in {1..18}; do
    sortie="system:capture_$numero"
    echo $sortie
    jack_disconnect $sortie "ardour:physical_audio_input_monitor_enable"
done

echo "****** fin deonnexions post lancement session ******"


sleep 2
lxterminal


Houston4444 utilisateur non connecté France
piratebab, c'est largement optimisable.
Pour les ponts pulseaudio, je ne sais pas comment tu les lances, mais as-tu vraiment besoin d'autant d'entrées/sorties ? Tu peux tout à fait configurer la chose pour avoir une paire stéréo pour PulseAudio JACK Source, et une pour PulseAudio JACK Sink, voire uniquement du Sink (c'est assez rare d'avoir besoin du Source). Plus les ponts ont de ports, plus ils pompent de ressources. De plus, tu peux leur dire directement de démarrer sans se connecter aux entrées/sorties matérielles. Si jamais tu es sous LZK4, c'est super facile normalement avec Cadence, sinon ça dépend comment tu lances les ponts.

Plutôt que de faire
raysession -s enregistrement_batterie &
sleep 15


tu peux faire simplement
ray_control open_session enregistrement_batterie


cette commande se termine quand la session est chargée, donc pas besoin d'attendre un temps arbitraire. ça démarre pas l'interface graphique de RS, mais tu peux le faire avec:
raysession &

peu importe quand d'ailleurs.

Pour les auto-connections d'ardour à tous les ports d'entrée matérielles, je trouve ça également très pénible, la solution se trouve dans le fichier de config d'ardour, pour ardour6 ~/.config/ardour6/config.
Cherche la ligne avec:
Option name="work-around-jack-no-copy-optimization" value="1"/>


mets la value à "0". Hop, il ne fera plus ce truc horrible.

piratebab utilisateur non connecté
Merci pour tes réponses, je vais regarder. Je suis sous LZK4 pour cette machine.
Pour ardour, ce sera bien plus simple si il ne me rajoute pas des connexions tout seul, je vais modifier la config (mais bon, ça m'a permis de chercher comment itérer sur un nom de variable en Bash :-))
Concernant les ponts pulseaudio, le nombre de ports est directement lié au nombre d'E/S de l'interface son. Si j'ai une interface à 2 entrées-2 sorties, les ponts pulseaudio n'auront que 2 ports. Mais la je suis sur une scarlett 18i20, et même si je n'ai pas d'extension ADAT, alsa crée la totalité des ports. Je lance les ponts via qjackctl.
Le sleep 15 est nécessaire non pas à cause de raysession, mais de ardour. Il met un certain temps à démarrer et établir les connexions.
Pour l'instant je préfère avoir la GUI RaySession, il m'arrive de faire quelques améliorations sur les connexions, et je les enregistre immédiatement dans Raysession avant d'oublier!

Pour moi le débat cadence/qjackctl est clos pour ce genre d'application. Je conserve qjackctl, car avec l'option -p, je peux passer d'une interface son à l'autre sans problème.

Houston4444 utilisateur non connecté France
Pour Ardour, c'est clair que c'est assez obscur, on peut pas le deviner, je sais plus comment je l'ai su.

Pour les ponts pulseaudio, le comportement que tu décris n'est qu'un comportement par défaut, regarde par exemple : Image

piratebab écrit :
Le sleep 15 est nécessaire non pas à cause de raysession, mais de ardour.


RaySession sait bien quand ardour a fini de charger son projet, puisqu'il lui dit. Quand
ray_control open_session ma_session
est terminé, c'est qu'Ardour est chargé ! (sauf si vraiment, il est beaucoup plus long a la détente que d'habitude).

piratebab écrit :
Pour moi le débat cadence/qjackctl est clos pour ce genre d'application. Je conserve qjackctl, car avec l'option -p, je peux passer d'une interface son à l'autre sans problème.



L'option est intéressante en effet, celà dit, utiliser la mémoire de config de JACK dans RaySession revient à peu près au même sauf que c'est plus simple à gérer je pense, par exemple dans le cas précis, tu aurais pu obtenir le même résultat en ne scriptant que les déconnections "physical monitor" de Ardour.

piratebab utilisateur non connecté
Je vais regarder si qjackctl sait limiter le nombre de ports pulseaudio ouverts .
Pour le sleep 15, vu que je lance RaySession avec un & à la fin, il me rends la main immédiatement, ardour n'est pas encore lancé.

Houston4444 utilisateur non connecté France
piratebab écrit :
Pour le sleep 15, vu que je lance RaySession avec un & à la fin, il me rends la main immédiatement, ardour n'est pas encore lancé.


c'est bien pour ça que je te conseille plutôt la commande
ray_control open_session enregistrement_batterie

sans & à la fin, la commande est terminée quand ardour est prêt, du coup pas besoin de sleep.


Pour pulseaudio, dans qjackctl, dans la commande "executer un script après le démarrage", la commande par défaut commence par:
pactl load-module module-jack-sink && ...


si tu veux juste une paire stéréo (à priori j'imagine que t'es pas sur un home cinema ;)), tu rajoutes l'argument channels=2, comme ceci:
pactl load-module module-jack-sink channels=2 && ...


Si tu veux pas qu'il se connecte, tu rajoutes l'argument connect=no. Si tu veux pas de Source (franchement vire le si t'en as pas besoin), tu vires la commande qui suit dans la ligne pré-écrite
pactl load-module module-jack-source

.

Je me rends compte que chez moi, la GUI de qjackctrl a tendance à freezer... bizarre, sans doute une config mal acceptée que j'avais du faire à un moment donné.

piratebab utilisateur non connecté
Merci, je vais tester ça à l'occasion.
Une sortie stéréo me suffit, c'est pour le playback, le métronome ....
Pour le source, à priori pas besoin sur cette config.

Afficher les articles :
Aller au forum :

Documentation [Afficher / Cacher]

Faire un don
[Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

calixtus06, 14:33, jeu. 28 mars 2024: Bonjour et bienvenue à b.vl :-)
calixtus06, 09:30, mer. 27 mars 2024: Bonjour et bienvenue à Noar :-)
olinuxx, 18:50, lun. 25 mars 2024: Bonjour et bienvenue à Ted Demore cool
olinuxx, 17:52, dim. 24 mars 2024: Bonjour et bienvenue à Noitavon cool
calixtus06, 11:07, jeu. 21 mars 2024: Bonjour et bienvenue à obds, ceric :-)
obds, 16:12, mar. 19 mars 2024: Cet édito est juste parfait. Trop beau !
olinuxx, 11:48, ven. 15 mars 2024: Bonjour et bienvenue à Jerry cool
calixtus06, 18:03, mer. 13 mars 2024: Bonjour et bienvenue à tanguero :-)
olinuxx, 11:01, dim. 10 mars 2024: Bonjour et bienvenue à lolo cool
bda, 16:59, sam. 09 mars 2024: Chapeau pour l'édito. Vous êtes au top les gars :-)
allany, 07:20, jeu. 07 mars 2024: Ça ne fait jamais de mal, c'est l'éditorial ! [Lien]
olinuxx, 19:52, mer. 06 mars 2024: Bonjour et bienvenue à TrkNrk cool