Skip to content

Controlling an Attraction Ride with Data Tracks ​

This guide covers using Exaplay 3 as the media and automation backbone of an attraction ride — a dark ride, simulator, or themed experience where video, audio, lighting, and motion effects must all play back in precise synchronisation, triggered by a ride-control system.

Typical Attraction Architecture ​

Attraction Ride


Part 1 — Timecode Synchronisation ​

The ride PLC must be the master clock. Exaplay 3 runs as a slave, locking its playhead to the incoming timecode.

Option A — OSC Timecode ​

  1. Exaplay listens for OSC on UDP port 8000 by default — nothing to enable. The port is set under Menu → Settings → Communication → OSC Listen.
  2. Open Menu → Settings → Timecode and set Timecode Mode to OSC Timecode (slave).
  3. The show control system sends /timecode/hh/mm/ss/ff messages.

Option B — LTC (Linear Timecode) ​

  1. Connect the LTC audio signal to an input on the ASIO audio interface.
  2. Open Menu → Settings → Audio → Timecode Input.
  3. Select the channel, set the frame rate (24/25/30), confirm lock.

Safety note: For a live attraction, always use Slave mode (not Jam Sync). If the PLC pauses or stops timecode, Exaplay 3 must pause or stop too — it should never run ahead of the ride system.

Set Timecode Mode → Slave in Menu → Settings → Timecode.


Part 2 — Building the Show Timeline ​

With timecode sync active, build the full ride experience as a single composition with all elements locked to the ride's timecode:

Timecode    00:00:00:00 ──────────────────────── 00:05:00:00

Track 1 (Video)    [Pre-show intro] [Main ride sequence] [Ending]
Track 2 (Audio)    [Soundtrack + dialogue                        ]
Track 3 (Data)     [DMX dimmer keyframes                         ]
Track 4 (Data)     [Moving head position                         ]
Track 5 (Data)     [Fog trigger                                  ]
Track 6 (Data)     [Motion platform keyframes                    ]

Setting Frame Rate ​

Make sure the project frame rate matches the ride's timecode:

  1. Open Menu → Settings → Timecode → Framerate.
  2. Set to 30 fps (typical for rides with SMPTE timecode) or 25 fps (PAL systems).

Part 3 — DMX Lighting Control via Data Tracks ​

Each lighting channel becomes one Data Track targeting an ArtNet universe and channel.

Example: Ride Scene Lighting ​

Scene:  "Cave 1" entrance (0:30 → 0:45)
Goal:   Dimmer fades from 0 to 80%, strobe flashes, then fades out

Data Track "Cave1_Dimmer":   Universe 0, Channel 1
  keyframes:  0:30:00 → value 0
              0:35:00 → value 80
              0:40:00 → value 80
              0:45:00 → value 0

Data Track "Cave1_Strobe":   Universe 0, Channel 2
  step interpolation (immediate jumps):
  keyframes:  0:38:00 → value 255  (strobe on)
              0:38:15 → value 0    (off)
              0:38:22 → value 255
              0:38:30 → value 0

Step-by-step ​

  1. In the Sub-header, click the Data panel.
  2. Click + Data Track.
  3. Set:
    • Name: Cave1_Dimmer
    • Output Type: ArtNet
    • Universe: 0
    • Channel: 1
    • Destination IP: 192.168.1.50 (your ArtNet node / dimmer)
  4. Click on the Data Track ruler at 0:30:00 to add the first keyframe. Set value to 0.
  5. Add more keyframes at each timecode where the value changes.
  6. Repeat for each DMX channel.

See ArtNet & DMX Output for packet format and multi-universe details.


Part 4 — OSC Control for Practical Effects ​

For effects that don't use DMX — fog machines, pneumatics, water effects — use OSC output Data Tracks to trigger the effect controller.

Example: Fog Machine at 01:10:00 ​

Data Track "FogMachine":   Output Type: OSC
  OSC Address:  /fog/trigger
  Destination:  192.168.1.60:9000

  keyframes (step interpolation):
  01:10:00 → value 1   (trigger ON message)
  01:10:05 → value 0   (trigger OFF message)

The effect controller receives /fog/trigger 1 at exactly 01:10:00 in the timecode stream, and /fog/trigger 0 five seconds later.


Part 5 — UDP to Motion Platform ​

Some motion platforms accept a simple UDP packet containing a float value for each axis. Use a UDP Data Track per motion axis:

Data Track "MotionPitch":  Output Type: UDP
  Destination:  192.168.1.70:9500

  keyframes:
  00:30:00 → value 0.0
  00:31:00 → value 0.8   (nose up)
  00:32:00 → value -0.3  (nose down)
  00:33:00 → value 0.0   (level)

The UDP datagram contains the value as a 4-byte big-endian float. Check your motion platform's documentation for the expected packet format.


Part 6 — Emergency Stop and Safety Interlocks ​

In a live attraction, the ride PLC is responsible for safety. Exaplay 3 must respond correctly to emergency events:

PLC Stops Timecode → Exaplay Freezes ​

In Slave timecode mode, if the incoming timecode stops, Exaplay's playhead also stops. Media freezes on the last frame. When timecode resumes, playback continues from the correct point.

E-Stop Cue ​

Add a dedicated cue called E-STOP:

  • Action: Stop all playback immediately (hotkey: Escape)
  • Visual: Fires a Fade to black composition

Assign this cue as a hot key (Escape or a dedicated button on the operator's control hardware).

In a real installation, the PLC should also be able to trigger the E-STOP cue via OSC:

bash
# PLC sends:
POST http://192.168.1.5:8123/cue/trigger
{"name": "E-STOP"}

Over OSC, /cue accepts the cue's index or its name within one composition (addressed by ID or by name); the HTTP endpoint above is the one that searches all compositions for a cue name:

/exaplay/comp1/cue "E-STOP"
/exaplay/Main_Show/cue "E-STOP"

Part 7 — Operator Monitoring ​

During ride operation, the technical operator watches the Monitor tab and Diagnostics Panel:

What to watchWhere
Timecode lock statusTransport bar (green TC: Locked indicator)
Engine FPS (must stay at project frame rate ±1)Diagnostics Panel
Data Track transmission eventsMonitor → Event Log
ArtNet output confirmationMonitor → Event Log (ArtNet packets listed)
OSC output confirmationMonitor → Event Log (OSC messages listed)

If ArtNet packets appear in the Event Log but the fixture doesn't respond, the issue is in the DMX cabling or fixture configuration — not Exaplay.


Part 8 — Robustness for Daily Operation ​

Attraction rides typically run 10–14 hours per day, 7 days a week. Configure Exaplay for maximum resilience:

Auto-Heal ​

Enable Auto-Heal (Menu → Settings → Autoheal). The state is saved every 2 seconds; if the engine crashes between ride cycles, it restores the correct position and resumes.

Ride Cycle Scheduler ​

Use the Scheduler to reset the show to timecode 00:00:00:00 between ride cycles if the PLC does not send a hard reset:

  1. Add a Scheduler event: every ride cycle end time → Cue: Reset.
  2. The Reset cue jumps the timeline to the beginning and pauses, waiting for the next timecode sync (OSC/LTC) from the PLC.

Nightly Restart ​

Add a Scheduler event at 03:00 → System: Restart. This clears any accumulated memory fragmentation from a full day of operation.


Summary Checklist ​

  • [ ] Timecode mode set to Slave; TC lock verified in Transport bar
  • [ ] Project frame rate matches the ride's timecode standard
  • [ ] Video and audio tracks built and synced to timecode
  • [ ] Data Track created per DMX channel (ArtNet universe/channel configured)
  • [ ] OSC Data Tracks created for practical effects
  • [ ] UDP Data Tracks created for motion platform axes (if applicable)
  • [ ] E-STOP cue created and accessible via Escape key and remote control command
  • [ ] Auto-Heal enabled; Watchdog enabled
  • [ ] Nightly restart scheduled
  • [ ] Operator monitoring: TC lock, FPS, Event Log confirmed healthy

Exaplay 3 User Documentation