View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0001148||OpenMPT||Feature Request||public||2018-10-08 21:15||2018-10-08 21:16|
|Summary||0001148: Global effects|
This idea is borrowed from EnergyXT, where I discovered how this feature works and thought, oh, this would be so cool in OpenMPT.
In EnergyXT you can add an effect as an Insert, and as a Send. The insert works the same as how OpenMPT does it. The VSTi outputs to a plugin, then to the next, and finally to the mixer, and this chain is exclusive to that VSTi (unless you manually route it differently)
The sends are different though. When you insert an effect here, an extra parameter has to be set, which by default is set to 0% and can be set all the way up to 100%, which is a wet/dry ratio slider. When you insert a send, it is available to all channels, and can be enabled for one instrument by simply adjusting the wet/dry ratio slider.
What I'd like to see is the following; In the plugins section, you have a new checkbox near the master checkbox named Global. When this checkbox is checked, the Master checkbox is grayed out, the Output to: FX yy is also grayed out, as well as the new section for global plugins (more on that coming next).
In addition, a combobox (or whatever works best) plus a wet/dry slider is added. This is for the global plugins, so this is grayed out if you check global.
The combobox holds a list of all plugins that are set as global followed by their dry/wet ratio value indicated by a number from 0% to 100%. (more on that later).
I don't know how easy it is, but if it is possible to get all inputs of a plugin, then I'd love to have each input listed in this combobox. This would allow anyone to use a side-chain compressor in OpenMPT and assign something to the side-bus, by selecting that input and give it a value higher than 0%, preferably 100%. If this is possible, then the combobox would also name the input.
An example of what the combobox could look like:
FX35 - Compressor - MAIN (0%)
As soon as you make a selection with the combobox, the slider's value is updated with the value stored for that effect, and changing the slider updates the wet/dry value for that entry.
Rather than forwarding the output of a plugin to the next plugin in the chain, routing occurs as follows:
A plugin that is not a global plugin will process the audio first by itself. It then goes through all the global plugins to see if any of the plugins have a wet/dry value higher than 0% (it skips those that are 0%, obviously). If it finds one or more plugins with a wet/dry value higher than 0%, the audio is routed to that plugin, the plugin's effect is captured, and is mixed back with the output of before it was sent to that plugin.
Once all global plugins are processed, the plugin forwards its output to the next plugin in the chain. Here's an ascii representation of what the chain processing looks like:
As you can see, it is possible for a global plugin to be used more than once in a plugin chain. This is perfectly fine and does not require any error handling. Its like the same plugin is added twice in the chain. Of course, it is by design that if many plugins output to the same global plugin, all audio is mixed in that plugin. So many sounds to the same AMP will create a distorted sound. That is totally by design. Otherwise, you could not create side chaining.
This would also mean that you can limit the amount of effects used to reduce overall CPU usage.
|Tags||No tags attached.|
|Has the bug occurred in previous versions?|
|Tested code revision (in case you know it)|