On a whim, I just disabled all plugins on all tracks. I wanted to confirm/see the DSP savings. Of course, after seeing the improvement with my own eyes, it makes total sense and now I'm thinking about using automation to disable a given track's plugins (by way of the standard "Activate" selection) when I know they won't be needed anymore (the track has served its purpose and I know I will not be adding anything to it in the future).
Or, I may not. That's a lot of work.
I do wonder if this would translate well to something that could be toggled, either on a track or global level. From a design perspective, I'll just share some thoughts on how this might work. I've put all of 2 minutes into thinking about this functionality and what I'm about to share so it's entirely possible I'm overlooking obvious negative implications.
Some kind of look_ahead() function would be needed. The job of this function would be to identify a location for a given track where no data exists past the location. This location would be used to automatically create the automation to disable all plugins assigned to the track.
Any track benefiting from this "auto plugin disable" functionality would therefore have to use the same functionality to auto-enable all plugins when playback begins so long as the play-ahead is before the location returned by look_ahead().
In the event data is added past the location previously described, the marker to used to mark the location is deleted.
Everything described above should run on every Play or Record; essentially building or recreating these automatons for any feature-enabled tracks. This might be a terrible place to invoke all this building/rebuilding as it might introduce unacceptable lag. Maybe going in the complete opposite direction and calling on any Stop or Pause event is a better move since the cost would easier to pay on that side.
Although a high level global toggle is appealing (from a DRY perspective), scoping this functionality to individual tracks is more flexible and should reduce/eliminate any unintended side-effects. For example, a reverb plugin's tail would be cut off if disabled automatically simply because of the location returned by the previous look_ahead() function.
From a UI perspective, there's plenty of room in the Track Dialog panel to add a checkbox for the purpose of toggling this functionality as the Track Name column in the Arranger view is already quite well laid out and doesn't need extra clutter.
There would be any real benefit to actually rendering (making visible) any automatically generated automation as the user should have no need to look at it (and certainly none to manually edit). From an end user perspective, if the feature is enabled for a given track, it should just work.
That's really it for the thoughts. Do other DAWs even do this? I've never heard of it but it seems like all the "pieces" pretty much already exist (meaning all these things can be done manually) and the performance benefit seems compelling.
re. Idea: Auto-disable track plugins
there's already Track > Auto Deactivate, for all plugin chains that are idle and processing no useful signal, ie. plugins that are normally activated but not monitored; of course all those became re-activated as soon playback starts rolling and deactivated again when paused.
having a real-time auto-deactivate/gate function would be nice but not in the plans, sorry
not easy to decide
I am afraid that activating plugins on demand produces a CPU spike because they have to run their init routine – which could lead to xruns. So I don't use Auto Decativate.
Woah! I never knew. Totally
Woah! I never knew. Totally gonna give it a spin. Thanks for the heads up.
Add new comment