Before we get into it, Seventh Sam
has provided an excellent blog post on how to use Reaticulate, offering a more
accessible introduction to Reaticulate's usage than this page, which is more
comprehensive but also more technical.
So we recommend you read Seventh Sam's blog post first, and then come back here to fill in the missing pieces.
?key by default) and run
Let's first get some terminology and basic operational stuff out of the way:
In order for Reaticulate to work on a track, you must first load the Reaticulate FX plugin at the top of the FX chain. The job of the Reaticulate FX is to translate program change MIDI messages (as emitted by Reaticulate's GUI) to the appropriate MIDI needed by the virtual instrument on that track to switch articulations.
During live recordings, when articulations are activated Reaticulate will inject the Program Change event into Reaper's Virtual MIDI Keyboard queue, so in order to ensure articulation changes get recorded, be sure to configure the track to input from All MIDI Inputs while recording (right click on the Record Arm button on the track and select
Input: MIDI | All MIDI Inputs | All Channels (or any specific channel of your choice) from the menu.
A bank (i.e. articulation map) is a collection of articulations that generally describes a multi-articulation patch of a virtual instrument. A track can contain a number of banks provided there are no conflicting articulations (program numbers) between banks assigned to the same MIDI source channel (see below) on a given track.
Once added, each bank has a few UI elements:
Banks for a number of existing VI libraries come bundled with Reaticulate. These generally work out of the box with the patch, or require minimal tweaks to the patch which will be indicated in a message when you add a factory bank. (For example, banks for Spitfire libraries usually require setting the patch to Locked to UACC.)
You can use these to get started, but of course you're almost certainly going to want to roll your own.
Currently there is no GUI for creating custom banks. This will be coming in 2022, but for now unfortunately it means some manual text editing will be necessary to configure banks. Click here to learn how to create your own custom banks for Reaticulate.
You can also download user-contributed banks for various libraries.
Hopefully the GUI will be fairly intuitive. Here are some tips that may not be obvious:
Reaticulate installs a number of Reaper actions that you can bind to keyboard shortcuts or MIDI controller events. Most of the actions are designed to make Reaticulate usable from a control surface or tablet (e.g. running TouchOSC or Lemur).
All actions are prefixed with
Reaticulate so you can easily find them by searching for
Reaticulate in Reaper's action list.
||When you bind a CC to this action, sending the CC with value
||Like the previous action, except explicitly activates the articulation on channel
||Sets the default channel to
||Scrolls through the articulations in group
||Whereas earlier actions activate an articulation based on the program number (denoted as the CC value), this action activates an articulation by its position in the list of articulations. So binding a CC to this action and sending value 2 will activate the second articulation in the list.|
||These actions can be assigned to previous/next keys (or control surface buttons) to discretely scroll through the articulations on group
||Unlike the activate actions, this action merely selects the articulation in the bank list but doesn't activate it yet. You'll need to activate the selected articulation after (see below).|
||These actions select (but not activate) the next or previous articulation in the bank list, relative to the currently selected articulation|
||After having selected an articulation visually via one of the Select actions, this action will activate the selected articulation. Pro tip: triggering this action twice in rapid succession will force-insert the program change event into the current MIDI item at the edit cursor.|
||Will force-insert the program change event for the last activated articulation into the MIDI item at the editor cursor.|
||Focus Reaticulate's articulation filter text input in the bank list to rapidly find a desired articulation by searching. (This works best when the js_ReaScript API extension is installed.)|
||If feedback is configured (see below), these actions control whether or not it's active. If not configured, these actions do nothing.|
||Replays all last seen CCs and current articulations on all channels to the MIDI feedback device (if configured).|
||If enabled, when an FX window is floated, Reaticulate will automatically select its track. (Requires the js_ReaScriptAPI extension.)|
||If enabled, when you select a MIDI item in the MIDI editor for writes, Reaticulate will automatically select that track so the bank list updates to reflect that track's articulations. This is most conveniently paired with the "Options: MIDI track list/media item lane selection is linked to editability" so that merely selecting an item in the MIDI editor will both enable it for edits and automatically select the track.|
(Prerelease) Note: if any of the "Activate" actions are triggered twice within 500ms of each other, the articulation will be inserted into the MIDI item at the edit cursor (if one exists). This allows you to use the same actions from, say, a control surface to both temporarily enable articulations and insert them into current items.
Reaticulate is able to send articulation changes and CC values to a control surface or other MIDI controller. Once enabled:
If multiple tracks are selected, then only the first selected track will be synced to the control surface.
This is implemented by means of a hidden track called "MIDI Feedback (Reaticulate)" and which the Reaticulate JSFX installed on the track communicates with via MIDI bus 16. Consequently, if you enable this feature, you won't be able to assign banks to tracks on bus 16 (or use banks with output events that explicitly address bus 16).
Feedback is only sent to the control surface when the selected track is both armed for recording and monitoring for input on a MIDI device.
To configure this:
Device must be enabled for outputtext will open Reaper's Settings.)
You almost certainly want to leave this set to 1, in which case the CC events sent to the control surface are standard MIDI.
More esoteric custom configurations may benefit from using a different MIDI bus for the outbound CCs. When a bus other than 1 is used, Reaper will output SysEx MIDI events like this:
F0 FF 52 50 62 0F B0 0B 30 F7
0Fis the MIDI bus offset from 0 (so
0Fis MIDI bus 16)
B0 0B 30is the standard CC event (in this example, channel 1, CC 11, value 48)
This section describes the type of events that are transmitted to the control surface. While some messages are user-configurable, others are fixed and defined by Reaticulate.
Previous versions of Reaticulate used to send a Bank Select MIDI message to the control surface device when a track was selected. However, as of Reaticulate 0.5, because bank MSB/LSB is now dynamically generated by Reaticulate, the previous behavior was no longer appropriate, because the MSB/LSB for a given bank stopped being predictable.
Reaticulate now provides you the means of customizing your own control surface feedback MIDI message(s) whenever a track selected. In the track configuration screen within Reaticulate, the "Feedback on Track Select" section defines this. It's disabled by default, but you can choose from the following message types:
For notes, it's recommended you avoid using notes 0-9. Reaticulate uses note-off events on these low notes to encode certain information such as articulation group and current default channel. This is described further in the sections below.
In the case of Raw MIDI, you can choose your own arbitrary string of MIDI bytes expressed
as hexidecimal codes. For example, a custom System Exclusive (SysEx) MIDI message could
be set as
f7 42 43 44 f0 (where the bytes between
f0 are arbitrary).
Whenever an articulation is triggered on the selected track, the articulation's group is first sent to the control surface (see below), and then the articulation. By default, the articulation is a Program Change message, but this can be translated to a CC of your choice from Reaticulate's settings screen (see above).
The group number is communicated using a custom event: a MIDI note off (0x80) for note 0, where the note-off velocity represents the group number offset from 0 (i.e. value 0 means group 1).
The MIDI channel of both these events is the source channel of the selected articulation.
MIDI controllers that send CCs can sometimes also receive those same CCs and use those values to set the controller's current state. There are many devices with this capability, but some examples are:
Many control surfaces with motorized faders (such as the one depicted right) can be configured such that the faders transmit MIDI CC values and can receive CCs back to move the faders to the new values.
Even if your control surfaces lacks a custom mode to work directly with CCs (and supports only e.g. Mackie Control Protocol [MCP] or HUI), if you're particularly enterprising, it's possible to shim a translation layer between Reaper and the controller. For example, with a control surface supporting MCP, software such as Bome MIDI Translator Pro could be used to translate between CCs on the DAW side and pitch bend messages (used by MCP) on the control surface side.
When the default channel is changed through the interface, or a new track is selected, the track's default channel is fed back to the control surface using a custom event.
Similar with articulation groups above, the custom event is defined as a MIDI note-off (0x80) for note 1. The event's channel indicates the new default Reaticulate channel. The note-off velocity is not significant.