Chargement...
 
Skip to main content

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


[RESOLU] Cadence connexion en ligne de commande de prérifériques (Je n'aime pas la souris)

France
Bonjour,

Je pense que c'est tout simple 😊 (mais pas trouvé)

Je cherche à connecter automatiquement en ligne de commande mon clavier maître à une interface midi à dès que je démarre Cadence.
Dans l'idéale démarrer également cadence au démarrage de mon script bash serait un plus.

En l’occurrence :
la sortie midi
Copy to clipboard
Bus 001 Device 003: ID 1235:001b Focusrite-Novation Impulse 61

vers l'entrée midi
Copy to clipboard
Bus 001 Device 005: ID 0582:0009 Roland Corp. UM-1(E/S/X)


Je cherche une commande du style :

#Démarrer Cadence
start Cadence
#Connecter mon clavier maître usb vers mon interface usb midi (connecté à mon zynthian en midi DIN)
connect out Impulse 61 to input UM1

Comme cela, cela m'évitera d'avoir toujours à cliquer à chaque ouverture de session pour connecter mes périphériques entres eux.

Pour information, dans le journal de Cadence, lors de la connexion en mode GUI j'ai cette cela :
Copy to clipboard
Thu Nov 3 19:51:22 2022: Connecting 'system:midi_capture_2' to 'system:midi_playback_4'



Toute aide sera la bienvenue.
France
bonjour.
En fait ça dépend si tu utilises le pont A2J (Alsa to Jack), et si oui, en exportant les ports matériels ou pas.

Dans tous les cas je te conseille de l'utiliser (avec l'export des ports matériels), c'est plus pratique.

Ensuite pour connecter les ports, qui sont des ports JACK midi du coup, la commande magique est:
Copy to clipboard
jack_connect out_port in_port

tu trouveras le nom exact de tes ports avec la commande
Copy to clipboard
jack_lsp


Si tu préfère te passer du pont A2J, il me semble que la commande magique est
Copy to clipboard
aconnect

mais là je ne sais plus trouver le nom des ports ALSA midi.


Démarrer Cadence pourquoi faire ? En ce qui me concerne (et je ne suis pas le seul), je ne démarre Cadence que pour changer de config. J'ai réglé Cadence sur "Démarrage de JACK avec la session" et ça roule.

tu peux mettre un script au démarrage qui attends que JACK soit démarré pour faire tes connexions par exemple:
Copy to clipboard
while ! jack_control status >/dev/null;do sleep 0.5 done while ! a2j_control status >/dev/null;do sleep 0.5 done et_hop_je_connecte # et puis si tu veux lancer cadence exec cadence

France
Bonsoir Houston,

Merci pour ton aide.
Bon cela commence mal, les commandes jack_connect et jack_lsp ne sont pas présentes sur ma distrib, il doit me manquer des paquets je regarde cela.
Par contre la commande aconnect est présente et je reviens dès que possible.

A bientôt
France
Bonjour,

Merci cela fonctionne, par contre j'ai un petit souci.
Si je liste mes périphériques lorsque je lance jackd ainsi :

Copy to clipboard
jackd -R -dalsa -dhw:UR22mkII -r44100 -p256 -n2


Mon clavier n'est pas listé, ainsi que mes autres interfaces midi.

Voilà ce que j'ai, seulement ma carte audio (il me manque le midi sur usb. En conséquence, je ne peu pas réaliser mes connexions) :

Copy to clipboard
~]$ jack_lsp -A system:capture_1 alsa_pcm:hw:UR22mkII:out1 system:capture_2 alsa_pcm:hw:UR22mkII:out2 system:playback_1 alsa_pcm:hw:UR22mkII:in1 system:playback_2 alsa_pcm:hw:UR22mkII:in2


Si je démarre Cadence en mode graphique, la mes périphériques sont listés.

Copy to clipboard
$ jack_lsp -A system:capture_1 alsa_pcm:hw:UR22mkII,0:out1 system:capture_2 alsa_pcm:hw:UR22mkII,0:out2 system:playback_1 alsa_pcm:hw:UR22mkII,0:in1 system:playback_2 alsa_pcm:hw:UR22mkII,0:in2 system:midi_capture_1 alsa_pcm:Midi-Through/midi_playback_1 Midi-Through:midi/playback_1 system:midi_playback_1 alsa_pcm:Midi-Through/midi_capture_1 Midi-Through:midi/capture_1 system:midi_capture_2 alsa_pcm:Impulse/midi_playback_1 Impulse:midi/playback_1 system:midi_playback_2 alsa_pcm:Impulse/midi_capture_1 Impulse:midi/capture_1 system:midi_capture_3 alsa_pcm:Impulse/midi_playback_2 Impulse:midi/playback_2 system:midi_capture_4 alsa_pcm:Steinberg-UR22mkII/midi_playback_1 Steinberg-UR22mkII:midi/playback_1 system:midi_playback_3 alsa_pcm:Steinberg-UR22mkII/midi_capture_1 Steinberg-UR22mkII:midi/capture_1 system:midi_capture_5 alsa_pcm:UM-1/midi_playback_1 UM-1:midi/playback_1 system:midi_playback_4 alsa_pcm:UM-1/midi_capture_1 UM-1:midi/capture_1 PulseAudio JACK Sink:front-left PulseAudio JACK Sink:front-right a2j:Midi Through [14] (capture): Midi Through Port-0 a2j:Midi Through [14] (playback): Midi Through Port-0 a2j:Impulse [16] (capture): Impulse Impulse a2j:Impulse [16] (playback): Impulse Impulse a2j:Impulse [16] (capture): Impulse Impulse MIDI In a2j:Steinberg UR22mkII [20] (capture): Steinberg UR22mkII MIDI 1 a2j:Steinberg UR22mkII [20] (playback): Steinberg UR22mkII MIDI 1 a2j:UM-1 [24] (capture): UM-1 MIDI 1 a2j:UM-1 [24] (playback): UM-1 MIDI 1 PulseAudio JACK Source:front-left PulseAudio JACK Source:front-right


Que me manque t'il midi-raw, un truc du genre ?
Merci pour vos retour
France
Il faut que tu lances le pont A2J (sur Librazik le paquet s'appelle a2jmidid). Çe démon créé un port JACK MIDI par port ALSA MIDI existant. Tu peux gérer le pont A2J avec Cadence s'il est installé.
France
Merci Houston,

Pour le pont, à présent, j'ai compris 😊

Ce n'est pas tout à fait ce que je cherchais, mais j'ai trouvé avec un peu de mal, pourtant c'était sous mes yeux !

Pour le serveur Jack, il est possible de choisir le driver midi à utiliser (option -X, --midi-driver )

Donc ma commande de lancement de jackd devient :

Copy to clipboard
jackd -R -dalsa -dhw:UR22mkII -r44100 -p256 -n2 -Xraw


ou

Copy to clipboard
jackd -R -dalsa -dhw:UR22mkII -r44100 -p256 -n2 -Xseq


(Cette dernière semble meilleure)

Du coup j’obtiens toutes mes interface usb-midi (sans le bridge) :
Copy to clipboard
$ jack_lsp -A system:capture_1 alsa_pcm:hw:UR22mkII:out1 system:capture_2 alsa_pcm:hw:UR22mkII:out2 system:playback_1 alsa_pcm:hw:UR22mkII:in1 system:playback_2 alsa_pcm:hw:UR22mkII:in2 system:midi_capture_1 in-hw-0-0-0-Impulse--Impulse- system:midi_capture_2 in-hw-0-0-1-Impulse--Impulse-MIDI-In- system:midi_playback_1 out-hw-0-0-0-Impulse--Impulse- system:midi_capture_3 in-hw-1-0-0-Steinberg-UR22mkII-MIDI-1 system:midi_playback_2 out-hw-1-0-0-Steinberg-UR22mkII-MIDI-1 system:midi_capture_4 in-hw-2-0-0-UM-1-MIDI-1 system:midi_playback_3 out-hw-2-0-0-UM-1-MIDI-1


Après, je ne vois pas l’inconvénient ou l'avantage de cette solution par rapport au bridge a2Jmidid, peut-être que c'est complémentaire ... ?

Merci pour tout.

Musicalement.
France
Non ce n'est pas complémentaire, c'est plutôt l'un ou l'autre.
Mais par expérience, la solution par le pilote JACK est foireuse à bien des égards.
Surtout, les noms de ports ne sont pas explicites, il faut leur alias pour savoir qui ils sont matériellement. Ça pose un souci pratique dans les logiciels qui n'affichent pas les alias (ardour par exemple). Ça pose un sérieux problème lorsqu'il s'agit de rétablir automatiquement des connexions, par script ou par un logiciel fait pour. Parce que si tu débranches un clavier MIDI et que tu le rebranches, il aura plus le même nom, il est même possible qu'entre deux démarrages tu PC tu n'aies pas les ports dans le même ordre. Bref, à mon humble avis, cette solution est nulle, c'est dommage, parce que le pont A2J prend un peu plus de ressources, mais lui au moins, il est fiable.
France
Entendu Houston, j'en prends bonne note. Suite à tes conseils, j'ai activé a2Jmidid. Bon week-end !