reaticulate

a free articulation management system for REAPER

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.

A bank 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

In the alpha preview of Reaticulate, there is no GUI for creating custom banks. This means some manual text editing is necessary to configure banks. Click here to learn how to create your own custom banks for Reaticulate.

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

Overview

Reaticulate is able to send articulation changes and CC values to a control surface or other MIDI controller:

If multiple tracks are selected, then 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.

Articulations

Whenever an articulation is triggered on the selected track, first a Bank Select message is sent to the control surface, and then the articulation. By default, the articulation is a Program Change message, but this can be translated to a CC of your choice (see below).

The Bank Select is a 14-bit event indicating the MSB and LSB of the Reaticulate bank the selected articulation belongs to. (In practice, this means two events: CC0 with the MSB value, and CC32 with the LSB value.)

The MIDI channel of 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.

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: