-
Notifications
You must be signed in to change notification settings - Fork 5
States and Flags
In order to operate Loopidity proficiently, you must mind only the following:
- Which state the is program currently in?
- Which flag is controlled by each primary trigger?
- What will happen when the scene rolls over, given the current state and flags?
The Loopidity design goal is to keep this state graph as small and linear as possible; so that it can be easily memorized, as not to hinder your creative workflow, but to quickly become an intuitive activity. To this goal, the following are the key points to note:
- There are only two primary triggers.
- Each primary trigger controls exactly one primary flag.
- There are only three useful states.
- Each state has only one ordinary transition in, and one ordinary transition out.
- The Scene-Change Flag is controlled by the Scene Toggle button and is represented by the Scene Cursor.
- The Arm Flag is controlled by the Loop Toggle button and is represented by the Loop Cursor.
- Refer to the Default Controls Cheat Sheet regarding the Triggers and Toggles mentioned here.
The semantics of the Scene-Change Flag, and the behavior of the Scene Toggle, never changes, and is indicated by the position of the Scene Cursor. Whichever scene that the Scene Cursor indicates, will become the next active scene, and indicated as such by the Active Scene Indicator, upon state transitions and scene rollovers.
The semantics of the Arm Flag, and the behavior of the Loop Toggle, depend on the state as described below.
The Idle State is the special inactive state, which the program is in, only when it is first launched, and after it is fully reset. It is the only state where there are no loops existing, no active scene, and the program is neither recording nor playing.
The ordinary transition into the Idle State, is automatically, upon startup. From any other state, the Reset-All Trigger can be used, as a shortcut immediately into the Idle State, with all of the implied destruction.
In the Idle State, the Arm Flag has no semantics nor indicator; and selection of the initial scene via the Scene Toggle, is arbitrary. The Loop Toggle acts, only as a trigger in this special state, and is the only trigger out of it.
The transition out of the Idle State, is always to the Initialization State, which starts recording immediately.
The Initialization State is another special state, where there are no existing loops to play, but the sole base loop (or "pulse") for the active scene is recording.
With the exception of the one-time boot-strap transition from the Idle State, and the destructive Undo Trigger and Reset-Scene Trigger, the ordinary transition into the Initialization State is from the Active State automatically, upon a rollover where the Scene-Change Flag is set to an empty scene. From any state other than the Idle State, the Reset-Scene Trigger can be used as a shortcut, immediately into the Initialization State, with all of the implied destruction.
Upon transition into the Initialization State, the beginning point of the base "pulse" loop is set.
In the Initialization State, the Arm Flag has no semantics nor indicator; but the sole base loop is always "armed" to be saved implicitly; and this is indicated by the color of Loop Cursor. As in the Idle State, the Loop Toggle acts only as a trigger in this special state, and is the only trigger out of it.
The transition out of the Initialization State, is normallly to the Active State; but there exists an automatic implicit transition, immediately back into the Initialization State, upon a transition out, where the Scene-Change Flag is set to another empty scene. There is also the special case of the Undo Trigger or the Reset-Scene Trigger being activated while in the Initialization State; whereby the scene does not change, and no new loop is saved, but the beginning point of the base "pulse" loop is reset. That case is technically not an transition though, but a soft reset of the very same state, which breaks linearity temporarily.
Upon transition out of the Initialization State, the ending point of the base "pulse" loop is set, and the newly recorded loop is saved.
The Active State is where most of the time is spent. This is the only state, where any loops are playing; and indeed, some loops are always playing.
The only transition into the Active State, is the direct result of the Loop Trigger being pressed, in the Initialization State.
In the Active State, the Arm Flag acquires it's normal semantics, which is indicated by the color of Loop Cursor. The Loop Toggle acts as a toggle for the Arm Flag in this state.
The only transition out of the Active State, is to the Initialization State. This ordinarily occurs automatically, upon a rollover, where the Scene-Change Flag is set to an empty scene. It can also occur, due to a destructive full scene reset, per the Reset-Scene Trigger, or due to repeated use of the Undo Trigger, such that the scene becomes empty.
Although it may be tempting to think of scene changes as state changes; once the Initialization State has completed for the scene (the pulse is set), scene changes do not change the state, ordinarily. Loops may be muted or deleted; but some loops are always playing, when the scene has a pulse. Scene changes only determine which set of loops (or "scene") is playing, and which are paused.
A scene change can occur, only at the loop seam of the currently active scene, upon a rollover, where the Scene-Change Flag (as selected by the Scene Cursor) is set to another scene.
Upon a scene change, all loops of the previous scene are paused at the seam, which is indicated by the dull color of their frames; and all existing loops of the next scene begin playing, which is indicated by the color of their frames.