Houston4444 / RaySession

Session manager for linux musical programs
GNU General Public License v2.0
150 stars 18 forks source link

Redraw and connection problem with 0.14.3 on Fedora 39 #224

Open ycollet opened 4 months ago

ycollet commented 4 months ago

I am on Fedora 39. Each time I start raysession:

image

Here the connection Master L to Scarlett FL is missing.

Houston4444 commented 4 months ago

Could you please try if the problem also exists with Patchance? If yes, does it also happens with another graph using Pipewire via the Jack API (Patchage, QJackCtl, Carla for example)?

ycollet commented 4 months ago

The problem is related to the connection loading via RaySession. The output is really not connected. When I reconnected the missing connection the sound is OK. I feel RaySession in only capable of connecting one output to one input. If there is one output connected to one output, RaySession will connect randomly 2 wires out of 4.

Houston4444 commented 4 months ago

Hi ! Sorry for this late answer.

So, it seems to be a problem with ray-jackpatch (Jack Connections client). To be able to fix it, it would be interesting to know if the connection is saved in the jackpatch file.

I feel RaySession in only capable of connecting one output to one input. If there is one output connected to one output, RaySession will connect randomly 2 wires out of 4.

Here it is not the case, Master R is connected to two inputs, and Master L and Master R are not the same port. ray-jackpatch is totally agnostic with portgroups.

ycollet commented 4 months ago

OK, thanks for these steps. When I first started my session I had a connection problem. But now the connections are working. Here is the log:

main_loop - INFO - open file: /home/collette/Ray Sessions/TuxGuitar2/TuxGuitar2.patch.xml
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master R', 'TimeMachine:in_2')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'Scarlett 18i8 Surround analogique 7.1:playback_FL')
main_loop - INFO - connect ports: ('jack_mixer:Master R', 'Scarlett 18i8 Surround analogique 7.1:playback_FR')
main_loop - INFO - connect ports: ('fluidsynth:left', 'jack_mixer:TuxGuitar L')
main_loop - INFO - connect ports: ('fluidsynth:right', 'jack_mixer:TuxGuitar R')
main_loop - INFO - connect ports: ('kwin_wayland:output_1', 'plasmashell:input_1')

I will do a new try tomorrow.

ycollet commented 4 months ago

The messages after the first connection:

main_loop - INFO - open file: /home/collette/Ray Sessions/TuxGuitar2/TuxGuitar2.patch.xml
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master R', 'TimeMachine:in_2')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'Scarlett 18i8 Surround analogique 7.1:playback_FL')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'Scarlett 18i8 Surround analogique 7.1:playback_FL')
main_loop - INFO - connect ports: ('jack_mixer:Master R', 'Scarlett 18i8 Surround analogique 7.1:playback_FR')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('fluidsynth:left', 'jack_mixer:TuxGuitar L')
main_loop - INFO - connect ports: ('fluidsynth:right', 'jack_mixer:TuxGuitar R')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('kwin_wayland:output_1', 'plasmashell:input_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')

There is a refresh problem at this moment. The connections are OK today. Here are the messages after the canvas refresh:

main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
main_loop - INFO - connect ports: ('jack_mixer:Master L', 'TimeMachine:in_1')
ycollet commented 4 months ago

The file TuxGuitar2.patch.xml

<RAY-JACKPATCH>
  <connection from="fluidsynth:left" to="jack_mixer:TuxGuitar L" nsm_client_to="mixer" />
  <connection from="fluidsynth:right" to="jack_mixer:TuxGuitar R" nsm_client_to="mixer" />
  <connection from="kwin_wayland:output_1" to="plasmashell:input_1" />
  <connection from="kwin_wayland:output_1" to="obs:input_1" />
  <connection from="jack_mixer:Master L" to="OBS Studio: Client d'entr&#233;e JACK:in_1" nsm_client_from="mixer" />
  <connection from="jack_mixer:Master R" to="OBS Studio: Client d'entr&#233;e JACK:in_2" nsm_client_from="mixer" />
  <connection from="VLC media player (LibVLC 3.0.20):output_FL" to="Scarlett 18i8 Pro:playback_AUX0" />
  <connection from="VLC media player (LibVLC 3.0.20):output_FR" to="Scarlett 18i8 Pro:playback_AUX1" />
  <connection from="speech-dispatcher-dummy:output_FL" to="Scarlett 18i8 Pro:playback_AUX0" />
  <connection from="speech-dispatcher-dummy:output_FR" to="Scarlett 18i8 Pro:playback_AUX1" />
  <connection from="Firefox:output_FL" to="Scarlett 18i8 Pro:playback_AUX0" />
  <connection from="Firefox:output_FR" to="Scarlett 18i8 Pro:playback_AUX1" />
  <connection from="Scarlett 18i8 Pro:monitor_AUX0" to="OBS:input_FL" />
  <connection from="Scarlett 18i8 Pro:monitor_AUX1" to="OBS:input_FR" />
  <connection from="kwin_wayland:output_1" to="plasmashell-170:input_1" />
  <connection from="kwin_wayland:output_1-352" to="plasmashell:input_1" />
  <connection from="Firefox:output_FL-382" to="Scarlett 18i8 Pro:playback_AUX0" />
  <connection from="Firefox:output_FR-383" to="Scarlett 18i8 Pro:playback_AUX1" />
  <connection from="Scarlett 18i8 Pro:capture_AUX0" to="OBS:input_FL-239" />
  <connection from="Scarlett 18i8 Pro:capture_AUX1" to="OBS:input_FR-241" />
  <connection from="Scarlett 18i8 Pro:capture_AUX1" to="gx_head_amp:in_0" />
  <connection from="Scarlett 18i8 Pro:capture_AUX0" to="OBS:input_FL-857" />
  <connection from="Scarlett 18i8 Pro:capture_AUX1" to="OBS:input_FR-859" />
  <connection from="kwin_wayland:output_1-866" to="obs:input_1" />
  <connection from="jack_mixer:Master L" to="Scarlett 18i8 Pro:playback_AUX0" nsm_client_from="mixer" />
  <connection from="jack_mixer:Master R" to="Scarlett 18i8 Pro:playback_AUX1" nsm_client_from="mixer" />
  <connection from="kwin_wayland:output_1-721" to="plasmashell-118:input_1" />
  <connection from="speech-dispatcher-dummy:output_FL" to="Scarlett 18i8 Surround analogique 7.1:playback_FL" />
  <connection from="speech-dispatcher-dummy:output_FR" to="Scarlett 18i8 Surround analogique 7.1:playback_FR" />
  <connection from="speech-dispatcher-dummy:output_RR" to="Scarlett 18i8 Surround analogique 7.1:playback_RR" />
  <connection from="speech-dispatcher-dummy:output_FC" to="Scarlett 18i8 Surround analogique 7.1:playback_FC" />
  <connection from="speech-dispatcher-dummy:output_LFE" to="Scarlett 18i8 Surround analogique 7.1:playback_LFE" />
  <connection from="speech-dispatcher-dummy:output_SL" to="Scarlett 18i8 Surround analogique 7.1:playback_SL" />
  <connection from="speech-dispatcher-dummy:output_SR" to="Scarlett 18i8 Surround analogique 7.1:playback_SR" />
  <connection from="Firefox:output_FL" to="Scarlett 18i8 Surround analogique 7.1:playback_FL" />
  <connection from="Firefox:output_FR" to="Scarlett 18i8 Surround analogique 7.1:playback_FR" />
  <connection from="Firefox:output_RL" to="Scarlett 18i8 Surround analogique 7.1:playback_RL" />
  <connection from="Firefox:output_RR" to="Scarlett 18i8 Surround analogique 7.1:playback_RR" />
  <connection from="Firefox:output_FC" to="Scarlett 18i8 Surround analogique 7.1:playback_FC" />
  <connection from="Firefox:output_LFE" to="Scarlett 18i8 Surround analogique 7.1:playback_LFE" />
  <connection from="Firefox:output_SL" to="Scarlett 18i8 Surround analogique 7.1:playback_SL" />
  <connection from="Firefox:output_SR" to="Scarlett 18i8 Surround analogique 7.1:playback_SR" />
  <connection from="eSpeak:output_SL" to="Scarlett 18i8 Surround analogique 7.1:playback_RL" />
  <connection from="speech-dispatcher-dummy:output_FL" to="PCM2900C Audio CODEC St&#233;r&#233;o analogique:playback_FL" />
  <connection from="speech-dispatcher-dummy:output_FR" to="PCM2900C Audio CODEC St&#233;r&#233;o analogique:playback_FR" />
  <connection from="speech-dispatcher-dummy:output_RL" to="Scarlett 18i8 Surround analogique 7.1:playback_RL" />
  <connection from="jack_mixer:Master L" to="TimeMachine:in_1" nsm_client_from="mixer" />
  <connection from="jack_mixer:Master R" to="TimeMachine:in_2" nsm_client_from="mixer" />
  <connection from="jack_mixer:Master L" to="Scarlett 18i8 Surround analogique 7.1:playback_FL" nsm_client_from="mixer" />
  <connection from="jack_mixer:Master R" to="Scarlett 18i8 Surround analogique 7.1:playback_FR" nsm_client_from="mixer" />
  <connection from="kwin_wayland:output_1-326" to="plasmashell:input_1" />
  <connection from="Scarlett 18i8 Multicanal:capture_AUX1" to="gx_head_amp:in_0" />
  <connection from="gx_head_fx:out_0" to="jack_mixer:Gutarix L" nsm_client_to="mixer" />
  <connection from="gx_head_fx:out_1" to="jack_mixer:Gutarix R" nsm_client_to="mixer" />
  <connection from="gx_head_amp:out_0" to="gx_head_fx:in_0" />
  <connection from="Midi-Bridge:Line 6 FBV Express Mk II at usb-0000:00:14-0-6- full speed:(capture_0) FBV Express Mk II MIDI 1" to="gx_head_amp:midi_in_1" />
  <graph>
    <group name="Scarlett 18i8 Surround analogique 7.1">
      <in_port name="playback_FL" />
      <in_port name="playback_FR" />
      <in_port name="playback_RL" />
      <in_port name="playback_RR" />
      <in_port name="playback_FC" />
      <in_port name="playback_LFE" />
      <in_port name="playback_SL" />
      <in_port name="playback_SR" />
      <out_port name="monitor_FL" />
      <out_port name="monitor_FR" />
      <out_port name="monitor_RL" />
      <out_port name="monitor_RR" />
      <out_port name="monitor_FC" />
      <out_port name="monitor_LFE" />
      <out_port name="monitor_SL" />
      <out_port name="monitor_SR" />
    </group>
    <group name="PCM2900C Audio CODEC St&#233;r&#233;o analogique">
      <in_port name="playback_FL" />
      <in_port name="playback_FR" />
      <out_port name="capture_FL" />
      <out_port name="capture_FR" />
      <out_port name="monitor_FL" />
      <out_port name="monitor_FR" />
    </group>
    <group name="Audio interne St&#233;r&#233;o analogique">
      <in_port name="playback_FL" />
      <in_port name="playback_FR" />
      <out_port name="capture_FL" />
      <out_port name="capture_FR" />
      <out_port name="monitor_FL" />
      <out_port name="monitor_FR" />
    </group>
    <group name="jack_mixer" nsm_client="mixer">
      <in_port name="TuxGuitar L" />
      <in_port name="TuxGuitar R" />
      <in_port name="Gutarix L" />
      <in_port name="Gutarix R" />
      <in_port name="midi in" />
      <out_port name="Monitor L" />
      <out_port name="Monitor R" />
      <out_port name="TuxGuitar Out L" />
      <out_port name="TuxGuitar Out R" />
      <out_port name="Gutarix Out L" />
      <out_port name="Gutarix Out R" />
      <out_port name="Master L" />
      <out_port name="Master R" />
      <out_port name="midi out" />
    </group>
    <group name="TimeMachine">
      <in_port name="in_1" />
      <in_port name="in_2" />
    </group>
    <group name="Midi-Bridge">
      <in_port name="Midi Through:(playback_0) Midi Through Port-0" />
      <in_port name="Focusrite Scarlett 18i8 USB at usb-0000:00:14-0-1- high speed:(playback_0) Scarlett 18i8 USB MIDI 1" />
      <in_port name="Line 6 FBV Express Mk II at usb-0000:00:14-0-6- full speed:(playback_0) FBV Express Mk II MIDI 1" />
      <out_port name="Midi Through:(capture_0) Midi Through Port-0" />
      <out_port name="Focusrite Scarlett 18i8 USB at usb-0000:00:14-0-1- high speed:(capture_0) Scarlett 18i8 USB MIDI 1" />
      <out_port name="Line 6 FBV Express Mk II at usb-0000:00:14-0-6- full speed:(capture_0) FBV Express Mk II MIDI 1" />
      <out_port name="Line 6 FBV Express Mk II at usb-0000:00:14-0-6- full speed:(capture_1) FBV Express Mk II MIDI 2" />
      <out_port name="Line 6 FBV Express Mk II at usb-0000:00:14-0-6- full speed:(capture_2) FBV Express Mk II MIDI 3" />
      <out_port name="Line 6 FBV Express Mk II at usb-0000:00:14-0-6- full speed:(capture_3) FBV Express Mk II MIDI 4" />
    </group>
    <group name="gx_head_amp">
      <in_port name="in_0" />
      <in_port name="midi_in_1" />
      <out_port name="out_0" />
      <out_port name="midi_out_1" />
    </group>
    <group name="gx_head_fx">
      <in_port name="in_0" />
      <out_port name="out_0" />
      <out_port name="out_1" />
    </group>
    <group name="Scarlett 18i8 Multicanal">
      <out_port name="capture_AUX0" />
      <out_port name="capture_AUX1" />
      <out_port name="capture_AUX2" />
      <out_port name="capture_AUX3" />
      <out_port name="capture_AUX4" />
      <out_port name="capture_AUX5" />
      <out_port name="capture_AUX6" />
      <out_port name="capture_AUX7" />
      <out_port name="capture_AUX8" />
      <out_port name="capture_AUX9" />
      <out_port name="capture_AUX10" />
      <out_port name="capture_AUX11" />
      <out_port name="capture_AUX12" />
      <out_port name="capture_AUX13" />
    </group>
    <group name="Webcam C270 Mono">
      <out_port name="capture_MONO" />
    </group>
    <group name="fluidsynth">
      <out_port name="left" />
      <out_port name="right" />
    </group>
  </graph>
</RAY-JACKPATCH>

The file TuxGuitar2.mixer.xml

<?xml version="1.0" ?>
<jack_mixer geometry="420x420" paned_position="210" visible="True">
    <input_channel name="TuxGuitar" type="stereo" direct_output="True" volume="-7.120623" balance="0.000000" wide="True" meter_prefader="False" out_mute="False" volume_midi_cc="11" balance_midi_cc="12" mute_midi_cc="13" solo_midi_cc="14"/>
    <input_channel name="Gutarix" type="stereo" direct_output="True" volume="-1.867704" balance="0.000000" wide="True" meter_prefader="False" out_mute="False" volume_midi_cc="15" balance_midi_cc="16" mute_midi_cc="17" solo_midi_cc="18"/>
    <output_channel name="Master" type="stereo" color="rgb(212,205,46)" volume="0.000000" balance="0.000000" wide="True" meter_prefader="False" out_mute="False" volume_midi_cc="19" balance_midi_cc="20" mute_midi_cc="21"/>
    <gui_factory confirm-quit="False" default_meter_scale="K20" default_project_path="" default_slider_scale="linear_30dB" midi_behavior_mode="0" use_custom_widgets="False" vumeter_color="#ccb300" vumeter_color_scheme="default" auto_reset_peak_meters="False" auto_reset_peak_meters_time_seconds="2.0" meter_refresh_period_milliseconds="33"/>
</jack_mixer>

The file raysession.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE RAYSESSION>
<RAYSESSION VERSION="0.14.3" name="TuxGuitar2">
  <Clients>
    <client id="patch" launched="true" executable="ray-jackpatch" arguments="-log" name="JACK Connections" desktop_file="//not_found" icon="curve-connector" in_terminal="true" />
    <client id="mixer" launched="true" executable="jack_mixer" name="jack_mixer" gui_visible="true" />
    <client id="tuxguitar" launched="true" executable="tuxguitar" name="tuxguitar" />
    <client id="guitarix" launched="true" executable="guitarix" name="guitarix" />
    <client id="timemachin" launched="true" executable="timemachine" name="timemachine" />
  </Clients>
  <RemovedClients />
  <Windows />
</RAYSESSION>
ycollet commented 4 months ago

This time, raysession was not able to connect everything. The log before I force a refresh:

main_loop - INFO - open file: /home/collette/Ray Sessions/TuxGuitar2/TuxGuitar2.patch.xml
main_loop - INFO - connect ports: ('fluidsynth:left', 'jack_mixer:TuxGuitar L')
main_loop - INFO - connect ports: ('fluidsynth:right', 'jack_mixer:TuxGuitar R')

And only 2 connections. After the refresh: no new messages, but the guitarix part is reconnected and the part between jack_mixer and timemachine + sound output is totally missing.

Houston4444 commented 4 months ago

Are you sure that the missing connections were saved in the patch file (TuxGuitar2.patch.xml in your case) ? When the problem re-appears please think to not save ray-jackpatch (aborting the session), and see if missing connections are present in the file. We've got to know if ray-jackpatch fails to save them or fails to connect them. Also ensure that programs always have exactly the same JACK client name, else it would explain the connection fail.

After the refresh: no new messages, but the guitarix part is reconnected and the part between jack_mixer and timemachine + sound output is totally missing.

Refresh of the canvas and connections made by ray-jackpatch have no direct link, the only link between them is: refresh ask to JACK (or PW here) the ports list, and ray-jackpatch reads events from JACK. There is maybe a possibility that something new in PW makes ray-jackpatch not working well with the way it uses the JACK API, I don't know at all.

ycollet commented 3 months ago

So, I still have the same problems here. I first thought I could be a problem with the Ray Session Directory (I remember some git "error" message in the console some times ago). So, I removed completely the Ray Session directory and ... I should have check first the size of the directory because it took a lot of time to rm -rf :) That was an old Ray Session directory :) I recreated my sessions and I still have the same problem. So, my bet is now on python-3.12.2 ... I know that a lot of things have changed in python 3.12. I will try to check the change log.