Remote is a protocol for handling communication between control surfaces (MIDI keyboards, remote control devices, etc.) and software applications (e.g. Reason). It handles everything from delivering MIDI note data from a keyboard to the application to using knobs, faders and buttons on a control surface for tweaking synth parameters in the application, controlling transport, etc. Remote also supports two-way communication, in order to make use of motor faders, dynamic displays and LED indicators.
The Remote protocol was introduced with Reason 3.0, which provides Remote support for a large number of control surfaces. Support for new control surfaces can be added at any time, in many cases by the control surface manufacturers or even by users.
A Control Surface is any kind of hardware controller (for example a musical
keyboard) that can send or receive MIDI messages. (In fact, although Remote is based on MIDI messages, the carrier may be USB or FireWire.) Control surfaces have buttons, faders, a keyboard, etc, that send unique MIDI messages when changed. A button, for example, usually sends a three byte message where one byte contains the button ID and another indicates if its being pressed or released.
The host is the software that is being controlled by the control surface. As of this writing the only Remote host existing is Propellerhead Reason, but the Remote technology is defined to be host independent in order to ensure future compatibility.
One of the tasks of a Codec is to translate the MIDI messages from the control surface into standardized Remote messages, which are named and categorized into welldefined types. The button MIDI message in the example above would typically be translated into a Remote message of type Button, with a name "Button 7" and the value
1 if pressed, 0 if released.
The Remote message is then sent into the Remote Map, where it's translated into a host message. Where the codec is generic to the control surface and can theoretically be used with any host, the Remote Map is specific to both the control surface and the host. In other words, mapping files that you write for your codec and for Reason can only be used with Reason and that codec. Furthermore, when Reason gets updated, it is more than likely that you will have to update your Remote Map file, but the codec may remain the same.
The host message created by the Remote Map addresses the Remote message to a specific device and parameter in Reason, for example "Subtractor 1: Filter 2 On". The value is automatically scaled to fit the target parameter.
Control Surface Items and Remotable Items
A parameter in the host that can be controlled by Remote is called a Remotable Item.
One remotable item is controlled by exactly one Control Surface Item (a knob, fader or other hardware control on the control surface).