ICST Ambi Motion Markers
Level: Intermediate | Audience: Composer, sound designer, spatial-audio technician, student.
Use this page when you want to define AmbiEncoder movements with REAPER markers, preview them over OSC, and record them as automation.
What it does
ICST Ambi Motion Markers is a REAPER workflow built around timeline markers.
It lets you:
- define source positions as marker cues
- preview one pair or a whole series over OSC
- record the same movement path as AmbiEncoder automation
- import cue sets from CSV instead of typing marker text manually
Core files:
JS_Ambi_Motion_Marker_GUI.luaJS_Import_Ambi_Markers_From_CSV.luareaper_marker_ambi_motion.py
Installation
1. Add the scripts to REAPER
Import these ReaScripts:
Scripts/JS_Ambi_Motion_Marker_GUI.luaScripts/JS_Import_Ambi_Markers_From_CSV.lua
2. Install Python dependency
The GUI launches reaper_marker_ambi_motion.py as a background worker to send OSC commands.
Place the file anywhere on disk — a common choice is alongside the Lua scripts:
Scripts/reaper_marker_ambi_motion.py
Install the required package:
pip install python-osc
Set the Python executable path in the GUI (Python field):
/Users/yourname/.pyenv/versions/3.11.8/bin/python3
Use which python3 in a terminal to find the correct path on your system. The GUI passes reaper_marker_ambi_motion.py and OSC parameters to this executable at runtime — no manual launch needed.
3. Configure the ICST plugin
Insert AmbiEncoder_64 on the target track and enable OSC input.
Make sure the plugin OSC port matches the GUI setting.
Typical default:
50001
Marker workflow
Markers can be entered manually in this form:
ambi 1 a=-45 e=0 d=0.8
ambi 2 a=20 e=0 d=0.7
Multiple sources at one cue time can be combined in one marker:
ambi 1 a=-45 e=0 d=0.8 | ambi 2 a=20 e=0 d=0.7
In the marker list:
- click left side of a row to set S
- click right side of a row to set E
- click Set Selection to create the REAPER time range
CSV-first workflow
For larger projects, CSV import is the recommended method.
Supported format: azimuth/elevation/distance
time,index,source,azimuth,elevation,distance
1.2,1,1,-45,0,0.8
1.2,1,2,20,0,0.7
9.2,2,1,45,20,0.5
9.2,2,2,90,0,0.2
Supported format: x/y/z
time,index,source,x,y,z
1.2,1,1,-0.566,0.566,0.000
1.2,1,2,0.239,0.658,0.000
Import in the GUI
Use Load CSV in the marker panel:
- click Load CSV
- choose a CSV file
- matching markers in the project are replaced automatically
Example CSV files:
ambi_markers_aed_example.csvambi_markers_xyz_example.csv
Main controls
Send pair
Sends the currently selected S to E pair over OSC. Use this to test one movement segment.
Send series
Sends a whole marker series from the current S marker to the last marker in the list. Use this when you want to preview a complete phrase or scene.
Record pair
Records the selected pair as AmbiEncoder automation.
Record series
Uses the same range logic as Send series, but writes automation while the movement is played.
Step-by-step test workflow
Test 1: single pair preview
- load the GUI
- set S and E
- click Set Selection
- click Send pair
- verify the source moves in the ICST plugin
Expected result: preview cursor moves, OSC motion is visible, no automation is written.
Test 2: series preview
- set S on the first marker you want
- click Send series
- verify playback continues segment by segment until the last marker
Expected result: all segments after S are played, the end of the series is the last marker.
Test 3: pair recording
- select the AmbiEncoder track
- choose S and E
- click Record pair
- verify automation is written
Expected result: transport runs, plugin moves, automation lanes receive data.
Test 4: series recording
- select the AmbiEncoder track
- set the desired S
- click Record series
- verify the same series path as Send series is recorded
Expected result: transport runs through the complete series, movement matches Send series, automation is written for each segment.
Good practices
- use CSV as the source of truth for larger cue sets
- preview with Send pair before recording
- keep marker indices stable across revisions
- use one source per CSV row
- keep start and end cues musically meaningful
- enable console output when debugging, disable it during performance work
Troubleshooting
“No markers or regions with ‘ambi…’ found”
The marker list is empty. Add markers manually or run Load CSV to import them. Make sure each marker name starts with ambi (case-sensitive).
No motion in the plugin
Check:
- OSC input enabled in the plugin
- correct OSC port
- marker positions differ between start and end
Send series looks like Send pair
Usually this means there is only one segment left between the current S marker and the last marker.
CSV import fails
Check:
- header names
- decimal points
- one source per row
- valid times and indices
Downloads
Use the prepared bundle for the workflow:
Download ICST Ambi Motion Markers Bundle
Recommended bundle contents:
- GUI script
- CSV import script
- Python OSC worker
- example CSV files
- handbook