surge-synthesizer / surge

Synthesizer plug-in (previously released as Vember Audio Surge)
https://surge-synthesizer.github.io/
GNU General Public License v3.0
3.01k stars 386 forks source link

Inconsistent saving of S-LFO automation settings with Airwindows plugins #7689

Closed Witcharrr closed 4 days ago

Witcharrr commented 4 days ago

Bug Description: Inconsistent saving of S-LFO automation settings with Airwindows plugins

Surge XT Version 1.3.2.f5bd0e1

Plugin Type: VST3 Bitness: 64-bit

Reproduction Steps: Steps to reproduce the behavior:

1) Add Airwindows plugin like ZBandpass on FX Section 2) Set S-LFO to ZBandpass' Cutoff and Poles. 3) If you select another Airwindows plugin from "Type" dropdown menu automation will be saved at their respective positions (second and fourth slider) 4) If you click on arrow button for next "preset"/plugin the automation of these parameters will be lost, as well if you will choose another plugin with FX Presets dropdown menu.

Here's a video:

https://github.com/surge-synthesizer/surge/assets/14049568/ad79de45-c109-418d-a72e-870ae2163e39

Computer Information:

OS: Windows 10 64-bit DAW: Reaper v7.16; Renoise 3.4.4 CPU: Intel Core i5-10400F RAM: 64GB DDR4

Additional information: Honestly i don't know which plugin behavior in this case is right "by design", but the ability to save automations on the sliders is kinda cool.

baconpaul commented 4 days ago

So this is annoying in this case, but it's by design. We used to preserve modulation settings when switching FX type and that led to very bad outcomes when a parameter had a radically different meaning. So people would accidentally find themselves blowing up their session from a hidden modulation which no longer made sense.

The approach we decided to take was

  1. Clear modulation when overarching FX type changes (but the airwindows are all the 'same' type and this is why it seems confusing; in theory we should also clear modulation if you change the aurwindows sub-type)
  2. Provide a complete undo implementation

The other approach we could have taken was to remember modulation mappings per fx type per slot, but that's an enormous amount of complexity (and quite a bit of memory and reconfiguring of the mod matrix on fx change in a way which may not be entirely awesome) so we didn't do that.