# How auto-follow works

> How Reason tells the deck which device you selected, over four virtual MIDI ports and two control surfaces, without watching window titles.

Source: https://www.reasonremote.com/guide/how-auto-follow-works/  
Applies to: Reason Remote 1.4.0, Reason Remote Lite 1.3.0

Auto-follow is not the Stream Deck app watching Reason's window. A Reason Remote codec, installed into Reason, sends a short MIDI message when the device in front of you changes. The plugin hears that message and opens the matching page.

## The message

The codec sends identity on **MIDI channel 16**, which it does not use for knobs or buttons:

| Controller | What it carries |
|---|---|
| CC 119 | The instrument. Sent first. |
| CC 118 | A page or section within that instrument. Sent immediately after CC 119. |

Both go out of Reason on **loopMIDI Port 2** (the auto-follow surface's output). CC 119 is `0` when nothing the codec knows is selected. The deck then shows a [hub](https://www.reasonremote.com/guide/instrument-pages/#hubs).

These are the primary ids the codec in setup bundle v1.3.0 actually sends:

| CC 119 | Device |
|---|---|
| 0 | Nothing covered |
| 1 | SubTractor |
| 2 | Friktion |
| 3 | Thor |
| 4 | Fury (see [Not covered yet](https://www.reasonremote.com/guide/not-covered/#fury)) |
| 5 | Objekt |
| 6 | Dr. Octo Rex |
| 7 | NN-19 |
| 8 | ID8 |
| 9 | Parsec |
| 10 | Kong |
| 11 | Redrum |
| 12 | Europa |
| 13 | Malström |
| 14 | NN-XT |
| 15 | Mimic |
| 16 | Grain |
| 17 | Complex-1 |
| 18 | Polytone |
| 19 | Monotone |
| 20 | Radical Piano |
| 21 | Humana |
| 22 | Algoritm |
| 23 | Klang |
| 24 | Pangea |
| 25 | Umpf Club |
| 26 | Umpf Retro |
| 27 | Radical Keys |
| 28 | Combinator |

The public codec does not list what each CC 118 value means. The plugin uses that byte to choose a page. You don't set either number yourself.

## Asking again

If the plugin needs the current device again, it asks on channel 16, **CC 110**. That controller is not a Reason knob. The codec waits for Reason to settle, then sends CC 119 and CC 118 again and refreshes the values for whatever is live. A [Status](https://www.reasonremote.com/guide/actions/#reason-remote-status) key shows the last device the plugin acted on.

## The four ports and two surfaces

| Port | Direction | Surface |
|---|---|---|
| loopMIDI Port 1 | Deck to Reason | Auto-follow. Dials and keys. |
| loopMIDI Port 2 | Reason to deck | Auto-follow. Values coming back, and the identity message. |
| loopMIDI Port 3 | Deck to Reason | Master. Mixer faders. |
| loopMIDI Port 4 | Reason to deck | Master. Meters and fader positions. |

| Surface | Model | Job |
|---|---|---|
| Auto-follow | Automate Pros Stream Deck+ Remote | Instrument pages, Document, Piano. Follows your selection. Leave it unlocked. |
| Master | Automate Pros Stream Deck+ Master | The 16-channel mixer. [Lock it](https://www.reasonremote.com/guide/getting-started/#4-lock-the-master-surface) to the Master Section or it follows your selection too. |

Ports 1 and 2 are enough if you skip the mixer. Names must match. The plugin looks for `loopMIDI Port 2`.

## Why not the window title

Reason already knows which device is the Remote target. The codec sends identity when that device's scope turns on, and sends id 0 when it turns off. The plugin never reads the title bar, so another window in front of Reason does not steal the deck, and a device with no window of its own still works.

## What pauses it

The codec keeps reporting what you select. The plugin **holds the page** while you are on Document, Master or the Piano, so picking a track does not pull the deck away. The **Go** key still updates. When you leave, you land on the device you selected last.

The Piano is the case people notice: you can change track in Reason and keep playing. See [when auto-follow waits](https://www.reasonremote.com/guide/getting-around/#when-auto-follow-waits).

## What this needs

The codec that sends these messages shipped in [setup bundle v1.3.0](https://github.com/Automate-Pros/reason-remote-setup/releases/latest), for Reason Remote 1.4.0 and Lite 1.3.0. An older codec still switches the original instruments, but it will not follow a Combinator and the Patch dials do nothing. Re-run the installer and restart Reason. See [Updating](https://www.reasonremote.com/guide/updating/).

---

Not affiliated with, or endorsed by, Reason Studios AB or Elgato. Reason and all Reason device names are trademarks of their respective owners.
