Free Remote Control Plug-In/App for Reaper

Straight from the lab, here is a free remote control plug-in/app for Reaper made with Plug’n Script!

A Remote Control Plug-In?

These days I tend to work more and more with multiple machines, either connected with Fader Hub & Connector, or simply using multiple DAWs.

Reaper provides a web app to control it remotely (mainly from a phone), but it is not convenient to use on a PC or a Mac while working with real-time audio apps (web browsers tend to cause audio dropouts and other performance issues). Also, you usually want to work directly from your main audio application and not open a web browser just to start/stop transport or recording.

So a remote control as a plug-in that is fully integrated into the app in use is much more convenient and efficient. Also, even locally, if you are using multiple monitors, you can keep a window with the remote control open to access basic transport features quickly, outside of Reaper’s main window.

Features

I mainly use this remote control to record takes from other machines than the main DAW, running Blue Cat Audio software such as Fader Hub (Drums, keyboards), PatchWork (vocals or virtual instruments such as electronic drums), or Axiom (guitars, bass guitars). So the remote control provides the following capabilities:

  • Transport position monitoring (measures/beats)
  • Transport navigation: go to start/end and quick jumps.
  • Transport control: play/pause/stop/record
  • undo/redo control

And that’s it. Many more commands are available from Reaper remotely, and it is pretty easy to add more in the script if you want to (see below).

How to Use the Free Reaper Remote?

1. Download the script

Download the free script here, unzip the archive and copy the files into [YOUR DOCUMENTS]/Blue Cat Audio/Blue Cat’s Plug’n Script/Scripts/.

2. Load Plug’n Script

Load the Plug’n Script plug-in in your host/DAW of choice, or launch the standalone application (please make sure to get the latest version for the script to work fine: PnS 3.61 or newer).

You do not own Plug’n Script? No problem, just download the free demo. It will work fine with this script without any limitation, as no audio/MIDI processing is involved.

3. Load the Reaper Remote Script

Open the edit pane and load the script from the list:

4. Connect to Reaper

Make sure to enable the Web browser interface in the Reaper preferences:

Then simply copy and paste the access URL into the Reaper Remote user interface, then hit enter. The remote control should connect to Reaper if it is running:

That’s it, you can now use the remote control! You can also save this as a preset to load it quickly next time.

Enjoy!

Troubleshooting

If the remote control does not connect to Reaper, you may want to check that Reaper is running and that on both the client (remote control) and server (Reaper) machines, the connections are not blocked by a firewall.

Enhancing the Remote Control

The code for the remote control is fully open source, you can get it here on github, or directly edit the reaper-remote.kuiml file on your machine. The dsp script is empty (just declaring the connection string so that it gets saved with presets).

Adding Actions

You can create remote actions easily using the provided template built around the LoadUrl action:

<!– Action Template for Reaper Commands –>
<TEMPLATE id=TPL_REAPER_ACTION>
    <STRING id=_$id$_url/>
    <STRING_MULTI_LINK from=$script_input_string0$;empty_stringseparator=/_/$reaper_action_id$to=_$id$_url/>
    <ACTION id=reaper.$id$type=LoadURLurl_string_id=_$id$_urlresponse_status_param_id=response_param/>
</TEMPLATE>

Instantiating a remote action is as simple as writing the following line, using the action identifier that can be found in Reaper’s action list (activate the option to show the identifier):

<TPL_REAPER_ACTION id=Stopreaper_action_id=1016/>

And a new button to trigger this action can be added in the layout at the bottom of the KUIML file with the following lines:

<CUS_MONITOR_GROUP_BOX font_size=30width=0flex=1layout_type=layer_stack>
    <TEXT value=STOP/>
    <INVISIBLE_ACTION_BUTTON width=100%height=100%action_id=reaper.Stopcursor=system::hand/>
</CUS_MONITOR_GROUP_BOX>

Displaying Transport/Session Data

Retrieving data from reaper relies on a different action template, to store the result in a string:

<!– Action Template for Reaper Data Command –>
<TEMPLATE id=TPL_REAPER_GETDATA_ACTION>
<STRING id=_$id$_url/>
<STRING_MULTI_LINK from=$script_input_string0$;empty_stringseparator=/_/$reaper_data_id$to=_$id$_url/>
<ACTION id=reaper.$id$type=LoadURLurl_string_id=_$id$_urlresponse_status_param_id=response_paramresponse_body_string_id=$result_string_id$/>
</TEMPLATE>

For transport info, the action is the following, getting triggered by a timer every 50 ms (only if the request is not still running to avoid overflow in case of connection problems):

<TPL_REAPER_GETDATA_ACTION id=GetTransportStatusreaper_data_id=TRANSPORTresult_string_id=transport_data/>
<!– Refresh timer to load transport data –>
<TIMER id=refresh_timerrefresh_time_ms=50enabled=true/>
<ACTION_TRIGGER event_id=refresh_timer.elapsedcondition_formula=reaper.GetTransportStatus.running==0action_id=reaper.GetTransportStatus/>

The current implementation uses a simple script triggered by any change on the response body string to parse the response (simple tab-separated text), and store the transport status as well as the transport position string.

It can be modified to show other information. You can also use other queries than TRANSPORT to get more information from the current session.

Enhancing the User Interface

The user interface is pretty basic (on purpose), but you can of course use fancier graphics with a different layout using the KUIML language.

Feel free to share your enhancements with the community!

>discuss this topic in the forum

Leave a Reply

Your email address will not be published. Required fields are marked *