Closed popapoe closed 1 year ago
For me, the associated MIDI and audio files are linked under a different name, so Qtractor fails to find the correct files.
audio and MIDI files should be sym-linked from the JACK session's directory to the original file locations; symlink filenames might be different though and that's actually intentional for making them unique; it's exactly these symlink names that should be stored on the qtractor session file under the JACK session directory.
please look into the later and verify what is acttually wrong: is that the audio or MIDI symlinks filenames that are missing or wrong? is it the base session directory? does any of your JACK session directory or session filename has special characters or even a blank or space character (which might offend the qjackctl command line parsing on startDetached()?
I don't understand why a session file is not simply linked here.
because that's not how JACK session works?
BTW. as official as jackaudio.org, JACK session is being deprecated in favor to NSM,
By the way, this was intended to be a request for help. If it sounded like a bug report, I got a bit carried away :sweat_smile:
I have this setup:
The session directory is /home/test/Documents/stuff/qtractor/rick/
. Inside, I have rick.qtr
and rick.mp3
. If I save the session into /home/test/Documents/stuff/jack-sessions/test-rick/
, loading yields this error:
Removing the quotes from the command (replacing "${SESSION_DIR}rick.qtr"
with ${SESSION_DIR}rick.qtr
) gets rid of this, but I get this warning instead:
Looking into /home/test/Documents/stuff/jack-sessions/test-rick/Qtractor/
, there are two files: rick.qtr
and a link named rick-f457f296.mp3
that points to /home/test/Documents/stuff/qtractor/rick/rick.mp3
. The only difference between this rick.qtr
and /home/test/Documents/stuff/qtractor/rick/rick.qtr
is that every reference (all relative to the session directory) to a file named rick.mp3
is replaced with a reference to a file named rick-f457f296.mp3
.
Trying the following three things "fixed" this for me:
/home/test/Documents/stuff/jack-sessions/test-rick/Qtractor/
with a single link to /home/test/Documents/stuff/qtractor/rick/rick.qtr
. In my understanding, this would not contain an explicit reference to anywhere outside of the directory./home/test/Documents/stuff/jack-sessions/test-rick/Qtractor/
with a single exact copy of /home/test/Documents/stuff/qtractor/rick/rick.qtr
. This would contain an explicit reference to /home/test/Documents/stuff/qtractor/rick/
.directory
field in /home/test/Documents/stuff/jack-sessions/test-rick/Qtractor/rick.qtr
to match the JACK session directory, /home/test/Documents/stuff/jack-sessions/test-rick/Qtractor/
.(By "fix", I only mean that QjackCtl is able to start Qtractor without any issues. I do not know how JACK sessions work.)
you're probably totally right!
it seems like a qtractor bug alright (or al'wrong :)) and it also seems rooted on the double-quotes injection you were flagging all about...
sorry. I guess it's been broke for ages :( will have to investigate a little further but for the time being, consider it utterly broken, sorry.
ps. of course, keep (doing) whatever "fix" if it works ;)
Alright, thanks! I do recognize that JACK Session has been deprecated for a while now. (I have tried to stay away from NSM due to the tension between the original author and the authors of the respective fork.)
Also, can I comment on how you commented within seconds of me checking this thread :eyes:
I have not been able to use Qtractor with the JACK session management provided by QjackCtl.
I did some digging around, and I found the lines that create the session save reply: https://github.com/rncbc/qtractor/blob/fad22124e782e9aa4cc417b5361aa52e80dd8d93/src/qtractorMainForm.cpp#L8237-L8250
On line 8247, the session path is surrounded with double quotes. QjackCtl eventually saves this into
session.xml
. It doesn't seem like it does any processing to the arguments, passing the quotes verbatim into Qtractor. (It appears to be run withQProcess::startDetached
.)Additionally, Qtractor writes a
.qtr
file into the JACK session directory that refers to the original directory. For me, the associated MIDI and audio files are linked under a different name, so Qtractor fails to find the correct files. I don't understand why a session file is not simply linked here.