This is a Rust application that allows the creation and playback of timelines through a web UI.
You can create an arbitrary number of timelines, name them, set their duration, and specify whether or not they should loop.
A timeline can contain one or more tracks, which can currently be of the curve, event or color type.
Curve tracks define a single cubic bezier curve, and emit a single value on update.
Event tracks contain one or more triggers at distinct times, each containing an optional piece of data (currently limited to strings). Events are emitted
To trigger timeline playback, the agent listens to start and stop messages on topics that can be defined via configuration.
The main agent application is written in Rust. To build it, run the following from the app/ directory:
cargo build
and/or run it with
cargo run
The full timeline functionality is headless, i.e. it does not require the web UI in order to run.
Provide any of the following arguments to configure the agent application:
--tether.agent_idOptional Tether agent id--tether.hostOptional Tether broker hostname or IP address. Defaults to127.0.0.1.--tether.userOptional Tether user--tether.passwordOptional Tether password--http.portNetwork port to expose the server on. Defaults to8888.--fpsFrame rate to use for output. Defaults to60.- Set verbosity level with
-v: warn,-vv: info,-vvv: debug, ,-vvvvor more: trace
The web UI is built to and served up by the Rust application. To build it, run the following from the ui/ directory:
npm run build
This compiles the assets and places them in app/public/. When running the agent application, the UI will be accesible via a web browser, on port 8888 unless otherwise specified in the launch arguments.