Automate Firefox JACK mapping

Previously was doing 'by hand' (with LADISH), and each new connexion was associated to a special track in Non-Mixer. This was limiting, e.g. one tab = one channel in Non-Mixer, created manually. Now with jack-matchmaker, a regexp tells that all Firefox output goes into one channel in Non-Mixer. No need to mix each tab because usually, players have an individual volume control.
master
Quentin Duchemin 2018-06-21 20:11:15 +02:00
parent 8a7b7845f9
commit e02a02e499
5 changed files with 23 additions and 24 deletions

View File

@ -186,7 +186,7 @@
<Window name="PM-87-" visible="0" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/> <Window name="PM-87-" visible="0" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
<Window name="P-801-833" visible="0" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="1"/> <Window name="P-801-833" visible="0" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="1"/>
<Window name="P-801-831" visible="0" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="1"/> <Window name="P-801-831" visible="0" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="1"/>
<Window name="P-801-868" visible="1" x-off="729" y-off="312" x-size="884" y-size="652" custom-ui="1"/> <Window name="P-801-868" visible="0" x-off="731" y-off="312" x-size="884" y-size="652" custom-ui="1"/>
<Window name="P-801-834" visible="0" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="1"/> <Window name="P-801-834" visible="0" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="1"/>
<Window name="PM-833-" visible="0" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/> <Window name="PM-833-" visible="0" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
<Window name="PM-831-" visible="0" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/> <Window name="PM-831-" visible="0" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
@ -196,7 +196,7 @@
</UI> </UI>
<AudioMIDISetup> <AudioMIDISetup>
<EngineStates> <EngineStates>
<State backend="JACK" driver="" device="" input-device="" output-device="" sample-rate="48000" buffer-size="1024" n-periods="1082" input-latency="0" output-latency="0" input-channels="0" output-channels="0" active="1" use-buffered-io="0" midi-option="" lru="1529530766"> <State backend="JACK" driver="" device="" input-device="" output-device="" sample-rate="48000" buffer-size="1024" n-periods="1082" input-latency="0" output-latency="0" input-channels="0" output-channels="0" active="1" use-buffered-io="0" midi-option="" lru="1529541541">
<MIDIDevices/> <MIDIDevices/>
</State> </State>
</EngineStates> </EngineStates>

View File

@ -186,14 +186,16 @@ exec --no-startup-id redshift-gtk
# Set ALSA initial volume # Set ALSA initial volume
exec-always --no-startup-id exec-always --no-startup-id
# Start JACK server and session manager : for_window [class="Claudia"] move container to workspace 4
#- Cadence starts JACK, A2J and load Home LADISH studio
#- Claudia starts GUI
for_window [class="Claudia"] move container to workspace 3
for_window [class="Cadence"] floating enable; move container to workspace 3 for_window [class="Cadence"] floating enable; move container to workspace 3
for_window [class="Non-Mixer"] move container to workspace 3 for_window [class="Non-Mixer"] move container to workspace 4
for_window [class="Ardour"] move container to workspace 3 for_window [class="Ardour"] move container to workspace 3
for_window [title="Pianoteq*"] move container to workspace 3 for_window [title="Pianoteq*"] move container to workspace 3
exec --no-startup-id "sh -c 'cadence-session-start --start; sleep 3; Ardour5 /mnt/data/Documents/Ardour/Petrus;"
# Cadence will take care of all we need :
# - Config tells Cadence to start LADISH, export MIDI hw and start A2J ;
# - LADISH implies JACK starts, then it will starts needed apps (e.g. Non-Mixer)
exec --no-startup-id cadence-session-start --start
# Automate port mapping for applications
exec --no-startup-id jack-matchmaker -p ~/.config/jack-matchmaker/patterns exec --no-startup-id jack-matchmaker -p ~/.config/jack-matchmaker/patterns

View File

@ -1,7 +1,16 @@
# VLC Left # VLC Left
vlc.*?1$ vlc.*?1$
.*:VLC/.*?1 .*:VLC/in-1
# VLC Right # VLC Right
vlc.*?2$ vlc.*?2$
.*:VLC/in.*?2 .*:VLC/in-2
# == Firefox, all tabs mixed in one : volume per tab is managed through players directly ==
# FF Left
.*?:AudioStream.*?0$
.*:Firefox/in-1
# FF Right
.*?:AudioStream.*?1$
.*:Firefox/in-2

View File

@ -4,7 +4,7 @@ JACK settings, as persisted by D-Bus object.
You probably don't want to edit this because You probably don't want to edit this because
it will be overwritten next time jackdbus saves. it will be overwritten next time jackdbus saves.
--> -->
<!-- Tue Jun 19 19:55:44 2018 --> <!-- Thu Jun 21 19:58:08 2018 -->
<jack> <jack>
<engine> <engine>
<option name="driver">alsa</option> <option name="driver">alsa</option>

View File

@ -1,24 +1,12 @@
{ {
Spatialization_Console 0x14 create :range 1.000000 :projection 1 :shown 0 Spatialization_Console 0x14 create :range 1.000000 :projection 1 :shown 0
Group 0xD create :name "Home" Group 0xD create :name "Home"
Mixer_Strip 0x1 create :name "Firefox 1" :width "narrow" :tab "fader" :color 424238335 :gain_mode 0 :mute_mode 0 :group 0xD :auto_input "" :manual_connection 0 Mixer_Strip 0x1 create :name "Firefox" :width "narrow" :tab "fader" :color 424238335 :gain_mode 0 :mute_mode 0 :group 0xD :auto_input "" :manual_connection 0
Chain 0x2 create :strip 0x1 :tab "controls" Chain 0x2 create :strip 0x1 :tab "controls"
JACK_Module 0x3 create :parameter_values "0.000000:2.000000" :is_default 1 :chain 0x2 :active 1 JACK_Module 0x3 create :parameter_values "0.000000:2.000000" :is_default 1 :chain 0x2 :active 1
Gain_Module 0x4 create :parameter_values "1.250000:0.000000" :is_default 1 :chain 0x2 :active 1 Gain_Module 0x4 create :parameter_values "1.250000:0.000000" :is_default 1 :chain 0x2 :active 1
Meter_Module 0x5 create :is_default 1 :chain 0x2 :active 1 Meter_Module 0x5 create :is_default 1 :chain 0x2 :active 1
JACK_Module 0x6 create :parameter_values "2.000000:0.000000" :is_default 1 :chain 0x2 :active 1 JACK_Module 0x6 create :parameter_values "2.000000:0.000000" :is_default 1 :chain 0x2 :active 1
Mixer_Strip 0xE create :name "Firefox 2" :width "narrow" :tab "fader" :color 596516649 :gain_mode 0 :mute_mode 0 :group 0xD :auto_input "" :manual_connection 0
Chain 0xF create :strip 0xE :tab "chain"
JACK_Module 0x10 create :parameter_values "0.000000:2.000000" :is_default 1 :chain 0xF :active 1
Gain_Module 0x11 create :parameter_values "1.250000:0.000000" :is_default 1 :chain 0xF :active 1
Meter_Module 0x12 create :is_default 1 :chain 0xF :active 1
JACK_Module 0x13 create :parameter_values "2.000000:0.000000" :is_default 1 :chain 0xF :active 1
Mixer_Strip 0x15 create :name "Firefox 3" :width "narrow" :tab "fader" :color 1025202362 :gain_mode 0 :mute_mode 0 :group 0xD :auto_input "" :manual_connection 0
Chain 0x16 create :strip 0x15 :tab "chain"
JACK_Module 0x17 create :parameter_values "0.000000:2.000000" :is_default 1 :chain 0x16 :active 1
Gain_Module 0x18 create :parameter_values "0.000000:0.000000" :is_default 1 :chain 0x16 :active 1
Meter_Module 0x19 create :is_default 1 :chain 0x16 :active 1
JACK_Module 0x1A create :parameter_values "2.000000:0.000000" :is_default 1 :chain 0x16 :active 1
Mixer_Strip 0x1B create :name "PianoTeq" :width "narrow" :tab "fader" :color 1350490027 :gain_mode 0 :mute_mode 0 :group 0xD :auto_input "" :manual_connection 0 Mixer_Strip 0x1B create :name "PianoTeq" :width "narrow" :tab "fader" :color 1350490027 :gain_mode 0 :mute_mode 0 :group 0xD :auto_input "" :manual_connection 0
Chain 0x1C create :strip 0x1B :tab "chain" Chain 0x1C create :strip 0x1B :tab "chain"
JACK_Module 0x1D create :parameter_values "0.000000:2.000000" :is_default 1 :chain 0x1C :active 1 JACK_Module 0x1D create :parameter_values "0.000000:2.000000" :is_default 1 :chain 0x1C :active 1