realearn icon indicating copy to clipboard operation
realearn copied to clipboard

Support VCA and track grouping parameters

Open helgoboss opened this issue 5 years ago • 3 comments

From ChocolateHawkins:

Another issue I've noticed with Realearn is when I map to a VCA master fader, the VCA follow functions (fader, solo, mute, etc.) do not work.

helgoboss avatar Oct 10 '20 20:10 helgoboss

I think this needs to be implemented manually by evaluating GetSetTrackGroupMembership. Could be easier to do when implementing #4 by providing the foundation to allow resolving to multiple targets at once.

helgoboss avatar Mar 11 '21 20:03 helgoboss

It works for record arm already, maybe for some other things as well?

helgoboss avatar May 16 '21 21:05 helgoboss

From ChocolateHawkins:

Another issue I've noticed with Realearn is when I map to a VCA master fader, the VCA follow functions (fader, solo, mute, etc.) do not work.

To add a detail: it'd be nice to bypass grouping by holding down 'SHIFT' when toggling a parameter via ReaLearn.

TheMiscreant avatar Feb 03 '22 00:02 TheMiscreant

Status quo

Legend:

  • "no" = it doesn't work yet
  • "yes" = it works already

Leads:

  • Volume (CSurf_OnVolumeChangeEx denying gang)
    • In general: no
    • Reverse volume: no
  • Pan (CSurf_OnPanChangeEx denying gang)
    • In general: no
    • Reverse pan: no
  • Width (CSurf_OnWidthChangeEx denying gang)
    • In general: no
    • Reverse width: no
  • Mute (CSurf_OnMuteChangeEx denying gang + CSurf_SetSurfaceMute notifying all): yes
  • Solo
    • In-place (GetSetMediaTrackInfo + CSurf_SetSurfaceSolo notifying all): no
    • Ignore routing (GetSetMediaTrackInfo + CSurf_SetSurfaceSolo notifying all): no
    • Use REAPER preference (CSurf_OnSoloChangeEx denying gang + CSurf_SetSurfaceSolo notifying all): yes
  • Polarity/Phase (SetMediaTrackInfo_Value): no
  • Record Arm (CSurf_OnRecArmChangeEx denying gang): yes
  • Automation Mode (SetTrackAutomationMode): yes
  • VCA (see volume): yes

Options:

  • Do not lead when following: yes (works for all leads with "yes")

Findings:

  • GetSetMediaTrackInfo or SetMediaTrackInfo_Value of course doesn't respect track grouping stuff (that was clear already)
  • Additional CSurf_SetSurface* function calls don't have any effect on track grouping
  • CSurf_On*ChangeEx function calls which deny gang respect track grouping only for on/off-style things (solo, mute, record arm)
  • CSurf_On*ChangeEx function calls which allow gang respect track grouping always!

Solution:

  • For volume, pan and width: Add a checkbox to respect track grouping (internally allows gang, off for old presets, by default off)
  • For mute, arm, solo (use REAPER preference)
    • Ask Justin why calling the CSurf_On*ChangeEx functions with denying gang still invokes track grouping. Maybe a bug?
    • If there's a way to disrespect track grouping, add a checkbox to respect it (on for old presets, by default off)
  • For phase, solo (in-place, ignore routing): Ask Justin if there's a way to respect track grouping. Maybe temporarily change REAPER preference?
    • If there's a way to respect track grouping, add a checkbox to respect it (off for old presets, by default off)

helgoboss avatar Sep 28 '22 15:09 helgoboss

I renamed this to "Support track grouping parameters" because VCA works already!

helgoboss avatar Sep 28 '22 15:09 helgoboss

I added a "Respect track grouping" and "Selection ganging" checkbox to all relevant targets.

One limitation: Volume, pan and width targets can respect track grouping only if selection ganging is also enabled.

helgoboss avatar Sep 29 '22 00:09 helgoboss