<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Motion-Markers on ICST Ambisonics</title><link>https://ambisonics.ch/tags/motion-markers/</link><description>
Recent content
in Motion-Markers
on ICST Ambisonics</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><managingEditor>johannes.schuett@zhdk.ch (Johannes Schuett)</managingEditor><webMaster>johannes.schuett@zhdk.ch (Johannes Schuett)</webMaster><lastBuildDate>Thu, 12 Nov 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ambisonics.ch/tags/motion-markers/index.xml" rel="self" type="application/rss+xml"/><item><title>Motion Markers – steer movement with REAPER markers</title><link>https://ambisonics.ch/post/motion-markers-reaper/</link><guid>https://ambisonics.ch/post/motion-markers-reaper/</guid><pubDate>Thu, 12 Nov 2026 00:00:00 +0000</pubDate><author>johannes.schuett@zhdk.ch (Johannes Schuett)</author><description>&lt;p&gt;Level: Intermediate | &lt;strong&gt;Audience:&lt;/strong&gt; Composers, sound designers, spatial audio engineers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JS Ambi Motion Markers&lt;/strong&gt; lets you define movement directly on the REAPER timeline: two markers set start and end, the script calculates the path in between, sends it to the ICST AmbiEncoder via OSC and, if you want, writes it as automation. This fits movements that are &lt;strong&gt;musically timed&lt;/strong&gt;, tied to cues, bar positions or edits. For freely drawn figures across many sources, the &lt;a href="https://ambisonics.ch/icst-ambisonics-plugins/15_icst_ambi_motion_map/"&gt;Motion Map&lt;/a&gt; is the better tool.&lt;/p&gt;
&lt;p&gt;The script is part of the &lt;a href="https://ambisonics.ch/ecosystem/"&gt;ICST Ambi REAPER Bundle&lt;/a&gt; and is also available as a separate &lt;a href="https://ambisonics.ch/downloads/ICST_Ambi_Motion_Markers_Bundle.zip"&gt;Motion Markers package&lt;/a&gt;. The full reference is on the &lt;a href="https://ambisonics.ch/icst-ambisonics-plugins/14_icst_ambi_motion_markers/"&gt;ICST Ambi Motion Markers&lt;/a&gt; page.&lt;/p&gt;
&lt;h2 id="1-one-time-preparation"&gt;1. One-time preparation&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;strong&gt;Python 3 and python-osc&lt;/strong&gt; (Terminal): &lt;code&gt;python3 -m pip install python-osc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Enable the &lt;strong&gt;REAPER web interface&lt;/strong&gt;, only needed for &amp;ldquo;Record&amp;rdquo;: Preferences (Cmd+,) → Control/OSC/web → Add → &lt;em&gt;Web browser interface&lt;/em&gt; → port &lt;strong&gt;8080&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Create a track with the &lt;strong&gt;ICST AmbiEncoder&lt;/strong&gt;. Its OSC In must be set to port &lt;strong&gt;50001&lt;/strong&gt; (host &lt;code&gt;127.0.0.1&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="2-set-markers"&gt;2. Set markers&lt;/h2&gt;
&lt;p&gt;Name markers or project markers using this pattern:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ambi &amp;lt;index&amp;gt; a=&amp;lt;azimuth&amp;gt; e=&amp;lt;elevation&amp;gt; d=&amp;lt;distance&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Example: &lt;code&gt;ambi 1 a=-45 e=0 d=0.8&lt;/code&gt;. Alternatively import a CSV file with the toolbar icon &lt;em&gt;Import Ambi Markers From CSV&lt;/em&gt; (examples are in the &lt;code&gt;examples/&lt;/code&gt; folder).&lt;/p&gt;
&lt;h2 id="3-start-the-gui"&gt;3. Start the GUI&lt;/h2&gt;
&lt;p&gt;Click the toolbar icon &lt;em&gt;Motion Markers&lt;/em&gt; or run &lt;code&gt;JS_Ambi_Motion_Marker_GUI.lua&lt;/code&gt; from the Actions list. If an instance is already running, choose &lt;strong&gt;Terminate instances&lt;/strong&gt; in the dialog and start again.&lt;/p&gt;
&lt;h2 id="4-check-the-fields"&gt;4. Check the fields&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ambi host&lt;/td&gt;
&lt;td&gt;&lt;code&gt;127.0.0.1&lt;/code&gt; (no spaces!)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ambi port&lt;/td&gt;
&lt;td&gt;&lt;code&gt;50001&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Steps/sec&lt;/td&gt;
&lt;td&gt;&lt;code&gt;40&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;leave empty (auto-detect), otherwise the full path&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="5-choose-a-marker-pair"&gt;5. Choose a marker pair&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;In the &lt;strong&gt;Ambi Markers&lt;/strong&gt; list, left-click sets the start (S) and right-click sets the end (E). You can also step through pairs with &lt;strong&gt;&amp;lt; Pair / Pair &amp;gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Set Selection&lt;/strong&gt; sets the time selection between S and E. Duration, start and end are shown below.&lt;/li&gt;
&lt;li&gt;Then choose the curve, for example Smoothstep or Linear.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="6-send-or-record"&gt;6. Send or record&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Send pair:&lt;/strong&gt; sends the movement live via OSC to the AmbiEncoder; the cursor follows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Send series:&lt;/strong&gt; all pairs one after the other.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Record pair / Record series:&lt;/strong&gt; writes the movement as automation on the AmbiEncoder track (needs the web interface on port 8080).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stop transport:&lt;/strong&gt; aborts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A good routine: preview with &lt;em&gt;Send&lt;/em&gt; first and adjust the curve, then commit with &lt;em&gt;Record&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id="if-something-does-not-work"&gt;If something does not work&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Message / symptom&lt;/th&gt;
&lt;th&gt;Fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;No module named 'pythonosc'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;python3 -m pip install python-osc&lt;/code&gt;, then restart the script (Terminate instances)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;[Errno 8] nodename nor servname&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Remove spaces from the &lt;em&gt;Ambi host&lt;/em&gt; field&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Record does nothing&lt;/td&gt;
&lt;td&gt;Enable the web interface on port 8080&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No movement audible&lt;/td&gt;
&lt;td&gt;Check AmbiEncoder OSC In is 50001 and the track is not muted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Old messages remain&lt;/td&gt;
&lt;td&gt;End the script (Terminate instances) and restart&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Turn &lt;strong&gt;Console ON&lt;/strong&gt; to see messages in the ReaScript console window.&lt;/p&gt;
&lt;h2 id="further-reading"&gt;Further reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ambisonics.ch/icst-ambisonics-plugins/14_icst_ambi_motion_markers/"&gt;ICST Ambi Motion Markers&lt;/a&gt;: full reference&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ambisonics.ch/icst-ambisonics-plugins/15_icst_ambi_motion_map/"&gt;Motion Map&lt;/a&gt;: motion figures for many sources&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ambisonics.ch/post/osc-syntax-for-the-icst-ambiencoder-plugin/"&gt;OSC syntax for the AmbiEncoder&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>