Fortschritt
0 %
Signalfluss
DAW
REAPER
Marker / Playback
OSC UDP
:50010
Max/MSP
ACT_Circle_Mover
p Scene_Mover
OSC UDP
:50001–08
Plugin (VST3/AU)
AmbiEncoder
ICST · 8 Instanzen
Audio
Ambisonics
Lautsprecher
Speaker Array
Decoder
0
Einmaliges Setup SETUP
Einmalig pro Rechner / Session. Danach nicht mehr nötig.
0.1
ACT_Circle_Mover_Main.app starten
Im Bundle-Ordner die App doppelklicken.
⚠ macOS zeigt Netzwerk-Dialog → «Erlauben» klicken (notwendig für UDP-Empfang).
✓ Warten bis in der Max Console erscheint:
`udpreceiver binding to port 50010`
0.2
REAPER öffnen
REAPER starten und das Workshop-Projekt laden (oder neues Projekt anlegen).
Das REAPER-Projekt muss ICST AmbiEncoder VST3/AU-Instanzen auf den Audio-Tracks enthalten.
0.3
ICST_Trigger_Scenes.lua laden
In REAPER:

- Actions → Show Action List (oder `?`-Taste)
- New action → Load ReaScript…
- Datei wählen: `ICST_Trigger_Scenes.lua`
- Skript erscheint jetzt in der Action List – noch nicht ausführen

0.4
ICST_Store_Current_Marker_Scene.lua laden
Gleicher Weg wie 0.3 – aber diese Datei:

- New action → Load ReaScript…
- Datei wählen: `ICST_Store_Current_Marker_Scene.lua`

💡 Beide Scripts einem Toolbar-Button oder Keyboard-Shortcut zuweisen (Rechtsklick in Action List → Add button to toolbar)
0.5
OSC-Verbindung testen
Kurz-Test ohne Playback:

- In Max-Fenster die p Scene_Mover öffnen (Doppelklick auf Subpatcher)
- Einen der Scene-Buttons (1–6) manuell klicken
- ambimonitor-Anzeige reagiert → Verbindung OK

Reagiert nichts: → Troubleshooting Abschnitt weiter unten
A
Workflow A – Scene speichern VOR DEM KONZERT
Ambisonics-Positionen definieren und pro Marker als Scene ablegen.
A.1
Marker an gewünschten Positionen setzen (REAPER)
Jeden Abschnitt / jede Klangszene als REAPER-Marker markieren:

- Cursor an die gewünschte Zeitposition setzen
- `Shift+M` → Marker hinzufügen (Name vergeben, z. B. Scene_1)
- Gleiche Schritte für alle weiteren Szenen wiederholen

Der Marker-Name wird als Scene-Bezeichnung in Max verwendet.
A.2
Ambisonics-Position für Scene_1 einstellen (Max)
In ACT_Circle_Mover_Main → p Scene_Mover:

- Den ambimonitor öffnen (Doppelklick)
- Klangquelle(n) auf die gewünschte Position ziehen
- Position wird sofort an AmbiEncoder weitergegeben (OSC → Port 50001–50008)

A.3
Cursor auf Marker setzen (REAPER)
REAPER Edit-Cursor exakt auf den entsprechenden Marker setzen:

- Marker im Arrange-Bereich anklicken, oder
- `Ctrl+G` / `Cmd+G` → «Go to marker number»

A.4
Scene speichern – Store-Script ausführen
ICST_Store_Current_Marker_Scene-Action in REAPER aufrufen:

- Action List → Script suchen → Run, oder
- Toolbar-Button / Shortcut drücken (falls in 0.4 zugewiesen)

Das Script sendet /act/scene/store «Scene_1» → Max speichert die aktuelle ambimonitor-Position als «Scene_1».
A.5
Speicherung in Max Console bestätigen
In der Max Console (Extras → Console) erscheint:
`scene stored: Scene_1`
Erscheint keine Meldung → OSC-Verbindung prüfen (Troubleshooting unten)
A.6
Für alle weiteren Scenes wiederholen (A.2 – A.5)
Schritte A.2–A.5 für jede Szene (Scene_2, Scene_3, …) wiederholen.
🔁 Schleife: A.2 → A.3 → A.4 → A.5 → nächste Scene
A.7
Scenes in snapshots.xml speichern (Max)
Alle gespeicherten Scenes persistent sichern:

- In ACT_Circle_Mover: write-Button klicken
- Speicherpfad wählen / bestätigen → `snapshots.xml`

💡 Beim nächsten App-Start mit read wieder laden.
B
Workflow B – Playback / Performance KONZERT
Automatischer Scene-Wechsel synchron zum REAPER-Playback.
B.1
Trigger-Script starten (Dauerschleife)
ICST_Trigger_Scenes-Action in REAPER aufrufen:

- Action List → Script suchen → Run
- Das Script läuft als kontinuierlicher Loop – es überwacht permanent Marker und Playback-Status

Erkennbar: In der REAPER-Titelleiste oder Console erscheint Aktivitäts-Meldung. Das Script läuft bis es manuell gestoppt wird.
B.2
Cursor an den Startpunkt setzen
Cursor auf den ersten Marker oder gewünschten Startpunkt in REAPER setzen.
B.3
Playback starten (Spacebar / Transport Play)
REAPER-Playback starten.
Das Trigger-Script erkennt den Play-Status und sendet bei jedem Marker automatisch:
/act/scene/target «Scene_Name» – Ziel-Scene
/act/scene/interval i f i f i – von/bis Position + Dauer in ms
💡 Max interpoliert die ambimonitor-Position sanft mit `live.line` – kein harter Sprung.
B.4
Scene-Übergänge in Max beobachten (optional)
In ACT_Circle_Mover → p Scene_Mover:

- Das umenu zeigt die aktuelle Ziel-Scene
- Der ambimonitor bewegt sich zur Ziel-Position
- Scene-Buttons (1–6) leuchten bei aktivem Scene auf

B.5
Playback stoppen / Trigger-Script beenden
Nach dem Konzert:

- REAPER Stop (`Space`)
- Trigger-Script stoppen: Action List → Script → Run (togglet Dauerschleife aus)

C
Workflow C – Schnelltest / Marker-Klick SOUNDCHECK
Einzelne Scenes manuell anspringen ohne laufendes Playback.
C.1
Trigger-Script läuft (aus Workflow B)
Das Trigger-Script muss aktiv sein (wie in B.1 gestartet). Playback kann gestoppt sein.
C.2
Cursor auf gewünschten Marker klicken
Im Arrange-Bereich direkt auf einen Marker-Pfeil klicken.
Das Trigger-Script erkennt den Klick und sendet sofort:
/act/scene/target «Scene_Name»
C.3
Reaktion in Max prüfen

- ambimonitor bewegt sich zur gespeicherten Position der angeklickten Scene
- AmbiEncoder empfängt neue XYZ-Koordinaten (OSC an Ports 50001–50008)

💡 Ideal für Soundcheck: jede Scene kurz antriggern und Lautsprecher-Ortung prüfen.
OSC Quick Reference

OSC-Adresse | Argumente | Bedeutung | Von
--- | --- | --- | ---
/act/scene/target | `s` scene_name | Ziel-Scene setzen (sofort oder interpoliert) | REAPER → Max
/act/scene/interval | `i f i f i` m1_idx · m1_pos · m2_idx · m2_pos · diff_ms | Interpolations-Intervall: von Marker m1 zu m2, Dauer diff_ms | REAPER → Max
/act/scene/store | `s` scene_name | Aktuelle ambimonitor-Position als scene_name speichern | REAPER → Max
/act/scene/setduration | `i` ms | Überblend-Dauer manuell setzen | REAPER → Max
/act/scene/start | `i f s` marker_idx · playpos · scene_name | Playback-Start mit Scene-Angabe | REAPER → Max
(XYZ-Koordinaten) | ambimonitor-intern | Positionen an AmbiEncoder-Instanzen senden | Max → AmbiEncoder Port 50001–50008

Troubleshooting
🔇 Keine Reaktion in Max – ambimonitor bewegt sich nicht ▶
Mögliche Ursache
OSC-Pakete kommen nicht an Port 50010
Lösung
1. Max Console prüfen: `udpreceiver binding to port 50010` vorhanden?
2. Wenn nicht: App neu starten, Netzwerk-Dialog → «Erlauben»
3. Terminal: `lsof -i UDP:50010` → ACT_Circle_Mover muss erscheinen
🧩 ACT_Circle_Mover_Main.app öffnet nicht / startet nicht ▶
Mögliche Ursache
macOS Gatekeeper blockiert unbekannte App
Lösung
Rechtsklick auf .app → «Öffnen» (nicht Doppelklick).
Einmalig bestätigen. Danach normaler Start.
🐍 REAPER Script-Fehler: «python3 not found» oder helper.py schlägt fehl ▶
Mögliche Ursache
Python 3 nicht unter Standard-Pfaden (`/opt/homebrew/bin/python3`, `/usr/local/bin/python3`, `/usr/bin/python3`) gefunden
Lösung
Terminal: `bash test_python3.sh` ausführen
Falls fehlgeschlagen: `bash install_python3.sh`
🔊 AmbiEncoder Plugin reagiert nicht auf Positions-Änderungen ▶
Mögliche Ursache
OSC-Empfang im AmbiEncoder nicht aktiviert, oder falscher Port
Lösung
Im AmbiEncoder-Plugin: OSC Receive aktivieren, Port auf 50001–50008 (je Instanz) setzen.
Prüfen: `lsof -i UDP:50001`
📁 «scene stored» erscheint nicht in Max Console nach Store-Script ▶
Mögliche Ursache
Cursor sitzt nicht auf einem benannten Marker; oder Script-Datei nicht korrekt geladen
Lösung
1. REAPER Marker List öffnen (`Shift+Ctrl+M`) → Marker mit Namen vorhanden?
2. Cursor exakt auf Marker-Position? → `Ctrl/Cmd+G` nutzen
3. Script neu laden (Schritt 0.4 wiederholen)
⏱ Scene-Übergang zu abrupt / kein Fade ▶
Mögliche Ursache
Marker liegen zu dicht zusammen (diff_ms ≈ 0), oder `live.line` bekommt keinen Interval-Parameter
Lösung
Mindestabstand zwischen Markern: ≥ 500 ms empfohlen.
Alternativ manuell via OSC: /act/scene/setduration 2000 (= 2 Sekunden Fade)