View Single Post
Old 07-03-2016, 08:30 AM   #12
Human being with feelings
memyselfandus's Avatar
Join Date: Oct 2008
Posts: 1,598

Originally Posted by helgoboss View Post
Dear REAPER users,

lately I've been working on another little REAPER plug-in called ReaLearn. Its purpose is to improve REAPER's MIDI learn capabilities. It's free. You can download it here:

Right now it's still in beta stage. Any crash or bug report is appreciated.


As silent film accompanist working with keyboards and VST instruments mainly, I want to be able to quickly map MIDI controls to FX parameters. REAPER has this capability but I've always found it too limited for my use cases. Even with the new MIDI link feature added to the mix, I found there were many things left to be desired (I think MIDI link is tailored to other purposes).

Of course, in REAPER there's always a way: With a little bit of JS preprocessing and MidiToReaControlPath, most things turn out to be possible at the end. But it's fiddly to set up.

That's why I wrote ReaLearn. It's a REAPER-only VSTi plug-in (like Playtime). You load it exactly like other VSTi's - although I recommend to load it into the input FX chain instead of the normal one.

Here's a screenshot:

Some basic wording before I introduce the features:
  • Source = MIDI controller element (fader, encoder, note velocity, etc.)
  • Target = Controlled parameter (FX parameter, action etc.)
  • Mode = Absolute, relative or toggle mode (along with its settings)
  • Mapping = Source + Target + Mode

  • You can use REAPER's built-in MIDI routing capabilities to route MIDI events to ReaLearn. That's for example useful if you want different mappings depending on the song you are currently playing.
  • You can preprocess incoming MIDI events before they are routed to the target.
  • If you put ReaLearn into the normal FX chain (not the input FX chain), you can also route MIDI items on the track itself to ReaLearn. (I prefer not to do that and instead write automation in latch mode while recording already - track envelopes are much easier to edit and have a higher resolution than MIDI CC.)
  • You can group mappings and activate/deactivate them group-wise simply by instantiating multiple ReaLearn instances and enabling/disabling them as desired in the FX chain window.
  • You can save a bunch of commonly used mappings as preset and reuse it.
  • You can map to actions on a per-project basis (vs. only globally). So you don't need to pollute your global action mappings just for the needs of one project.
  • You can map to track volume
  • You can map to track send volume
  • You can "squeeze" the target values into a specific range
  • You can use buttons for increasing/decreasing values (use a switch-like source combined with a relative mode)
  • You can map multiple controllers to one parameter (e.g. necessary for the previous feature)
  • You can react to just a sub range of a control. For example, you can use one knob for multiple parameters depending on the knob position
  • In relative mode, you can let the parameter values rotate
  • You can reverse the direction
  • ReaLearn tries to guess the character of MIDI CCs when learning them (character = rotary encoder, switch or fader etc.)
  • ReaLearn automatically detects and chooses useful modes (if enabled)

Technically, some of those things were possible already before by using a mix of Jeffos' MidiToReaControlPath and (JS) MIDI plugins. But it's a workflow killer because you would need to map one MIDI message to another one before actually mapping it to a parameter. Plus, MidiToReaControlPath forwards to the global control path which can lead to unintended side effects with existing global action mappings (I had that quite often already ... it's messy).

Following features are not part of ReaLearn yet:
  • 14bit CCs (except pitch wheel)
  • Soft takeover

For the developers among you: I'm planning to release the source code of ReaLearn later this year.

Amazing job! Good to see another project from you excellent
memyselfandus is offline   Reply With Quote