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] Mix groups #82

Closed
jatinchowdhury18 opened this issue Sep 7, 2020 · 13 comments · Fixed by #87
Closed

[FEATURE] Mix groups #82

jatinchowdhury18 opened this issue Sep 7, 2020 · 13 comments · Fixed by #87
Assignees
Labels
enhancement New feature or request help wanted Extra attention is needed
Milestone

Comments

@jatinchowdhury18
Copy link
Owner

Describe the solution you'd like
Add mix groups for communication between plugins. Essentially, all the plugins in the same mix group would share the same parameters. This can be useful for syncing instances of the plugin across a mix.

Additional context
This is a pretty big feature. Unfortunately, I don't have much of the expertise or the time needed to implement this feature right now. If anyone else want's to take responsibility for this feature, I'm happy to assist in any way I can.

@jatinchowdhury18 jatinchowdhury18 added enhancement New feature or request help wanted Extra attention is needed labels Sep 7, 2020
@jatinchowdhury18 jatinchowdhury18 self-assigned this Sep 7, 2020
@rip-off-hb
Copy link

I'd love to understand: What would be the benefit compared to simply putting the plugin on a bus and route the channels through it that you'd otherwise put into the same mix group?

@jatinchowdhury18
Copy link
Owner Author

@rip-off-hb really good question. Basically, it's just a different sound. Imagine a couple different scenarios:

Scenario 1:
You record a song direct into your DAW, maybe drums, bass, guitar, then you do the mix in your DAW, and finally bounce to tape for mastering (there's a few artists/engineers who do this sort of thing). Each instrument track is "clean", and then gets summed into a stereo mixdown that then has tape saturation applied to it. This would be analogous to putting a tape plugin on a bus, an routing to it.

Scenario 2:
You record your drums, bass, guitar to an 8-track tape recorder. Now each instrument will have tape saturation applied separately during the recording process. You then go about mixing and end up with a stereo mixdown. Now the mix will be the sum of the signals that have already been processed by the tape. This scenario would be like having synced instances of a tape plugin on multiple tracks.

Neither scenario is necessarily "right" or "wrong", just different sounds you might want. I should note that for strictly linear effects, like EQ, there is effectively no difference between the two scenarios, but for any distortion or nonlinear effect like tape, it will make a difference whether the plugin is processing a summed signal vs. individual signals. Please let me know if this explanation makes sense, I'm trying to get better at explaining these types of things.

Thanks,
Jatin

@jatinchowdhury18
Copy link
Owner Author

Another plugin that implements something similar is U-he's Satin. This video describes the mix groups feature, and talks about why it's useful. Discussion of the mix groups starts at 5:55, and their demo essentially comparing the two scenarios described above starts at 9:19.

Technical Note
The Satin user manual states:

Important: Using groups in simultaneously opened projects in your host application(s) can lead to
unexpected results – the groups of one project will be overwritten by those defined in the next. Also
please note that Satin cannot be grouped if the processes are sandboxed – if you have problems
with Satin’s grouping feature not working at all, please refer to the documentation for your DAW.

This leads me to believe they're using something like this: https://docs.juce.com/master/tutorial_osc_sender_receiver.html, where the message would have three arguments: mix group, parameter name, parameter value.

@jatinchowdhury18 jatinchowdhury18 linked a pull request Sep 13, 2020 that will close this issue
@jatinchowdhury18 jatinchowdhury18 added this to the v2.6 milestone Sep 13, 2020
@jatinchowdhury18
Copy link
Owner Author

I've now implemented this feature as of #87. To try it, download the version 2.5.99 from the develop branch. Since this version is different from the latest official release (2.5.0), the plugin will ask you if you want to update, which you can ignore for now.

Please let me know if you have any issues!

@rip-off-hb
Copy link

...
This leads me to believe they're using something like this: https://docs.juce.com/master/tutorial_osc_sender_receiver.html, where the message would have three arguments: mix group, parameter name, parameter value.

I'd do it way simpler. Just have a static array of groups with the respective parameters and a simple change listener.

@jatinchowdhury18
Copy link
Owner Author

@rip-off-hb, wow you're right... I seriously over-compilcated that! Changes in progress at #88.

Thanks!

@SomeoneCalledRob
Copy link

Just popping in here to mention that 2.5.99 is crashing the AU validator in Logic. I've attached a crash report.

chow crash.txt

@jatinchowdhury18
Copy link
Owner Author

@SomeoneCalledRob, thanks for catching this! Should be fixed now.. builds can be found in the usual place.

@SomeoneCalledRob
Copy link

Yes, just tested and all seems fine now. The group feature is working really well.

Couple of quick thoughts: 1) A latency compensated bypass button would be handy. 2) The chew frequency minimum seems pretty high (but thanks for the variance control).

@jatinchowdhury18
Copy link
Owner Author

@SomeoneCalledRob, thanks for testing... glad the mix groups work on Mac.

For bypassing latency compensation, I'm guessing you're talking about the latency compensation happening internally on the dry signal path? This is only to keep the dry/wet signal paths in phase, and it usually only ends up being a couple samples. I'm not sure what I'd gain from bypassing this since it takes up almost no CPU relative to the other processing going on?

@SomeoneCalledRob
Copy link

The groups feature made me think of a bypass. It might be useful to be able to bypass several instances at once, but then you can always use the dry/wet for that -- so not a big deal.

I notice that alt/option-click sets dry/wet to 100%. Could it be a toggle for 0 and 100?

@jatinchowdhury18
Copy link
Owner Author

@SomeoneCalledRob, that makes sense. Might not be too hard to fit a bypass switch somewhere in the GUI... I can take a look at that.

Currently alt/option+click sets the knob to its default state (not just for dry/wet, for all the knobs). I'd rather keep this behavior consistent across all the knobs, instead of having the dry/wet knob be different.

@jatinchowdhury18
Copy link
Owner Author

Since the last changes to the code, I've had several reports that the feature is working well, and no reports of any reports of bugs or crashes. With that in mind, I'm closing this issue... to continue conversations for any of the other things mentioned on this thread, please create a new issue.

Thanks,
Jatin

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants