Modifiers questions

Hi ! I have some questions and remarks about modifiers in tracktion engine:

  1. First of all, modifiers API does not seem to be open to add more modifiers. ModifierList is hardcoded to support only internal modifiers. That’s a bummer since I want to have my own modifiers. For now the solution is to modify this part of the codebase but it is never ideal to change dependency code. Is there some exposed API to add custom modifiers that I’m missing ? If no, is there a reason for it not to be opened to extension (NodeBuilder invariants to satisfy, … ) ? If no, is it something that you’re considering to add to the engine?

  2. Modifiers are owned by the track so they can be shared between multiple plugins in the track, which is great. However it would be even better if plugins could have their own sets of modifiers so we could pack together a plugin and its modifiers as a preset. Is there a way to get this behaviour in tracktion engine ?

  3. Modifiers are only pre or post track (and this is compile time and set per type of modifiers). This may be a problem though notably for modifiers taking audio or midi as inputs. For instance, the envelope follower is run post-track, but you may want to have it control some parameter in between plugins (for instance after a sampler but before a filter). The same consideration applies to midi based modifiers as midi can be modified in the plugin chain. This aspect is maybe the most problematic aspect of current modifier implementation as it limits a lot the expressive power of modulation. I’m currently contemplating the possibility of having a look at the node builder to try to implement this behaviour at a later time. Is it something you’re considering to implement on your side ? If no, can you think of important considerations to know before engaging in such a refactor ? Also this would probably requires point 2 above: track modifiers would be run before everything else, plugin modifiers before the plugin owning them. As a reference, Bitwig has this built in and it’s one of the most powerful feature of this daw as this allows to easily add life and movement to musical elements.

  4. I’m confused concerning track modifiers and racks. Am I mistaken in saying that modifiers owned by a track can’t control automatable parameters of rack’s plugins, even if this rack has an instance on said track ?

No, it’s something I always intended to make extensible in the same way as Plugin but never got around to it. You’re actually the first person that has asked about it.

You can do this if you create a Rack as Racks can contain both Modifiers and Plugins.

Yeah, it’s a reasonable request but not one we’ve got as a high priority I’m afraid.
You could use the Rack approach I listed above where you have complete control over the signal chain.
I do agree that having Modifiers for a specific plugin would be cool.
The difficult thing when making the positions arbitrary are what you do when plugins are added/removed/moved. Does the Modifier position relate to an index or a before/after plugin ID? Just some things that don’t have an obvious answer.

TBH I can’t remember the details exactly, it’s been a few years. I think this limitation is only something we enforce in Waveform. I have a feeling in Tracktion Engine, you can assign any Modifier (ModifierSource) to any destination (AutomatableParameter).