[update: it is simpler than this. see addenda in
this comment below.]
over on KVR we were discussing the limits of modulating high resolution effects parameters with low resolution MIDI controls. this came up in the context of a user expressing frustration with modulating the Decay time of Sean Costello's extremely cool
ValhallaRoom reverb plug-in with a low resolution standard MIDI control. i came up with a way of mapping a standard MIDI control to a limited range of the much higher resolution Pitch bend control to work around this limitation. at Sean's request, here is a tutorial on how to do scaled mapping of a standard midi controller to pitch bend in Reaper for high resolution control of Decay and other large range effects parameters:
the basic technique is fairly simple: use Reaper's parameter modulation facility in the ReaControlMIDI to scale pitch bend based on another midi controller.
here is an example image i will refer to in the instructions below:
- insert a new track. in the example this track is named "hires mod".
- right click on the track Record button and under Input: MIDI enable the MIDI device for this track which will send the desired standard MIDI control (e.g. CC 1). turn track Record Monitoring ON, and arm the track for recording. we can Record: disable the track if we don't want to actually record its MIDI input.
- add ValhallaRoom and ReaControlMIDI to this track's effects. the order is not significant.
- in ReaControlMIDI, check Enable in the Control Change area. ensure that Pitch Wheel is selected for one of the controls, and select your desired source control in another dropdown. in the example i use CC 1 (Mod Wheel) in the last control.
- now move the Pitch Wheel slider, and then click Param at the top of the vst window and select "Parameter Modulation". this brings up a Parameter Modulation dialog for the Pitch Wheel control.
- check "Enable parameter modulation" and "Link from parameter"
- click the dropdown button below Link from parameter, select "(self): ReaControlMIDI", and in the submenu select your source control - e.g. "CC 1 (Mod Wheel)". now the Pitch Wheel control is linked to your source control, based on the baseline value, Offset and Scale sliders.
- in the example, baseline and offset are 0 and scale is 2%. so the full 127 value range of the standard CC 1 Mod Wheel control drives the high resolution Pitch control through the lowest 2% of it's range. if we drag the CC 1 slider, or send CC 1 from a MIDI controller, the Pitch Wheel slider should change between it's minimum of -8192 and -7865. when Pitch is used to control the VRoom Decay parameter there will be 127 steps to cover 2% of the 100 second range, or about 0.016 seconds per step.
so far so good. but there is a difficulty in the way Reaper handles MIDI automation. the normal method is to move the effect parameter we wish to automate via MIDI, click the Param button and select Learn in the dropdown. then moving the desired MIDI controller registers in the Learn dialog. however, MIDI input to Reaper's automation system is completely separate from MIDI data in tracks. automation MIDI comes directly from MIDI devices which have checked "Enable input for control messages" in the Reaper MIDI Devices preferences. "normal" track MIDI, including the output from the ReaControlMIDI plug-in, will not usually register in the Param > Learn dialog.
one solution is to use Parameter modulation with "Link from parameter" again, this time to modulate the effect parameter which requires high resolution control. in our example this is the Decay parameter of ValhallaRoom:
- in ValhallaRoom, move the Decay slider. then click Param at the top of the window and select "Parameter Modulation". this brings up a Parameter Modulation dialog for the Decay parameter.
- check "Enable parameter modulation" and "Link from parameter"
- click the dropdown button below Link from parameter, this time select "ReaControlMIDI", and in the submenu select the "Pitch Wheel" control. the default values for baseline (0: far left), Offset (0%) and Scale (+100%) are appropriate: the full range of the high resolution Pitch Wheel control will be mapped to the full range of the Decay parameter.
- it is also likely a good idea back in the ReaControlMIDI dialog to click the MIDI button at top, select "MIDI output", and "Disable" in the submenu. this prevents the scaled Pitch Wheel output from being added to the normal track MIDI.
now the ValhallaRoom Decay parameter is controlled by the Pitch Wheel value in ReaControlMIDI, which is in turn controlled by the scaled value of the ReaControlMIDI CC 1 (Mod Wheel) control. moving the CC 1 slider through its full range drives the Pitch Wheel control through the first 2% of its range, which changes the ValhallaRoom Decay parameter from 0.10 to 2.09 seconds in ~0.016 second steps as desired.
hope all this helps. i'm happy to answer questions.
enjoy! /dan
ps- while writing this tutorial, i was aware that ReaControlMIDI is only one possibility for preprocessing MIDI automation in Reaper. one of my favorite things about Reaper is Jesusonic, which makes amazing kinds of custom MIDI & audio processing possible. thinking about other ways to deal with low resolution MIDI controllers inspired me to code a JS plug-in to do MIDI CC mapping with a smooth glide option. this lets you use a standard MIDI controller to drive a high-resolution controller without the 128 step quantization. the trade off, as with glide/lag systems generally, is the lag: there is a delay from changing the parameter to when it takes full effect. also, a particular lag time may work in one situation but not another. still, this seems potentially useful. this plug-in can send high resolution input to ReaControlMIDI, which can then smoothly automate effects parameters using a variation on the technique described in this tutorial. it is very fresh code and needs some testing before i post a download link. but if anyone would like to check it out you can PM me.