User Guide: 64 Sources with open-stage-control and ICST AmbiEncoder_64
Level: Intermediate | Audience: Composer, technician, student, live-electronics user.

open-stage-control session for controlling 64 sources with the ICST AmbiEncoder_64.
This user guide describes the current XYZ session for open-stage-control in combination with the ICST AmbiEncoder_64.
Download:
The session controls the sources in Cartesian XYZ and is built for working directly with the plugin radar:
- top = front
- right = right
+Xpoints right+Ypoints forward
The left fader controls Z (height, -1..1) instead of Distance. Pad and plugin radar therefore correspond directly in this session.
The session sends ICST-compatible OSC to the AmbiEncoder_64:
/icst/ambi/sourceindex/xyz [Index] [X] [Y] [Z]/icst/ambi/sourceindex/gain [Index] [Gain]
The source index is 1-based. The gain fader displays dB; a linear factor is sent (see 7. Troubleshooting).
1. Prepare REAPER and the AmbiEncoder_64
- Open your REAPER project or create a new one.
- Create a track for the encoder and insert
ICST AmbiEncoder_64as an FX. - Make sure the track has enough channels (
Track Routing>Track channels); otherwise the 64-source encoder will not work fully. - Open the plugin window of the
AmbiEncoder_64. - Open the OSC section in the plugin and enable
OSC In(Receive). - Note the receive port set there. The usual default in the ICST tutorials is
50001, but what counts is the port actually set in the plugin. - Keep the plugin window open for the first test so you can see whether the sources move.
2. Start open-stage-control
Start
open-stage-control. The launcher opens first.In the launcher, enter the OSC target under
send:- REAPER on the same computer:
127.0.0.1:50001 - REAPER on another computer:
IP-of-the-REAPER-computer:50001 - If necessary: use the port from part 1
- REAPER on the same computer:
Under
Port, enter the HTTP port for the user interface, for example8080.Click
Start. The empty interface opens in the browser or app window.Load the session via
Menu>Session>Openand choose64-source-points-tablet-xyz.session.json. Alternatively, drag and drop the file into the window.

Example launcher settings in open-stage-control: OSC target set to the AmbiEncoder port, and the HTTP port for the user interface.
3. Connect the tablet
Connect the tablet to the same network as the computer running
open-stage-control.Find out the IP address of that computer.
- macOS:
System Settings>Network - or in Terminal:
ipconfig getifaddr en0
- macOS:
On the tablet, open a browser and go to
http://IP-of-the-computer:8080. If you set a different HTTP port, use that one.The interface appears in the browser. For full screen on the iPad: add the page via
Share>Add to Home Screenand start it from there.Important: the tablet only talks to
open-stage-control. The OSC to REAPER is sent by the computer runningopen-stage-control.
4. First function test
In the interface, go to the
Select + Focustab.Press the blue button
Alle 64 senden (Sync)(send all 64) at the bottom right.This button sends all positions and gains to the plugin once. Afterwards, interface and plugin show the same state. This is the first step after every start of
open-stage-control.Tap
S1in the grid on the left. The button turns orange, andSource 1appears on the right.Move the point in the large
XYpad.Look at the plugin window of the
AmbiEncoder_64: source 1 must move along.Then move the
ZandGain dBfaders and check the response in the plugin.If that works, try a bank tab such as
S1-8and move several points there at the same time.
Note on the display: in this session the pad is a top view in XYZ. It therefore corresponds directly to the plugin radar.
If nothing moves in step 4, see 7. Troubleshooting.
5. Operation overview
Tab Select + Focus
- Select a source: tap the desired button in the
8x8grid on the left. The active source is marked orange. - Set the position: move the point in the large pad on the right. The session works in Cartesian
X/Y. - Set
Z (-1..1)andGain (dB) (-60..+12)with the two horizontal faders. Both faders have a number field for precise input. - Rename: tap the text field at the top right, type the name and confirm. The name appears on the grid button immediately. Without a custom name the button shows
S1toS64.
Bank tabs S1-8 to S57-64
- Open the tab of the desired group.
- In the large multi-XY pad you can move single or several points at the same time (
multitouch). - Each point sends its
XYZmessage immediately. - The sources are evenly arranged in the pad, so you can see at once which point belongs to which source.
6. Saving
- Positions and names change during the session. To keep the state, choose
Menu>Session>SaveorSave Asinopen-stage-control, ideally under a new name. - The settings of the
AmbiEncoder_64, including the last received positions, are saved as usual with the REAPER project (Cmd+S).
7. Troubleshooting
Nothing arrives in the plugin
- Is
OSC Inreally enabled in theAmbiEncoder_64? - Do host and port in the
sendsettings ofopen-stage-controlexactly match the plugin? - Is a firewall blocking incoming UDP packets on the REAPER computer?
- Is a second instance of
open-stage-controlwithout a send target running by mistake?
The tablet cannot find the interface
- Are tablet and computer on the same network?
- Do IP address and HTTP port in the browser address match?
- Use
http://, nothttps://. - Allow incoming connections for
open-stage-controlin the firewall.
The wrong source moves
- The source index is 1-based:
S1in the interface corresponds to source 1 in the plugin. - Check that the desired source is actually marked orange in the grid.
Movements stutter over the network
- Check the Wi-Fi quality.
- Connect the computer by cable if needed.
- Take other devices with heavy traffic off the Wi-Fi.
Plugin and interface show different positions
open-stage-controlsends nothing by itself at startup. PressAlle 64 senden (Sync)once after every start.
Plugin reports Unknown OSC message received
- An outdated copy of the session is running, for example from
~/Downloads. - Use only the current session file from this page.
- Restart
open-stage-controlafter changing the file. Running sessions do not reload changes automatically.
Plugin reports Malformed OSC message
- The source index must arrive as an integer, not as a float.
- The session types it correctly in its scripts as
{type: 'i'}.
Gain fader moves, but the plugin jumps to -88 dB
- This plugin build expects gain as a linear factor, not in dB.
- The session therefore converts when sending: the fader shows dB (
-60..+12), and10^(dB/20)is sent. 0 dBcorresponds to a factor of1.0.- Confirmed on
18.08.2026.
Notes for future session changes in open-stage-control v1.29
- Script code belongs in the widget property
onValue, not inscript. - The shared-state object is called
globals, notglobal. send()without a target argument sends to the launcher default.send(false, ...)is invalid.- Every widget, including panels and tabs, needs
"bypass": true; otherwise it sends its raw value. - The console at the bottom of the
open-stage-controlwindow shows script errors. Check there first.
8. This session
64-source-points-tablet-xyz.session.json works in stage coordinates (XYZ). The pad is a top view like the plugin radar, and the two correspond directly. This page describes only this current XYZ version.
