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

Nyquist plugin ;type process-to-new #2464

Closed
werame opened this issue Jan 22, 2022 · 2 comments
Closed

Nyquist plugin ;type process-to-new #2464

werame opened this issue Jan 22, 2022 · 2 comments

Comments

@werame
Copy link

werame commented Jan 22, 2022

Is your feature request related to a problem? Please describe.
Presently if you want the result of an effect to go to separate track, you have to duplicate the original track first.

As an off-shoot of #2460 we could now fairly easily implement a ;type process-to-new, which basically would obviate the need to duplicate a track first before applying an effect, in the case where one wants the effect's result to be a separate copy.

This is useful in some cases where e.g. one does envelope extraction and would want to have it as actual waveform for further step-by-step processing before replying it back to the waveform. (Doing the latter is also pretty hard at the moment, involving a convoluted use of *scratch* but that's another matter, for another GH issue to track. A brief mention of that is here, i.e. the fact that in Audacity "process" only directly processes one track of the selection at a time.)

Describe the solution you'd like
;type process-to-new would return the result in a new track instead of replacing the selection.

Describe alternatives you've considered
The only real alternative presently is to manually duplicate the track(s) before applying the effect. While this is no big deal for a one-off, it can get tedious to do repeatedly, if one doesn't want to fix the effect's parameters. (Macros suppress dialog boxes, so you can't define a macro that would first duplicate something then invoke an effect while still allowing the user to interact with fx dialog box.)

Additional context

This proposal is somewhat related to what is called a "bounce" is some other DAW-type software, although the latter also usually implies applying a mixdown of the current selection first (which can span multiple tracks). Since most such DAW software supports per-track effect chains, if you bounce a (single) track to one that has an effect chain defined, you basically get the DAW equivalent of what process-to-new would do in Audacity. And it's actually a common workflow in a DAW to bounce a part of a track just to apply some effect. In fact, what Audacity does for "type process" aka affect plugins, is more convolutedly called "bounce a region in place" in Logic Pro because the mentality is that it's that latter that is a "derived form" of the "simpler" bounce action.

In Ardour the equivalent of the proposed process-to-new is called "Bounce with processing"

  • Bounce (without processing): Creates a bounce, i.e. a version of the region with all the edits (boundaries, envelope), as a new region in the Editor List, without any of the effects of the mixer strip
  • Bounce (with processing): Same as above, with the effects of the mixer strip

I'm just mentioning these for context, the received DAW terminology can be confusing for the kind of audience Audacity aims for.

Also, some DAWs (including Studio One and Logic Pro) have the option to do what I'd call process-to-new-and-mute-original.

This is more or less the only thing that S1 does on bounces but is an option in LP's bounce dialog, alongside leaving the original as-is or even "deleting" it, which I think means replace with silence in Audacity terminology, and not the kind of shifting-delete that Audacity does. but I don't have a Mac handy to test.

Presently in Audacity you can't (non-destructively) mute individual clips of a track, I think, except by tweaking the overlay envelope(s), which would not create a seamless transition on a bounce, I think. So, from among the LP bounce choices, beside "leave original as-is", which is what process-to-new as proposed would do, we'd only be able to implement a process-to-new-and-replace-original-with-silence, which isn't too different from merely doing a plain process, except the former would also create a separate clip (in a new track).

(Ardour only implements leaving the original as-is on a bounce, it seems.)

Probably an alternative way to address some of these issue is to remove the obnoxious limitation that Nyquist tool plugins have, namely that they cannot call other Nyquist plugins (of fx types for instance.) Solving this latter problem is pretty hard as the NyquestEffect class gets instantiated to a singleton object that is non-reentrant, meaning a Nyquist plugin needs to fully finish before you can start another. I guess I can file a separate issue for that one.

@werame
Copy link
Author

werame commented Jan 22, 2022

After experimenting a bit more, this is probably not worth the hassle because duplicating (ctrl+D) a one hour (stereo) track is instantaneous on my machine. So there's not that much to be saved by implementing this process-to-new.

#2465 is the (far) better general way to reduce the click spam needed to use Nyquist plugins, as part of sequences. (There's one other "controls wrap" feature needed, which I'll file separately.)

@werame werame closed this as completed Jan 22, 2022
@werame
Copy link
Author

werame commented Jan 22, 2022

Also, the separation between tool type and process type is only strict in one direction.

It turns out one can do this.

;version 4
;type process

(aud-do "Duplicate:")

(mult 0.3 *track*)

The "only" issue with this is that you'll get the effect still applied to the original, i.e. the unprocessed copy of the original will be under the original/processed duplicate. It's because the NyquistEffect class binds the input and output tracks before before handling over control to the user code.

So yeah, you can easily get a version of "bounce with processing" in Audacity that isn't implemented by any DAW, but you can't get the more common/useful ones.

image

What may a decent idea is to allow the user code of the Nyquist effect to tell NyquistEffect that it want to output to something else, i.e. to have some (set-output tracknum) or something similar.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant