User:Mint Shock/Flow Sequencer

From Resonite Wiki
Revision as of 23:11, 14 October 2025 by Mint Shock (talk | contribs) (→‎2. Timeline)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
This is an work in progress system that is not jet released. Feel free to contact Mint_Shock if you would like to offer help. Beit planning, programming, ui, documentation or anything else.

Flow Sequencer [FS] is a Work in progress keyframe based sequencer for dynamically changing a Value or Reference. It is currently being developed by Mint Shock. It utilizes Spatial variables to read and write data do discrete Keyframes.

Main Features

  1. Easy to use ui inspired by traditional linear animation tools like Blenders Timeline.
  2. Leverage Spatial variables to read values and references in a performant way.
    1. This also means that FS supports all types that are supported by Spatial variables.
  3. Support for System Standard to expand its capabilities.
    1. More Value Types and Interpolations.
    2. Special Keyframes types that can trigger custom behavior when read.
    3. Custom displays for a keyframes values.
  4. Easily grab a reference to a field or reference from an inspector and drop it onto the tracks output.
  5. Easily drive the readhead position with any float value even ones being driven by other tracks.
  6. Tool for editing the values that are contained in a keyframe.

Structure

FS is split into discrete levels. Each level has a specific responsability. The heaviest elements will be contained on the upper levels to minimize code and asset duplication.

1. Systems

This is the System Standard Systems/Root slot. All Systems will be installed into here.

1.1 Standard Systems

FS comes with some preinstalled Systems. Some of these should not be removed by the enduser and will have the System/Core variable set to true.

1.1.1 FS Manager

Contains all common assets, settings, and ProtoFlux.

1.1.2 FS Templates

Contains all templates that are used by FS

Category Specifity Note Included Templates
Track
  • Universal
Used to generate a track. /
Keyframe
  • Type
  • Interpolation
Used to spawn a keyframe of a specific type and interpolation on a track of matching type.
  • ColorX [constant]
  • ColorX [linear]
  • Float [constant]
  • Float [linear]
  • Float3 [constant]
  • Float3 [linear]
Keyframe Visual
  • Type
  • Interpolation
  • User selection
Used to spawn a visualization for a given Keyframe while respecting the interpolation mode.
  • ColorX [constant]
  • ColorX [linear]
  • Float [constant]
  • Float [linear]
  • Float3 [constant]
  • Float3 [linear]
Readhead
  • Type
Used to generate a Readhead that can read the specified type on a track.
  • ColorX
  • Float
  • Float3
Value preview
  • Type
Used for both the left side Ui (the small readout) next to the track name labled "output" and the readhead preview. The value can be grabbed from the left side ui and then be sourced or value copied elswhere.
  • ColorX
  • Float
  • Float3
Edit Ui
  • Type
  • Interpolation
  • User selection
Used to generate the floating edit ui for keyframes. Similar Types (like float, float2, float3, floatQ...) can share one Template. The floating ui knows what parts of the template should be enabled for the current keyframe.

So for example for a linear float2 keyframe it would show the folowing:

Value 1 X Y
Value 1 X Y
And a Constant FloatQ would look like this:
Value 1 X Y Z W
  • Float [constant + linear]
  • ColorX [constant + linear]

1.2 FS Extensions

Location to install third party systems that expand on FS's capabilities.

2. Timeline

Is a group of tracks. Contains common handling for Track length, Timeline progress and readhead progress.

Also responsible for managing the size, appearance and readhead position of it tracks.

2.1 Track

Holds a set of Keyframes and is able to read their values utilizing Spatial variables and exposing that as an output.

2.1.1 Keyframe

Store their values inside of a BoxValueSpatialVariable (either constant or Gradient). Values can be changed trough an ui that parents itself under the keyframe and writes to specific Dynamic variables.

Keyframes can have any kind of visualization you want. From nothing to something super complex. The sky is the limit.