This will be of interest mostly to Cockos Reaper users who are already familiar on how to use ReaScript. (Explaining setting up Python for use with Reaper is beyond the scope of this blog post. But if you came reading here based on the forum threads at Cockos’ forum, ask for ReaScript assistance there.)

I did some Python script actions for Reaper to randomize parameters of VST/JS etc plugins. These actions work for multiple plugins on different tracks. They can even keep settings per Reaper project since they use the Reaper assigned GUIDs (Globally Unique IDentifiers) to keep track of plugins. (ReaScript doesn’t have proper facilities to save and load settings per Reaper project, so this is the best that could be done so far.) The settings of the system are stored at the same location as Reaper’s INI-setting files with the name “xenakios_fxparamlearn.json” in JSON text format. If you encounter a problem using these scripts, looking/editing or deleting that file might solve the problem.

In the zip file a folder of following scripts is included :

randomize_fx_params_learn_last_touched.py

When you have touched (moved) a parameter of a plugin, this will assign that parameter to the randomization system.

randomize_fx_params_add_all_parameters_of_touched_plugin.py

When you have touched a parameter of a plugin, all parameters of that plugin will be assigned to the randomization system, excluding the bypass and wet/dry mix parameters added to the plugins by Reaper itself. These parameters can however be manually assigned in addition, using the action randomize_fx_params_learn_last_touched.py.

Adding all parameters of a plugin might produce very unpredictable and even useless results. I recommend manually assigning only “nice” parameters to the system.

randomize_fx_parameters.py

This does the actual randomization once at least one parameter of some plugin has been added to the system.

randomize_fx_mutate.py

Randomizes assigned parameters by adding a random amount (that can be either negative or positive) to the current parameter value.

randomize_fx_params_set_lowlim.py

randomize_fx_params_set_highlim.py

These allow constraining the randomization of a parameter to a range. Move the plugin parameter to a desired limit position and call either of these actions to set the limit. If the parameter was not already added to the randomization system, it will be added automatically.

randomize_fx_params_unlearn_last_touched.py

Move a plugin parameter and call this to remove that parameter from the randomization system.

randomize_fx_params_unlearn_all.py

Run this to remove all currently assigned parameters.

randomize_fx_params_show_assignments.py

This shows the currently stored randomization assignments in a dialog box.

randomize_fx_params_helpers.py

This contains internal implementation details and should not be added into Reaper as an action.

The scripts have been developed and tested with Python 3.3 (earlier versions should work but I recommend to use Python 3) and Reaper 4.53 pre5 on Windows 7. Let me know if these run on OS-X or not, though I can’t test on OS-X myself at the moment, problems might be fixable anyway.

I won’t be offering any support/enhancements for these, as I’ve dropped using Python for Reaper scripting. But I’ve been planning on rewriting these with Lua. Might as well start working on that now, I guess…