Reaticulate | a free articulation management system for REAPER

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.

First Run

Basics

Let's first get some terminology and basic operational stuff out of the way:

Track Setup

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:

Factory Banks

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.

User Banks

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.

Usage

GUI

Hopefully the GUI will be fairly intuitive. Here are some tips that may not be obvious:

floating

Actions

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.

Action Description
Activate articulation by CC on default channel When you bind a CC to this action, sending the CC with value <n> will activate the articulation defined by program <n>. This is the action you probably want to use from a control surface. The articulation is activated on the default channel (described above).
Activate articulation by CC on channel <n> Like the previous action, except explicitly activates the articulation on channel <n> instead of the default channel. There are 16 separate actions for the 16 different MIDI channels.
Set default MIDI Channel by CC Sending value <n> on the CC bound to this action will set the default channel to <n>.
Set default MIDI Channel to <n> Sets the default channel to <n>. There are 16 separate actions for the 16 different MIDI channels.
Activate articulation by CC in group <n> on default channel (MIDI CC relative or mousewheel) Scrolls through the articulations in group <n>. It can be convenient to bind this action to an encoder as a quick way to flip through articulations from a control surface.
Activate articulation by slot number by CC on default channel 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.
Activate previous/next articulation in group <n> on default channel These actions can be assigned to previous/next keys (or control surface buttons) to discretely scroll through the articulations on group <n>
Select articulation by CC (MIDI CC relative or mousewheel) 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).
Select next/previous articulation These actions select (but not activate) the next or previous articulation in the bank list, relative to the currently selected articulation
Activate selected articulation on default channel 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.
Insert last activated articulation into MIDI item on default channel Will force-insert the program change event for the last activated articulation into the MIDI item at the editor cursor.
Focus articulation filter 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.)
Disable/Enable/Toggle feedback to MIDI feedback device If feedback is configured (see below), these actions control whether or not it's active. If not configured, these actions do nothing.
Sync current state on selected track to MIDI feedback device Replays all last seen CCs and current articulations on all channels to the MIDI feedback device (if configured).
Toggle track selection follow focused FX window If enabled, when an FX window is floated, Reaticulate will automatically select its track. (Requires the js_ReaScriptAPI extension.)
Toggle track selection follows MIDI editor target item 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.

Feedback to Control Surface

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.

Configuration

To configure this:

MIDI Bus

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

Where:

Control Surface Feedback Events

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.

User-defined Track Select Event

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 f7 and f0 are arbitrary).

Articulations

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.

CC values

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.

Default Channel

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.