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

[Feature request] Integrate ability to process multi-channel plugins with automatic and customizable connections arrangement between plugins #120

Open
ghost opened this issue Aug 7, 2014 · 6 comments

Comments

@ghost
Copy link

ghost commented Aug 7, 2014

This is basically issue #117 in a broader view.

For example, the user has added 2 plugins in the Rack mode: plugin A and plugin B.
Plugin A has 4 inputs and 2 outputs. Plugin B has 4 inputs and 2 outputs.
In the proposed mode of operation, A's 4 inputs get automatically attached to first 4 of the system's "capture's" (if there are 4 of them), and it's 2 outputs are automatically attached to B's first 2 inputs. B's 2 outputs are automatically attached to first 2 of the System's "playback's".
After that, user is free to rearrange connections to liking. If a plugin is moved inside the chain, connection-wise this is treated as a removal and re-addition of the same plugin in the new place, and it's connections are reset.
Individual plugins and their connections appear in the Patchbay.

@falkTX
Copy link
Owner

falkTX commented Aug 7, 2014

rack-mode cannot have dynamic audio ports, this will not change.

what we need to have for such setup in an internal patchbay mode.
just like the multi-client jack mode, but as a plugin (ingen is a good example of this).

I already started some code for this internal-patchbay, but it's not finished.
It will take some time to get it all working, but I'm hoping it will be somewhat done for beta3.

rack-mode will always be 2 stereo in, 2 stereo out.
(which makes this bug invalid)

@falkTX falkTX closed this as completed Aug 7, 2014
@ghost
Copy link
Author

ghost commented Aug 7, 2014

Basically the problem this feature request was supposed to solve is integrating the straightforwardness and ease of use of the Rack mode with the ability to process multiple channels.

The commodity of having plugins automatically connected and re-connected upon rearrangement is especially useful for multi-channel tasks, as the requirement of manual attachment and reattachment of dozens of connections can be a big showstopper for actual work.

Having a multi-client mode integrated into an internal patchbay will provide a partial solution, but this still does not cover the cases when the user needs multiple inputs and outputs to be processed.

This is for sure one single feature I absolutely need for my tasks (and probably some other users), so I hope it can have some kind of solution in the future in Carla. If that's called Rack mode or not, and if it's implemented by means of extension to the Single Client mode or by other means, really doesn't matter.

@ghost ghost changed the title [Feature request] Reimplement Rack mode as an extention of Single-Client mode, but with automatic and customizable connections arrangement between plugins [Feature request] Integrate ability to process multi-channel plugins with automatic and customizable connections arrangement between plugins Aug 7, 2014
@ghost
Copy link
Author

ghost commented Aug 7, 2014

I changed the title to better fit the intention of this feature request. Hope it can be reopened.

@falkTX
Copy link
Owner

falkTX commented Aug 7, 2014

the new title that makes more sense.

in your first example you don't specify what is done with plugin B extra 2 inputs.
but let's see if I understood you correctly.

plugin A has 4 inputs and 2 outputs.
plugin B has 4 inputs and 2 outputs as well.
the order is IN => A => B => OUT. (assuming "IN" is 4 inputs and "OUT" is 2 outputs)

the first "IN => A" connection is fine, but on "A => B" the B plugin has 2 inputs that will not be used.
Will those be silent?

I think having the same number of "IN"s and "OUT"s in this example would be better (both 4)

@falkTX falkTX reopened this Aug 7, 2014
@ghost
Copy link
Author

ghost commented Aug 7, 2014

The example was arbitrary, designed to demonstrate the logic of automatic connection. But it can easily happen in reality, for instance, if you use sequentially 2 compressors which have external sidechain capability. You might even have no need in the second compressor's sidechain, but the inputs are still there. Most of the processing in chain will probably happen in 2 channels as is common when mixing to stereo, but multiple in's and out's are invaluable in certain situations, if for a sidechain use, for network transmission, to avoid latency differences etc. Attached is a sketch of the proposed logic. The idea is to give the user a comfortable starting point, and to allow them to introduce changes as required.

carla-multichannel-autoconnect_001

@ghost
Copy link
Author

ghost commented Aug 7, 2014

To clarify, I took the model for this logic from the way Reaper handles inserts on it's tracks, which is highly regarded by many for it's flexibility and ease of use (including myself). More precisely, that's my take on adjusting this logic to Carla's environment, which may or may not be 100% successful.

As I was unable to find a sensible specification for this operation model, I'll try my best to describe it as I know it.

The idea is using fx as "inserts", meaning they are inserted into otherwise freely flowing signal. A track (in case of Carla, "a rack" or "group" or "module" or whatever) can have 2 or more channels, and every "in" by default is connected to every respectful "out" of the track. Unless you insert something between those respectful "in's" and "out's". If you do insert a plug-in there, it will by default "plug" into as many input channels as it has, and into as many output channels as it has. Starting with channel no. 1 and on. Every other existing connection between these in's and out's is then removed. All the other existing connections remain in their previous state. For instance, if you inserted a 2-in 2-out plugin while there had been an existing user-customized connection between in1 and out3, this connection will survive.

That is the automatic initial assignment when introducing a new plugin into the chain, which may be further freely modified by user to their liking. The user is able to add channels to the track as needed (or remove them), and in case the user decides to move a plugin into a different spot, the host remembers the plugin's previously established connections and re-establishes them in the new spot, but with respect to it's new neighbors. While doing the same to all other plugins whose in's and out's had been affected by that regrouping.

Basically, the idea is of a track on an analogue mixer, enhanced with multi-channel digital routing flexibility.

Edit: the processing in this model is sequential, so if you insert a plugin between 2 other existing plugins, it will not automatically plug into system's in's and out's, but into it's immediate neighbors' in's and out's. That is unless the path from some of it's in's or out's to some of the system's respectful in's and out's is free.

To illustrate this, if you have a 2-in 2-out plugin A in place, and then insert a 4-in 4-out plugin B after it, A's outward connections to system's "playbacks" are removed, and B's first 2 inputs will plug into A's now-vacant outputs. Additionally, B's inputs 3 and 4 will plug into system's "captures" 3 and 4 respectfully, B's 4 outputs will plug into respectful system's "playbacks".

@falkTX falkTX added this to the 4.0 or later milestone Jan 23, 2015
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

1 participant