Skip to main content

Module engine

Module engine 

Source
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§

ClientConnection
One client’s end of the engine. Closes when dropped.
ClientState
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.
EngineConnector
Opens connections to the engine. Cheap to clone; the engine runs as long as a connector or a connection exists.
EngineState
The engine’s state as user interfaces see it, published every tick.
Outbox
What was sent last, per client.
RenderStats
How the render thread keeps up, over the last second.
ServerSettings
Settings of the machine running the engine, which any interface may change.
ServerStatus
What the machine running the engine is doing besides the show.
SoundSnapshot
The sound triggers’ levels and the input spectrum, as interfaces need them to draw effects that follow the music.

Enums§

ClientInput
What a user interface sends the engine besides actions.
EngineEvent
Something the user interfaces have to react to once.
StorageCommand
Work on the asset repository an interface asks for.

Type Aliases§

ClientId
Identifies a connection while it is open.