Session Management

What other apps and distros do you use to round out your studio?

Moderators: MattKingUSA, khz

Vixus
Established Member
Posts: 42
Joined: Fri Aug 06, 2010 1:16 pm

Session Management

Post by Vixus »

So how do you musicians make music on linux? It's a bit annoying having to reroute connections every time I want to work on a music project (I don't have a dedicated box, unfortunately and need to use it for more than just music) and while jack sessions and qtractor helps a little bit it's still quite troublesome. There seems to be a wealth of session management ideologies out there (ladish, non-, carla/cadence) but I'm not sure which one is the most usable at the moment. I used to use ladish but it was quite buggy and didn't really restore very much.

Any ideas?

PS: KXStudio looks really cool and I definitely want to give it a try.
varpa
Established Member
Posts: 509
Joined: Fri Feb 25, 2011 6:40 pm
Been thanked: 13 times

Re: Session Management

Post by varpa »

Judging from others comments non-session seems to be recommended. Another approach is to use shell scripts to start programs and then aj-snapshot to restore all connections: http://aj-snapshot.sourceforge.net/
j_e_f_f_g
Established Member
Posts: 2032
Joined: Fri Aug 10, 2012 10:48 pm
Been thanked: 358 times

Re: Session Management

Post by j_e_f_f_g »

I'll be blunt, as they put me on a "word diet".

Right after I uninstall Pulse Audio, the next thing I do is uninstall any music software that can't speak directly to ALSA.

I will not deal with Jack configuration. If I want convolution, that means reverb -- not QJackCtl.

Author of BackupBand at https://sourceforge.net/projects/backupband/files/
My fans show their support by mentioning my name in their signature.

Vixus
Established Member
Posts: 42
Joined: Fri Aug 06, 2010 1:16 pm

Re: Session Management

Post by Vixus »

There's really nothing wrong with Jack, and it's impossible to do that sort of audio routing with alsa.
Vixus
Established Member
Posts: 42
Joined: Fri Aug 06, 2010 1:16 pm

Re: Session Management

Post by Vixus »

What's happening with Claudia?
User avatar
autostatic
Established Member
Posts: 1994
Joined: Wed Dec 09, 2009 5:26 pm
Location: Beverwijk, The Netherlands
Has thanked: 32 times
Been thanked: 104 times
Contact:

Re: Session Management

Post by autostatic »

Shell scripter here. Just works best for me at the moment. But I reckon if you're very productive you're better off with a session manager. As long as I don't write several tunes a day I'll stick with shell scripts.
User avatar
bhilmers
Established Member
Posts: 229
Joined: Mon Apr 23, 2012 11:44 pm
Has thanked: 5 times
Been thanked: 17 times

Re: Session Management

Post by bhilmers »

I have the best results from shell scripting and JACK's Patchbay, jointly.
  • Launch the programs with a shell script
  • Open the JACK connection manager and disconnect all
  • Load/Activate your Patchbay file (.xml)
That's about as fast and reliable as it gets.
wolftune
Established Member
Posts: 1350
Joined: Fri Feb 24, 2012 7:40 pm
Location: Portland, OR
Been thanked: 2 times
Contact:

Re: Session Management

Post by wolftune »

I have the feeling that KXStudio and claudia is the way to go, but I still don't fully understand how to really use it best. I've dabbled. I'm patiently waiting for the full cadence release. 8)
Aaron Wolf
Music teacher, scholar
http://wolftune.com
SR
Established Member
Posts: 218
Joined: Wed May 07, 2008 6:01 pm
Location: Houston, Tx

Re: Session Management

Post by SR »

I've been starting my sessions with scripts, but this conversation got me interested in checking out some of the session managers. This is on Fedora 17 using the Planet CCRMA stuff.

Yesterday I messed around a bit with ladish (Fedora doesn't provide a package so I built it from source). This requires jackdbus which is provided by the "jack-audio-connection-kit-dbus" rpm, which isn't installed by default. Ladish works pretty good at saving and loading sessions but jackdbus has a serious problem in that it won't shut down. I just have to kill it by hand to get it to go away. I don't see any bug reports with Fedora about this, but it's probably not very widely used. I did see a bug report with Ubuntu that's been open since May.

After being discourage a bit by jackdbus I tried messing around with jack_session. I can't find much of any documentation. It's great when I stumble across an app that uses it.

This afternoon I spent some time with non-session-manager. So far it seems really cool. I like being able to use nsm-proxy as a wrapper for clients that don't support it. My only problem so far is that some clients don't behave nicely when it tells them to shut down. Renoise has been the biggest offender. It will launch and load a session, and I can save from Renoise and quit Renoise by itself, but when nsm tells it to quit it refuses and proceeds to lock up jack. Other than that I'm puzzled about how NSM preserves jack connections. I've tried experimenting a bit with "jackpatch" but wasn't very successful with it.
SR
Established Member
Posts: 218
Joined: Wed May 07, 2008 6:01 pm
Location: Houston, Tx

Re: Session Management

Post by SR »

falkTX wrote:I think this is a different matter. If you're using jackdbus, you must use tools that can handle it. qjackctl can do dbus mode, but very poorly.
when using (g)ladish in fedora, you should use its gui to stop/start jack as needed (is this case, "studios").
Well in this case they both (stopping studio via gladish and stopping jack via qjackctl) do the same thing. Jackdbus never goes away, kill -9 from command line is the only way to get rid of it.
SR
Established Member
Posts: 218
Joined: Wed May 07, 2008 6:01 pm
Location: Houston, Tx

Re: Session Management

Post by SR »

falkTX wrote:oh wait, if you're referring to the 'jackdbus' process then yes, it never goes away and that's the point.
jack can still be stopped, started, configured etc with it active (which is needed).
Do not confuse jackd with jackdbus. jackd only runs when jack is active, but jackdbus should always be present.
jackdbus is not the exact dbus version of jackd, they are completely different things.
This isn't really the behavior I'm seeing.

So I created a test studio, started it and added a single application, hydrogen to it. Everything looks good. Then I try to stop it and I get all these log messages after which it's impossible to start another studio again until I forcibly kill jack and unload/reload ffado:

Code: Select all

Sat Oct  6 22:33:36 2012: Disconnecting 'Hydrogen:out_L' from 'firewire_pcm:0014866f9925a1a9_Unknown_out'
Sat Oct  6 22:33:36 2012: Disconnecting 'Hydrogen:out_R' from 'firewire_pcm:0014866f9925a1a9_Unknown0_out'
Sat Oct  6 22:34:26 2012: ERROR: JackPosixSemaphore::TimedWait err = Connection timed out
Sat Oct  6 22:34:26 2012: ERROR: JackFreewheelDriver::ProcessSync SuspendRefNum error
Sat Oct  6 22:34:26 2012: ERROR: JackAudioDriver::ProcessGraphSync: ProcessWriteSlaves error, engine may now behave abnormally!!
Sat Oct  6 22:34:26 2012: ERROR: JackProcessSync::LockedTimedWait error usec = 50000000 err = Connection timed out
Sat Oct  6 22:34:26 2012: ERROR: JackEngine::ClientDeactivate wait error ref = 6 name = Hydrogen
Sat Oct  6 22:34:26 2012: ERROR: JackServer::ClientKill ref = 6 cannot be removed from the graph !!
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:out_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:out_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_1_Kick_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_1_Kick_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_2_Stick_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_2_Stick_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_3_Snare Jazz_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_3_Snare Jazz_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_4_Hand Clap_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_4_Hand Clap_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_5_Snare Rock_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_5_Snare Rock_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_6_Tom Low_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_6_Tom Low_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_7_Closed HH_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_7_Closed HH_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_8_Tom Mid_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_8_Tom Mid_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_9_Pedal HH_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_9_Pedal HH_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_10_Tom Hi_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_10_Tom Hi_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_11_Open HH_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_11_Open HH_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_12_Cowbell_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_12_Cowbell_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_13_Ride Jazz_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_13_Ride Jazz_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_14_Crash_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_14_Crash_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_15_Ride Rock_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_15_Ride Rock_R' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_16_Crash Jazz_L' to destroy
Sat Oct  6 22:34:26 2012: ERROR: Failed to find port 'Hydrogen:Track_16_Crash Jazz_R' to destroy
Sat Oct  6 22:34:36 2012: ERROR: JackProcessSync::LockedTimedWait error usec = 10000000 err = Connection timed out
Sat Oct  6 22:34:36 2012: ERROR: JackEngine::ClientCloseAux wait error ref = 6
Sat Oct  6 22:34:36 2012: Client 'Hydrogen' with PID 2230 is out
Sat Oct  6 22:34:36 2012: Stopping jack server...
Sat Oct  6 22:35:16 2012: ERROR: JackPosixSemaphore::TimedWait err = Connection timed out
Sat Oct  6 22:35:16 2012: ERROR: JackAudioDriver::ProcessGraphSync: SuspendRefNum error, engine may now behave abnormally!!
Sat Oct  6 22:35:16 2012: ERROR: JackFFADODriver::ffado_driver_wait - unhandled xrun
Sat Oct  6 22:35:16 2012: ERROR: firewire ERR: wait status < 0! (= -1)
Sat Oct  6 22:35:16 2012: ERROR: JackAudioDriver::ProcessSync: read error, stopping...
Sat Oct  6 22:35:26 2012: ERROR: JackProcessSync::LockedTimedWait error usec = 50000000 err = Connection timed out
Sat Oct  6 22:35:26 2012: ERROR: JackEngine::ClientDeactivate wait error ref = 2 name = dbusapi
Sat Oct  6 22:35:26 2012: ERROR: failed to deactivate dbusapi jack client. error is -1
Sat Oct  6 22:35:26 2012: Client 'firewire_pcm' with PID 0 is out
Sat Oct  6 22:35:26 2012: Client 'PulseAudio JACK Sink' with PID 1840 is out
Sat Oct  6 22:35:26 2012: Client 'PulseAudio JACK Source' with PID 1840 is out
Sat Oct  6 22:35:26 2012: Client 'a2j' with PID 2069 is out
Sat Oct  6 22:35:36 2012: ERROR: JackProcessSync::LockedTimedWait error usec = 10000000 err = Connection timed out
Sat Oct  6 22:35:36 2012: ERROR: JackEngine::ClientCloseAux wait error ref = 2
studio32

Re: Session Management

Post by studio32 »

SR wrote: This afternoon I spent some time with non-session-manager. So far it seems really cool. I like being able to use nsm-proxy as a wrapper for clients that don't support it. My only problem so far is that some clients don't behave nicely when it tells them to shut down. Renoise has been the biggest offender. It will launch and load a session, and I can save from Renoise and quit Renoise by itself, but when nsm tells it to quit it refuses and proceeds to lock up jack. Other than that I'm puzzled about how NSM preserves jack connections. I've tried experimenting a bit with "jackpatch" but wasn't very successful with it.
Renoise might not handle the SIGTERM signal right on quit.
For jackpatch, just add the client to your session and when you hit save or close, the connections you made in the session will be saved. Nothing difficult about it as a user. :)

edit: Pianoteq has the same bug, it has been reported an will be fixed.
Vixus
Established Member
Posts: 42
Joined: Fri Aug 06, 2010 1:16 pm

Re: Session Management

Post by Vixus »

Ok, all this choice is.. overwhelming. :D

The shell script might be the way to go but I wonder if there's some way of automating generation of such a shell script? Because of course during the session I might add new apps and connections as I need them and I won't necessarily know the names of all the ports beforehand.

Any tips for shell scripting with jack_connect (is that what you do)?

What about jack session? Does anyone use that?
varpa
Established Member
Posts: 509
Joined: Fri Feb 25, 2011 6:40 pm
Been thanked: 13 times

Re: Session Management

Post by varpa »

I said this before, but I think the easiest way to work with shell scripts is to start all the applications you want and then use aj-snapshot to save/restore all connections. Let aj-snapshot worry about all the connection names. The first time you have to start applications manually and make connections manually (with QJackCtl or whatever you prefer) then save all connections with aj-snapshot (which saves the list of connections to a file). Then make a script with starts all the applications and runs aj-snapshot using the file of saved connections. The only tricky part is sometimes you need to add sleep commands to wait a little while to make sure the applications have started so their connections are available.
Vixus
Established Member
Posts: 42
Joined: Fri Aug 06, 2010 1:16 pm

Re: Session Management

Post by Vixus »

falkTX wrote:This is one of the reasons I love ladish.
When you make connections and some app quits, ladish remembers that connection and auto-restores it when such app appears again. :D
Ladish was really promising but when I last used it hardly any apps were above compliance level 1, how is ladish support nowadays?
Post Reply