Reaper: Automating Multiple Parameters with your own JSFX
- Tiago Ring Inácio
- Mar 19, 2024
- 3 min read
In this post, we’ll explore the simplest way to automate multiple parameters at once in Reaper by creating your very own JSFX! No coding knowledge required, and very easy to setup and expand.
Automation: Limitations
It’s fairly easy to set up automation and modulation for individual parameters in Reaper. However, once multiple parameters have to follow the same automation curves or modulation, it becomes challenging to keep all parameters in sync, especially if these contain different value ranges and scaling. At a certain point, there’s too many different types of parameters to keep track of and either your Reaper sessions will have more automation tracks than normal tracks, or you’ll have too many per-parameter modulation windows to keep track of. One solution to this is to create a simple JSFX.
Automation: Global Slider
The concept of the JSFX is simple: Create an “controller” parameter that serves as a main reference point for all the parameters you would like to modulate or automate, and link all these parameters to the “controller” parameter. The created JSFX parameter is simply a “controller” because its only purpose is to control all the other parameters, and it does not affect the sound in your tracks in any direct way.
To create your own controller parameter, open up the FX Browser (default shortcut: Shift+F), click on FX>Create New JS FX:

Give it a name and a description. For the purpose of this post, we’ll call it Global Slider. Once this is done, your Global Slider will appear as a simple gain control plugin. Click on Edit:

You’re welcomed with the code that comprises the gain control. For our Global Slider, all we need is the line starting with “slider1”, and the description at the top. The “slider1” line is all we need to have our Global Slider for automation control - you are free to change the value range and increment amount. For the purposes of this post, we’ll go with a range going from -100 to 100, defaulting at 0 and incrementing by 1, like so:
slider1:value=0<-100,100,1>Value (-100→100)
…and that’s it! All that remains is linking plugin parameters to the Global Slider.
Global Slider: Parameter Setup
For the purpose of this post, we will use KiloHearts’ free Transient Shaper plugin, and set up the Pump and Sustain parameters to react together:

The desired end result is as follows:
Sustain parameter ranges from -100% to 100%
Pump parameter ranges from 0% to 100%
Global Slider:
From 0 to 100:
The Sustain value should move from 0% to 100%
The Pump value should remain at 0%
From 0 to -100%:
The Sustain value should move from 0% to -100%
The Pump value should move from 0% to 100%
The Sustain parameter has the same range as our Global Slider, meaning that simply assigning the Sustain parameter to be linked to the Global Slider’s Value parameter already covers this need.

For the Pump parameter, we’ll go through the same linking process, but this time we need to set the Offset to -50% and the Scale to -200% to reach our desired result. The -50% Offset prevents the Pump parameter from reacting to any values above 0 coming from our Global Slider. The -200% Scale inverts the incoming value from the Global Slider, and adjusts the increment/decrement value, compensating for the Offset.

And that’s it! We’ve reached our goal in a few easy steps. From here on out, all you need to do is automate or modulate the main parameter in the Global Slider, and the Transient Shaper acts accordingly.
Of course, this approach is applicable to pretty much any parameter and value ranges from almost any plugin, so be creative!
Global Slider: Expansion.
These simple JSFX don’t have to be limited to a single parameter, nor do they have to be a generic solution to the aforementioned problem. The concept of the Global Slider can be expanded and dedicated to more specific purposes.
As an example, we’ve created a JSFX plugin to control multiple instances of Xfer’s OTT. The Multi-OTT Control contains almost all parameters found within OTT, and can be used to automate and/or modulate multiple instances at the same time!

Of course, connecting all the parameters found within OTT to every single slider parameter in the control JSFX is a pain, so we’ve included two .Rfxchain files at the end of this blogpost. They load Multi-OTT Control as well as provide enough pre-connected OTT instances to work with. With this amount of control, it becomes easy to mass-automate the plugin chain, and your sounds can go from this:
…to this:
…in an instant!
Conclusion
Creating a custom JSFX controller, like the Global Slider discussed here, offers a straightforward yet powerful solution for managing automation and modulation of multiple parameters in Reaper. Expanding this concept even further not only creates easy solutions for mass-automation challenges, but also opens up pathways for new and creative control over all your plugins!
Have fun!
Comments