ICST Ambi Motion Map — Benutzerhandbuch

Niveau: Einsteiger–Fortgeschrittene | Zielgruppe: Komponist:in, Sound Designer:in, Spatial-Audio-Techniker:in. | Version: v2.1

Das Motion Map GUI erzeugt algorithmische Raumbewegungen für bis zu 64 AmbiEncoder-Quellen und schreibt sie mit einem Klick als REAPER-Automation. Diese Anleitung führt Schritt für Schritt durch alle Funktionen — vom ersten Start bis zu fortgeschrittenen Techniken.

Download: ICST Ambi Motion Map Bundle (GUI-Script + Automation-Writer, beide erforderlich)


1. Voraussetzungen

Vor dem Start werden folgende Komponenten benötigt:

  • REAPER v6 oder neuer
  • ICST AmbiEncoder_64 auf dem Ziel-Track (siehe Installation)
  • Python 3 installiert — nur für die Live-OSC-Vorschau erforderlich
  • Beide Script-Dateien im selben Ordner: JS_AmbiEncoder64_Motion_Map_GUI.lua und JS_Write_AmbiEncoder64_Spat_Motion_Automation.lua

2. Installation

Schritt 1 — Bundle herunterladen

Das ICST Ambi Motion Map Bundle herunterladen und entpacken. Beide Lua-Dateien in einem gemeinsamen Ordner belassen (z.B. im REAPER-Scripts-Verzeichnis).

Schritt 2 — Script in REAPER laden

In REAPER: Actions → Load ReaScript…JS_AmbiEncoder64_Motion_Map_GUI.lua auswählen. Nur das GUI-Script muss geladen werden — es findet den Writer automatisch.

Warnung

Der Writer JS_Write_AmbiEncoder64_Spat_Motion_Automation.lua muss im selben Ordner wie das GUI-Script liegen. Die beiden Dateien nicht trennen.

Schritt 3 — Aktion zuweisen (optional)

Im Actions-Fenster JS_AmbiEncoder64_Motion_Map_GUI suchen und einen Tastaturkürzel oder Toolbar-Button zuweisen.

Eine detailliertere Anleitung inkl. Python-OSC-Setup für macOS und Windows bietet die Motion Map Einrichtungsseite.


3. Erster Start

  1. In REAPER genau einen Track auswählen, der das ICST AmbiEncoder_64 FX enthält.
  2. Eine Time Selection (Loop-Range) im REAPER-Timeline setzen — sie definiert, wo die Automation geschrieben wird.
  3. Das GUI-Script aus dem Actions-Menü (oder per Tastenkürzel) starten. Das Motion Map Fenster öffnet sich.
Warnung

„Bitte genau einen Track mit ICST AmbiEncoder_64 selektieren" — kein AmbiEncoder-Track ist ausgewählt. Den richtigen Track selektieren und das GUI neu starten.

„Bitte zuerst eine Loop/Time Selection setzen" — eine Loop-Range in der Timeline setzen, bevor auf Write geklickt wird.


4. Die Oberfläche auf einen Blick

ICST Ambi Motion Map GUI v2.1 — beschriftete Übersicht

ICST Ambi Motion Map in Aktion

Das Fenster gliedert sich in drei Bereiche:

Links — Source Grid: Zeilen für Sources S0–S63. Jede Zeile hat einen Aktivierungs-Toggle, ein Source-Label und 17 Bewegungsform-Zellen (Line bis Lis, inklusive Lat).

Rechts oben — Trajectory Preview: Animierte Leinwand, die den Pfad jeder aktiven Source zeigt. Die horizontale Achse ist X (links–rechts), die vertikale Y (unten–oben), beide in der aktuellen Scale-Einheit beschriftet. Die ausgewählte Source zeigt ein Koordinaten-Label (z.B. S0 X:-0.16 Y:-0.04).

Rechts unten — Settings: Steuerelemente für Scale, räumliche Parameter, Timing, Presets und Ausgabe-Optionen.


5. Sources aktivieren

Beim ersten Start sind alle 64 Sources aktiviert und haben automatisch zugewiesene Formen (Auto-Round-Robin). Es gibt drei Wege, eine Source ein- oder auszuschalten:

  • Klick auf das ✓-Kästchen in der „On"-Spalte — schaltet die Source ein oder aus.
  • Klick auf das Source-Label (z.B. S0, S1) — gleicher Effekt, aber größere Klickfläche.
  • Shift+Klick auf ein Source-Label — aktiviert alle Sources von der aktuell ausgewählten bis zur angeklickten (Bereichsauswahl).

In der unteren Leiste stehen Schnellauswahl-Buttons: All Src, None Src, S0-7, S8-15 für schnelle Mehrfachauswahl.

Der Zähler oben rechts im Settings-Bereich zeigt, wie viele Sources aktiv sind (z.B. 3 / 64 active).


6. Bewegungsformen zuweisen

Jede Zeile hat 17 Form-Buttons. Klick auf einen Button weist diese Bewegungsform der Source zu. Das Zuweisen einer Form aktiviert die Source automatisch.

Übersicht aller 17 Bewegungsformen und ihrer Trajektorien

LabelFormBewegungscharakter
LinelineLinearer Sweep durch das Feld
Arc+arc_upBogen nach oben mit sanftem Easing
Arc−arc_downBogen nach unten
Ss_curveS-förmiger Sweep — sinusoidale Y-Bewegung
StepstepVier diskrete Positionsschritte
ZigzigzagSchnelles X/Y-Zickzack
CirccircleVollkreis in der XY-Ebene
SpirspiralExpandierende Spirale von innen nach außen
Fourfourier_xyzKomplexe 3D-Bahn aus summierten Harmonischen
LatlatticeWiederholte XYZ-Offset-Struktur mit optionalem Gleiten und Begrenzung
Hrtheart_curveHerzförmige parametrische Kurve
CardcardioidKardioid — eintropfige Herzkurve
R8rose8Rosenkurve mit 8 Blättern
BernbernoulliLemniskate von Bernoulli — Acht-Variante
AstastroidAstroid — 4-spitzige Sternkurve
EpiepicycloidEpizykloide — komplexe Schleifenbahn
LislissajousLissajous-Figur — X und Y auf verschiedenen Frequenzen

Wenn mehrere Sources dieselbe Form verwenden, verteilt der Src offset-Schieberegler (siehe §7) sie entlang der Trajektorie — sonst bewegen sie sich alle überlagert am gleichen Punkt.

Lattice-Form

Lat ist eine kristallartige Wiederholungsbewegung. Statt eine einzelne kontinuierliche geometrische Kurve zu zeichnen, startet sie am aktuellen XYZ-Zentrum und addiert im Zeitverlauf immer wieder den XYZ-Spread-Vektor.

  • Startpunkt: X center, Y center, Z center
  • Wiederholter Offset: X spread, Y spread, Z spread
  • Rate / T: wie viele Lattice-Updates innerhalb einer Time Selection passieren
  • Slide: glättet den Übergang zwischen den Gitterpunkten, sodass die Bewegung gleitet statt hart zu springen
  • Bound X/Y/Z: optionale Wrap-Grenzen um das Zentrum pro Achse; 0 deaktiviert die Begrenzung

Diese Form eignet sich für kristalline Bewegung, stufenartige Tiefenbewegung, wiederholte Raumgitter und andere strukturierte Offsets, die sich vom Ursprung aus fortpflanzen.

Schnellzuweisung (PRESETS-Leiste unter dem Grid)

ButtonEffekt
AutoWeist alle 17 Formen im Round-Robin auf alle 64 Sources zu
RandomWeist jeder Source eine zufällige Form zu
All LineSetzt alle aktiven Sources auf Line
All CircleSetzt alle aktiven Sources auf Circle
All StepSetzt alle aktiven Sources auf Step
S0-7 ArcWeist Arc+ den Sources 0–7 zu
S8-15 CircWeist Circle den Sources 8–15 zu
Clear AllEntfernt alle Formzuweisungen und deaktiviert alle Sources

7. Räumliche Parameter

Koordinatensystem

Das GUI arbeitet im kartesischen XYZ-Raum (Einheitskugel −1..+1). Der Scale-Wert setzt einen Anzeige-Multiplikator, damit in Metern gedacht werden kann. Die REAPER-Automation wird immer in der nativen Einheitskugel geschrieben — Scale ändert nie das, was aufgezeichnet wird, nur wie Werte angezeigt werden und wie die OSC-Distanz gesendet wird.

  • X = links–rechts (−1 = links, 0 = Mitte, +1 = rechts)
  • Y = unten–oben (−1 = unter dem Hörer, 0 = Horizont, +1 = darüber)
  • Z = Distanz (0 = nah, 1 = fern)

Steuerelemente

Alle Schieberegler sind ziehbar. Shift während des Ziehens halten für Feineinstellung. Klick auf das Wertefeld rechts ermöglicht direkte Zahleneingabe.

ParameterStandardBeschreibung
Scale (m)1Raumgröße in Metern. Angezeigte Koordinaten sind in Scale-Einheiten (z.B. Scale 10 → Bereich −10..+10 m). REAPER-Automation und OSC arbeiten intern mit der Einheitskugel. Beliebigen Wert 1–1000 eingeben.
Steps/sec12Automationspunkte pro Sekunde. Höher = flüssiger, aber mehr Envelope-Daten.
Motion amount1.00Globaler Amplituden-Multiplikator. 1.0 = voller Bereich; 0.5 = halbe Amplitude; Werte über 1.0 dehnen über den definierten Spread hinaus und werden an der Kugelgrenze geclampt.
X center0.00Links–rechts-Zentrum des Bewegungsfeldes (−Scale..+Scale).
X spread2.00Gesamter links–rechts-Bereich (0..2×Scale). 2.0 bei Scale 1 = voller −1..+1-Sweep — der maximale Bereich, der in REAPER geschrieben werden kann.
Src offset0.00Zeitlicher Versatz zwischen Sources entlang der Trajektorie. 0 = alle Sources am gleichen Punkt; 1 = Sources gleichmäßig über den gesamten Pfad verteilt. Damit lassen sich Sources mit gleicher Bewegungsform trennen.
Y center0.00Vertikal-Zentrum (−Scale = unten, 0 = Horizont, +Scale = oben).
Y spread0.56Gesamter Vertikalbereich.
Z center0.75Distanz-Zentrum (0 = nah, Scale = fern).
Z spread0.35Distanz-Variationsbereich.

Lattice-Steuerung

Diese Parameter erscheinen unter den Haupt-XYZ-Einstellungen und wirken nur auf Sources mit der Form Lat:

ParameterStandardBeschreibung
Rate / T8.0Anzahl der Lattice-Updates über eine komplette Time Selection. 8 bedeutet, dass der Offset über die gewählte Dauer achtmal addiert wird.
Slide1.0Glättungsfaktor zwischen Lattice-Positionen. 0 erzeugt harte Sprünge; 1 interpoliert vollständig zwischen den Schritten; Zwischenwerte mischen beides.
Bound X / Y / Z0.00Optionale Wrap-Grenzen pro Achse um den Mittelpunkt. 0 deaktiviert die Begrenzung; positive Werte halten die wiederholte Transformation in einem endlichen Bereich.

Quantize-Steuerung

Quantisierung kann auf jede Bewegungsform angewendet werden, nicht nur auf Lattice. Sie verwandelt kontinuierliche Bewegung in zeitlich, räumlich oder doppelt gestufte Bewegung.

ParameterStandardBeschreibung
Time / T0.0Anzahl zeitlicher Rasterpunkte über eine Time Selection. 0 deaktiviert die Zeit-Quantisierung. Beispiel: 16 aktualisiert die Kurve an 16 gleichmäßig verteilten Zeitpunkten.
Q X / Q Y / Q Z0.00Räumliche Rundungsstufe pro Achse im normierten Raum. 0 deaktiviert die Rundung; 0.1 rundet die jeweilige Achse auf 0.1-Schritte.

Das ist nützlich, wenn sich eine beliebige Form wie ein räumlicher Sequencer verhalten soll: Die Trajektorie wird in diskreten Zeiten abgetastet und/oder auf diskrete Positionen gerundet.

Reset-Button

⟲ Reset (neben Write) stellt alle räumlichen und Timing-Parameter auf ihre Standardwerte zurück, während Formzuweisungen und Presets erhalten bleiben.

Scale und OSC-Distanz

Wenn die OSC-Vorschau aktiv ist, wird der gesendete Distanzwert als Einheitskugel-Radius × Scale berechnet. Bei Scale 10 sendet eine Source am Rand der Kugel ~10 m an den AmbiEncoder.


8. Zeitkurve — Bewegungsrhythmus gestalten

Der Bereich Time Curve steuert, wie die Animation zeitlich verläuft. Drei Modi:

Zeitkurven-Vergleich — Linear, Exp, Log

ModusVerhalten
LinearGleichmäßige Geschwindigkeit — konstantes Tempo (Standard).
ExpLangsamer Start, schnelles Ende — die Bewegung beschleunigt.
LogSchneller Start, langsames Ende — die Bewegung verlangsamt sich.

Der n-Schieberegler (Exponent) legt die Stärke der Kurve fest. Bei n = 1 erzeugen alle drei Modi identische Ergebnisse. Typische Werte: 2.0–3.0.

Anwendungsfälle: Exp eignet sich für Sources, die abrupt „ankommen" sollen; Log ergibt einen ausholenden Einstieg, der sich setzt. Kombiniert mit Palindrome entstehen symmetrische Beschleunigungsprofile.


9. Palindrom-Modus

Wenn Palindrome aktiviert ist, spielt die Bewegung innerhalb derselben Time Selection vorwärts und dann rückwärts: die Form läuft 0 → 1 → 0 statt 0 → 1.

Das bedeutet:

  • Die Source kehrt am Ende an ihre Ausgangsposition zurück.
  • Ideal für oszillierende Bewegungen ohne harten Sprung.
  • Funktioniert mit allen Bewegungsformen.
  • Kombiniert mit Exp oder Log entstehen asymmetrische Vorwärts-/Rückwärtsgeschwindigkeiten.

10. Ausgabe-Optionen

OptionBeschreibung
Clear existingLöscht vorhandene Envelope-Punkte in der Time Selection vor dem Schreiben. Deaktivieren, um Bewegung auf vorhandene Automation zu schichten.
Track LatchSetzt den Track nach dem Schreiben in den Latch-Automationsmodus, damit Live-Parameterbewegungen beim nächsten Playback aufgezeichnet werden.
Overwrite regionWenn eine Region mit demselben Namen bereits existiert, wird sie zur aktuellen Time Selection verschoben statt einer neuen erstellt.
Use Z motionAktiviert die Distanz-(Z)-Variation. Deaktivieren, um Sources auf einer fixen Distanz zu halten, während X und Y sich weiterhin bewegen.

Regionsname

Legt den Namen der REAPER-Render-Region fest. Standard: BFormat_TS. Regionen sinnvoll benennen — sie erscheinen im REAPER-Projekt und in Render-Exporten.


11. Preset-System

Die Preset-Leiste oben im Settings-Bereich ermöglicht das Speichern, Laden und Löschen vollständiger Parametersets.

Ein Preset speichert: alle Formzuweisungen, welche Sources aktiviert sind, Scale, alle XYZ-Parameter (Center und Spread für X, Y, Z), Src offset, Steps/sec, Motion amount, alle Lattice-Parameter, alle Quantize-Parameter, Zeitkurven-Modus und Exponent, Palindrome, Use Z motion sowie alle Ausgabe-Optionen.

Preset speichern

  1. Einen Namen im Preset-Textfeld eingeben (z.B. Kreis_Weit).
  2. Save klicken.

Preset laden

  • Auf einen Preset-Chip (die Buttons unter dem Textfeld) klicken — sofortiges Laden.
  • Oder Namen eintippen und Load klicken.

Preset löschen

Namen eintippen (oder Chip klicken) und Delete klicken.

Viele Presets navigieren

Mit den ◄ ►-Pfeilen durch mehr als 6 gespeicherte Presets blättern. Presets bleiben über REAPER-Sessions hinaus erhalten (via REAPER ExtState gespeichert).


12. Live-OSC-Vorschau

Der OSC-Preview-Bereich sendet Live-Positionsdaten an den AmbiEncoder, während die Animation im GUI läuft — so kann die Bewegung gehört werden, bevor sie als Automation festgeschrieben wird.

Einrichtung Schritt für Schritt

  1. In REAPER Preferences → Control/OSC/web die Option „Allow binding of REAPER action and FX parameters to OSC" aktivieren und den Port notieren (Standard: 9001).
  2. Im GUI Host auf 127.0.0.1 und Port entsprechend setzen.
  3. Connect klicken. Der Status-Punkt wird grün, wenn der Python-Helfer läuft.
  4. Live Preview (sends AED to AmbiEncoder) aktivieren.

Das GUI sendet nun konvertierte OSC-Positionsmeldungen mit ~30 Hz für jede aktivierte Source über die Adresse:

/icst/ambi/sourceindex/aed <int index> <float azimuth> <float elevation> <float distance>

Beispiel — Source 3, 45° Azimut, −15° Elevation, 2,5 m Distanz:

/icst/ambi/sourceindex/aed 3 45.0 -15.0 2.5

Die OSC-Distanz wird in physikalischen Metern gesendet (Einheitskugel-Radius × Scale).

Disconnect klicken, um das OSC-Senden zu beenden.

Warnung

Die Live-Vorschau erfordert Python 3 als python3 im System-PATH. Wenn der Status-Punkt rot bleibt, im Terminal python3 --version ausführen.


13. Automation schreiben

Wenn Sources eingerichtet und die Parameter in der Vorschau korrekt aussehen:

  1. Sicherstellen, dass der richtige REAPER-Track ausgewählt ist.
  2. Prüfen, dass die Time Selection den gewünschten Bereich abdeckt.
  3. ▶ Write Automation + Region klicken.

Das Script löscht vorhandene Envelope-Punkte (wenn Clear existing aktiv), schreibt XYZ-Automation für jede aktivierte Source direkt in der Einheitskugel (−1..+1) — unabhängig vom Scale-Anzeige-Wert — setzt den Track auf Latch-Modus (wenn Track Latch aktiv) und erstellt oder aktualisiert eine Render-Region.

Eine Statusmeldung am unteren Rand des GUIs bestätigt den Abschluss.


14. Trajektorien-Vorschau

Die Vorschauleinwand zeigt alle aktiven Sources gleichzeitig. Die horizontale Achse ist X (links–rechts), die vertikale Y (unten–oben), beide in der aktuellen Scale-Einheit beschriftet.

  • Jede Source erhält eine eigene Farbe. Die ausgewählte Source hat einen pulsierenden Halo und ein Koordinaten-Label (z.B. S0 X:-0.16 Y:-0.04 bei Scale 1, oder S0 X:-1.6 Y:-0.4 bei Scale 10).
  • Nicht ausgewählte Sources zeigen kleinere Punkte bei 80 % Deckkraft.
  • Alle Punkte animieren gleichzeitig — die vollständige räumliche Szene ist live sichtbar.
  • Pfade zeigen die vollständige Trajektorie jeder Source.

Auf ein Source-Label im Grid klicken, um es auszuwählen und seine Koordinaten in der Vorschau zu sehen.


15. Empfehlungen für die Praxis

  • Voller links–rechts-Sweep: X center = 0, X spread = 2×Scale (z.B. 2.00 bei Scale 1, 20.00 bei Scale 10). So wird der volle −1..+1-Bereich in die REAPER-Automation geschrieben.
  • Überlappende Sources trennen: Wenn zwei Sources dieselbe Form haben und ihre Pfade sich überlagern, Src offset auf 0.3–0.5 erhöhen, um sie entlang der Trajektorie zu verteilen.
  • Scale als Raumgröße: Scale auf den tatsächlichen Raumradius setzen (z.B. 8 für einen 8-m-Raum). Die OSC-Vorschau sendet dann Distanzen in Metern — die REAPER-Automation bleibt unverändert.
  • Mit Auto + 3–4 aktiven Sources starten, um die verfügbaren Formen kennenzulernen.
  • Steps/sec 6–8 für breite Sweeps; 20–30 für detaillierte Bewegungen.
  • Motion amount zunächst auf 1.0 — höhere Werte können an der Kugelgrenze geclampt werden.
  • Clear existing deaktiviert: Circle auf bestehende Linien-Automation schichten.
  • Palindrome + Log: schnell nach außen, sanft zurück — gut für reverbartige räumliche Ausklänge.
  • Vor dem Experimentieren immer ein Preset speichern.
  • Render-Regionen nach Szenen benennen: Intro_BFormat, Strophe_BFormat, Outro_BFormat.
  • Lattice als räumliches Arpeggio: Rate/T = 8–16, Slide = 0 → harte Sprünge zwischen Positionen wie ein räumlicher Sequencer.
  • Lattice mit Bounds: Bound X = 1.0, Bound Y = 0.5 → Sources bleiben in der Vorderhalbkugel, propagieren aber trotzdem weiter.
  • Quantize für rhythmische Bewegung: Time/T = 16 auf einer Circle-Form → 16 diskrete Positionen statt glattem Orbit — synchron zum Takt wenn Steps/sec zum Tempo passt.
  • Lat + Quantize kombinieren: Lattice definiert wohin die Sources springen; Quantize definiert wann — zusammen entstehen strukturierte, gitterbasierte Raumsequenzen.

16. Fehlerbehebung

Sources bewegen sich nach dem Schreiben nicht

Prüfen, ob mindestens eine Source ein ✓ in der „On"-Spalte und eine zugewiesene Form hat. Die Statusleiste zeigt, was geschrieben wurde.

Sources überlagern sich alle am gleichen Punkt

Src offset über 0 erhöhen (z.B. 0.5), damit Sources mit gleicher Bewegungsform zeitlich entlang des Pfades verteilt werden.

Automation entspricht nicht der Vorschau

Parameter-Änderungen nach der Vorschau, aber vor dem Schreiben beeinflussen die geschriebene Automation. Die Einstellungen vor dem Schreiben prüfen.

OSC-Vorschau — Punkt bleibt rot

  • Python 3 prüfen: python3 --version im Terminal.
  • Port muss mit den REAPER-OSC-Einstellungen übereinstimmen.
  • Disconnect → Connect neu klicken.

Writer-Script nicht gefunden

Beide Lua-Dateien müssen im selben Verzeichnis liegen. Bei Verschiebung erneut über Actions → Load ReaScript laden.

Steps/sec zu niedrig für kurze Regionen

Eine 0,1-Sekunden-Time-Selection bei 12 Steps/sec ergibt nur 1 Automationspunkt. Steps/sec erhöhen oder Time Selection verlängern.

Lattice-Sources gleiten statt zu springen

Slide auf 0 setzen. Bei Slide = 1 wird zwischen den Gitterpunkten interpoliert; bei Slide = 0 springt die Source sofort.

Lattice-Sources verlassen das Lautsprecherarray

Bound X / Y / Z aktivieren. Den gewünschten Normalisierungsradius eintragen (z.B. 0.8 hält Sources innerhalb von 80 % der Kugel). Bei Bound = 0 akkumuliert sich der Offset unbegrenzt.

Quantize zeigt keine sichtbare Wirkung

Time/T muss größer als 0 sein. Der Standardwert 0 deaktiviert die Zeit-Quantisierung. Auf die gewünschte Schrittanzahl setzen (z.B. 16) und sicherstellen, dass Steps/sec hoch genug ist, damit jedes Zeitfenster mindestens einen Automationspunkt enthält.


Siehe auch