Skip to content

using the modulation parameters

Tristan Rowley edited this page Mar 16, 2020 · 12 revisions

Using modulation parameters

The newer branches contain modulation functionality, intended mostly to be used creatively with sources of external control like OSC or MIDI, and also internal sources like the LFOModulationPlugin or SoundReactPlugin.

How it works

Internally

There are 4 'modulation parameters', ABCD (aka 0-3). Each of these stores a float from -1.0 to +1.0, this is the 'modulation value'.

Each modulation slot has its value set using the recur actions modulate_param_0_to_amount_continuous through modulate_param_3_to_amount_continuous in a json_objects/osc_action_mapping.json or json_objects/midi_action_mapping.json file. This is also how internal plugins should send their own modulation to slots via actions.call_method_name.

User controls - setting shader modulations

By default, modulation parameter 0 is selected. Switch to different modulation parameters using select_shader_modulation_slot_X where X is the parameter 0-3. Reset all modulations for the currently selected modulation parameter using reset_selected_modulation.

To set the currently selected modulation parameter's level for a shader parameter, use set_param_X_layer_offset_Y_modulation_level_continuous where X is the shader parameter number 0-3 and Y is the shader layer.

In recur, there are 3 shader layers, and each can run one shader at a time. Each shader has 4 parameters, numbered 0-4, making for a total of 12 controllable parameters. Each shader layer parameter keeps a 'modulation level' for each modulation parameter (so 48 assignations). The average of all four modulation parameter values is applied to each shader parameter, according to the modulation parameter level respective to the parameter.

Check out the json_objects/osc_actions_mapping_APC Key 25.json file for an example of how I've mapped this to my controller -- I have it so that holding FN makes the knobs on my controller adjust the //modulation level// for the respective shader parameter, with some other buttons to select a different modulation parameter and to reset the existing one.

Plugin support

LFOModulationPlugin and SoundReactPlugin send modulation signals, and WJSendPlugin can receive modulation signals and map them to internal parameters.

ManipulatePlugin stores a copy of recent mod values as variable, so you can reuse them in other bindings if necessary (check the ManipulatePlugin page to see these updating)

  • doctea 2020-01-29 (revised 2020-03-16)

just a reminder of some things i still need to do for documenting:

  • update dependances
  • update develop docs with info on new structure
  • update faq from questions in the fb group
Clone this wiki locally