-
-
Notifications
You must be signed in to change notification settings - Fork 20
ReaLearn Basics
After installing ReaLearn, you can fire it up just like any other VST instrument in REAPER: By adding it to an FX chain.
-
Right click in the track header area and choose "Insert virtual instrument on new track…"
-
Choose "VSTi: ReaLearn (Helgoboss)"
After that you should see ReaLearn’s main panel (unlike this screenshot, it wouldn’t contain any mappings yet):
On the very top you see the header panel for changing settings or doing things that affect this complete instance of ReaLearn. Below that there’s the mapping rows panel which displays all main mappings in this instance of ReaLearn. There can be very many of them. On the very bottom you see some information about the version of ReaLearn that you are running.
It can be useful to route all keyboard input to ReaLearn, so you can enter spaces in the "Search" field:
-
Right click ReaLearn FX in the FX chain.
-
Enable "Send all keyboard input to plug-in".
Let’s see how to add and use our first MIDI mapping:
-
Press the "Add one" button.
-
A new mapping called "1" should appear in the mapping rows panel.
-
For now, it doesn’t have any effect. The default target is a [realearn-dummy-target] target which basically does nothing.
-
-
Press the "Learn source" button of that new mapping.
-
Its label will change to "Stop".
-
-
Touch some control element on your MIDI controller (knob, encoder, fader, button, key, pitch bend, mod wheel, …). For this example it’s best to use something continuous, not a button or key.
-
If your MIDI is set up correctly, the button label should jump back to "Learn source" and the touched control element should appear in the source label. See below if this doesn’t happen.
-
-
Press the "Learn target" button.
-
Its label will change to "Stop".
-
-
Touch the volume fader of your newly created REAPER track.
-
The button label should jump back to "Learn target" and "Track: Set volume" should appear in the target label.
-
-
Now you should be able to control the touched target with your control element.
-
Make sure you look in the VSTi section (ReaLearn is an instrument).
-
If REAPER crashes when scanning for plug-ins and the crash message shows something like
reaper_host64
orreaper_host32
, you either have a 32/64-bit version mismatch or you have Preferences → Plug-ins → Compatibility → VST bridging/firewalling set to "In separate plug-in process" or "In dedicated process per plug-in". Please see the installation instructions on the project website for hints how to fix this.
If the label remains at "Stop" at step 3, that means ReaLearn doesn’t see the incoming MIDI messages. You need to have a look at your MIDI setup.
-
Make sure the MIDI device is not installed as REAPER control surface (in Preferences → Control/OSC/web).
-
Make sure Enable input from this device is checked for your controller MIDI input device in the REAPER preferences.
NoteEnable input for control messages is totally irrelevant for ReaLearn. This is only used for REAPER’s built-in MIDI learn, which uses the so-called control MIDI path.
With ReaLearn, you use the same MIDI path for controlling and playing, which is one reason why it is so flexible. It provides local and global MIDI message filtering, so you still don’t need to worry about messages that are intended for control but suddenly cause your synthesizer to play MIDI notes.
-
Make sure your audio hardware is not stuck (playback in REAPER should work).
-
Make sure the track is armed for recording and has the appropriate MIDI device input.
NoteThis is necessary only if Input is set to <FX input>, which is the default. If you capture MIDI from a specific device, the track doesn’t have to be armed. -
Some controllers, especially DAW controllers, are able to work with several protocols (MCU, HUI, MIDI, …).
-
For this simple test, it’s probably the best to make your controller enter a specific MIDI operation mode.
-
Although MCU and HUI is also just MIDI under the hood, these operation modes are more specialized and therefore need a bit of special attention. ReaLearn conveniently handles these modes when using the Mackie Control controller preset.
-
In any case, please consult the [tested-controllers] section, maybe you will find some information about your controller.
-
When you read this the first time, you might get the impression that this is a lot of work for setting up one simple control mapping. It’s not. Learning mappings is a matter of a few secs after you got the hang of it. ReaLearn also provides the "Learn many" button and a bunch of REAPER actions for one-click learning straight from a REAPER toolbar or triggered by a button on your controller. More about that later.
At this point: Congratulations! You have successfully made your first baby steps with ReaLearn.
If you think that what we saw until now is not more than what REAPER’s built-in MIDI learn already offers, I can’t blame you.
First, don’t worry, there’s more to come, this was just the beginning.
Second, there is a difference.
For some folks, this is an insignificant difference, for others it’s a game changer, it depends on the usage scenario.
The key to understand this difference is to understand the MIDI routing: In above example, Input was set to <FX input>
.
That means we used normal track MIDI messages to control a parameter in REAPER - let’s call it track MIDI path.
This is different from REAPER’s built-in MIDI learn, which uses the totally separate control MIDI path.
Using the track MIDI path means it’s completely up to you to decide what MIDI messages flow into ReaLearn. You decide that by using REAPER’s powerful routing capabilities. For example, you can simply "disable" the mapping by disarming your track, a feature that is very desirable if you use REAPER as live instrument. Or you can preprocess incoming MIDI (although that should rarely be necessary given ReaLearn’s mapping customization possibilities).
Instead of using <FX input>
, you can also pick the MIDI device of your choice directly, in which case ReaLearn will ignore track MIDI messages and capture MIDI messages directly from the already open MIDI device.
Another thing worth to point out which is different from built-in MIDI learn is that we didn’t use the action "Track: Set volume for track 01". Benefit: ReaLearn will let you control the volume of the track even if you move that track to another position. The track’s position is irrelevant!
In ReaLearn, every mapping has 2 directions: control (controller to REAPER) and feedback (REAPER to controller). So far we have talked about the control direction only: When you move a knob on your controller, something will happen in REAPER. But if your controller supports it, the other direction is possible, too!
Imagine you would use a MIDI-controllable motorized fader as control element to change the track volume. ReaLearn is capable of making that fader move whenever your track volume in REAPER changes - no matter if that change happens through automation or through dragging the fader with your mouse. Motorized faders are quite fancy. Another form of feedback visualisation are rotary encoders with LEDs that indicate the current parameter value.
How to set this up? Often it’s just a matter of choosing the correct feedback device:
-
Make sure Enable output to this device and Do not send reset messages is checked for your controller MIDI output device in the REAPER preferences.
NoteThe option Do not send reset messages isn’t available in some older REAPER versions. If you don’t use any external hardware synths, you can untick the global options Reset on: Play and Reset on: Stop instead!
-
In ReaLearn’s header panel, select your controller as MIDI output.
That should be it!
If it doesn’t work and you have ruled out MIDI connection issues, here are some possible causes:
-
Your controller is not capable of feedback via MIDI messages.
-
Some controllers do support feedback, but not via MIDI.
-
If they support feedback via OSC, you are lucky because ReaLearn supports that, too. This is discussed in another section.
-
If it’s another protocol, you are out of luck. Reverse engineering proprietary protocols is out of ReaLearn’s scope.
-
Recommendation: Maybe you are able to find some bridge driver for your controller that is capable of translating generic MIDI messages to the proprietary protocol. Then it could work.
-
Examples: Akai Advance keyboards, Native Instruments Kontrol keyboards
-
-
Your controller doesn’t support feedback via generic MIDI messages but via MIDI SysEx.
-
In this case, MIDI feedback is probably still achievable because since version 2.6.0 ReaLearn also supports feedback via MIDI system-exclusive messages. However, it’s not going to be straightforward. Unless you find an existing controller preset for your controller, you’ll have to read the MIDI specification of your controller (hopefully there is one) … or you need to experiment a lot.
-
Examples: Arturia MiniLab mkII (but we have a controller preset for this one!)
-
-
Your controller has multiple modes and currently is in the wrong one.
-
Some controllers, especially DAW controllers, are able to work with several protocols.
-
Recommendation: Consult your controller’s manual and take the necessary steps to put it into something like a "generic MIDI" mode.
-
Example: Presonus Faderport
-
-
Your controller expects feedback via messages that are different from the control MIDI messages.
-
Usually, controllers with feedback support are kind of symmetric. Here’s an example what I mean by that: Let’s assume your motorized fader emits CC 18 MIDI messages when you move it. That same motorized fader starts to move when it receives CC 18 MIDI messages (messages of exactly the same type). That’s what I call symmetric. E.g. it’s not symmetric if it emits CC 18 but reacts when receiving CC 19.
-
ReaLearn assumes that your controller is symmetric. If it’s not, you will observe non-working or mixed-up feedback.
-
Recommendation: Consult your controller’s manual and try to find out which MIDI messages need to be sent to the controller to deliver feedback to the control element in question. Then, split your mapping into two, making the first one a control-only and the second one a feedback-only mapping. Adjust the source of the feedback-only mapping accordingly. In the next section you’ll learn how to do that.
-
Example: Presonus Faderport
-
-
Are there multiple feedback-enabled mappings active that share the same source? Make sure that this is not the case!
-
Button LEDs on some controllers need feedback mode "Send feedback after control" to work correctly.
-
One user identified plug-ins on his monitoring FX chain as the issue
Tip
|
Have a look into the section Tested controllers. Maybe your controller is listed there along with some tips. |
When you press the Edit button of a mapping row, a so-called mapping panel appears, which lets you look at the corresponding mapping in detail and modify it:
This panel has 4 sections:
-
Mapping: Allows to change the name and other general settings related to this mapping.
-
Source: Allows to edit the source of the mapping. In most cases, a source represents a particular control element on your controller (e.g. a fader).
-
Target: Allows to edit the target of the mapping and optionally some target-related activation conditions. A target essentially is the parameter in REAPER that should be controlled.
-
Glue: Allows to change in detail how your source and target will be glued together. This defines how incoming control values from the source should be applied to the target (and vice versa, if feedback is used). This is where it gets interesting. Whereas REAPER’s built-in MIDI learn provides just some basic modes like Absolute or Toggle, ReaLearn allows you to customize many more aspects of a mapping.
By design, source, glue and target are independent concepts in ReaLearn. They can be combined freely - although there are some combinations that don’t make too much sense.
Changes in the mapping panel are applied immediately. Pressing the OK button just closes the panel.
Tip: It is possible to have up to 4 mapping panels open at the same time.
In order to get the most out of your controller in combination with ReaLearn, you should consider the general hints given in the section Tested controllers.
Similarly to control surfaces, ReaLearn is primarily meant to be used for controlling targets "live". If you want to persist the resulting target value changes, you can do so by writing automation. Just as with any other automation, it will be included when you render your project.
It is possible to feed ReaLearn with track MIDI items instead of live MIDI data. This results in a kind of pseudo automation. Some users call this MIDI CC based automation. This feature can be quite interesting and appealing to MIDI fans.
Caution
|
Support for rendering pseudo automation is limited! Let’s say you finally want to render your project. If you don’t watch out, your pseudo automation will simply be ignored! Pseudo automation will only be rendered if you follow some very distinct rules:
I remember that Online Render used to respect all kinds of pseudo automation. However, this must have stopped working at some point (or it works only under particular circumstances or with certain settings, not sure). Anyway, now you need to follow the same rules as with offline rendering to make pseudo automation work. |
Learn how to contribute to this Wiki!