Expand description
The engine: the one place that owns the running show. It holds the authoritative project, applies actions from the user interfaces, OSC, MIDI and Art-Net, evaluates the inputs, keeps time with Ableton Link, drives the render thread and the audio analysis, and publishes its state to every connected user interface.
It runs on its own thread at a fixed tick rate, independent of any window.
The desktop app talks to it through an EngineHandle; a remote client will
talk to it the same way over the network.
User interfaces change the show only through actions (see
ui::project_edits for edits made directly in widgets). Their actions are
numbered, and the engine reports the newest one it applied in
EngineState::applied_sequence, so an interface knows when the engine’s
project includes its own edits.
Structs§
- Client
Connection - One client’s end of the engine. Closes when dropped.
- Client
State - The engine’s state as one client sees it: the shared state, and how far the engine has got with this client’s actions.
- Devices
- The devices the engine’s machine has, for choosing among them.
- Engine
Connector - Opens connections to the engine. Cheap to clone; the engine runs as long as a connector or a connection exists.
- Engine
State - The engine’s state as user interfaces see it, published every tick.
- Outbox
- What was sent last, per client.
- Render
Stats - How the render thread keeps up, over the last second.
- Server
Settings - Settings of the machine running the engine, which any interface may change.
- Server
Status - What the machine running the engine is doing besides the show.
- Sound
Snapshot - The sound triggers’ levels and the input spectrum, as interfaces need them to draw effects that follow the music.
Enums§
- Client
Input - What a user interface sends the engine besides actions.
- Engine
Event - Something the user interfaces have to react to once.
- Storage
Command - Work on the asset repository an interface asks for.
Type Aliases§
- Client
Id - Identifies a connection while it is open.