Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plugin groups for CPU saving in multiple-song live performances #435

Open
unfa opened this issue Nov 2, 2016 · 9 comments
Open

Plugin groups for CPU saving in multiple-song live performances #435

unfa opened this issue Nov 2, 2016 · 9 comments

Comments

@unfa
Copy link

unfa commented Nov 2, 2016

I used to tie my live performances together with Carla, having all the instuments and effects loaded for the entire gig.

The problem is - that's a big CPU hog. I'm really using just a small part of that signal chain at once - a few plugins for each song, and some that are used all the time (like a master limiter with CC controlled gain).

There's also an external Qsampler for a Piano sound, but that's not much strain when it's not playing.

I'd like to be able to assign plugins to groups.

I would create a group for each song that I'm gonna play and assign related plugins to the groups.

Then I'd like to be able to cycle between the groups to enable only the plugins in the currently active group, and have all the rest disabled to save DSP load. I'd want to be able to switch between the groups with my USB MIDI controller keyboard in two ways:

1. Assign a key that'll activate a certain group (deactivating all the others).
For example:
I have 8 groups for 8 songs, 1 key on my keyboard assigned to each group - I can select any an any time.

2. Assign keys to cycle between the groups in a predefined order
For example:
I have two keys to activate next and previous group. I play a song, I'm done, I hit the "Next" button and I'm ready for the next song. An optional BIG display of which group is currently active (number / name) could be nice.

I thought that this could be somehow badly hacked by running one Carla instance for each song (group) and using a custom script to stop and continue the Carla instances, using some raw MIDI readouts in a bash script to control this live. But this seems badly inelegant and unstable too.

Do you play gigs with Carla? Do you think this is needed?

PS: Here's a related forum post I wrote some time ago:
https://linuxmusicians.com/viewtopic.php?f=47&t=16240&p=74904#p74904

@progwolff
Copy link
Contributor

progwolff commented Nov 2, 2016

Actually I began writing something like you described in 2. for myself some days ago.
I rejoined a band where I will need a differend setup for every song.
My idea for now is to use 3 instances of Carla, one for the current, one for the next and one for the previous song. This way there would be no loading times between the songs, as the next song is already preloaded and the overhead of the additional carla instances should be negligible as only one will be connected at a time.
I will share my results when it's kind of stable.

Sure it would be great if carla had this feature build in.

@unfa
Copy link
Author

unfa commented Nov 7, 2016

@progwolff - that's an interesting setup.

I personally would not want to have anything being loaded during the show - I'd want it all to stay in RAM, ready to unfreeze and play. I would be afraid that loading plugins into the "next" Carla instance could cause audio dropouts.

However if that's safe - I think it'd be a great approach, because it lets you use much less RAM during the show. and probably managing the song Carla projects would be easier.

I'm curious how it'll work for you.

@progwolff
Copy link
Contributor

Performer

This seems to work for me. Still needs some testing though.

@falkTX It would be useful if there was a way to determine the jack client name of a carla instance.

@falkTX
Copy link
Owner

falkTX commented Nov 13, 2016

How do you want to receive the client name?
Note that you can customize the client name using an env var. See https://github.com/falkTX/Carla/blob/master/source/carla_host.py#L67

@progwolff
Copy link
Contributor

progwolff commented Nov 13, 2016

Thanks for the quick response.
Even with the env var I still can not be sure what the final client name will be. It might be "-3" if there already were three other clients with that name.
A reliable status line to stdout would suffice.

@SpotlightKid
Copy link

Maybe this will also help you to connect clients with dynamic names: https://github.com/SpotlightKid/jack-matchmaker

@progwolff
Copy link
Contributor

Thanks, but what I want to do is not to connect all Carla instances to the same ports, but to connect only one instance of which I don't know the exact name and leave all others unconnected.

@falkTX
Copy link
Owner

falkTX commented Nov 13, 2016

a quick solution is just to print the client name when carla starts up.
you're already capturing the output to check when it's ready, so this should work...

@progwolff
Copy link
Contributor

Sure, this would work. Carla just does not print its real jack client name.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants