# Presets Functions ### Presets \- Generally speaking, presets store and recall parameter values and triggers in Reactor \- The values to be stored can be predefined in a preset profile or they can be completely arbitrary (recording what changes) \- A preset profile can define values across device cores, device IDs and parameter dimensions - or they can be narrowed down \- With narrow preset profiles, there are inherent opportunities to use presets to copy/paste sets of values between devices and dimensions \- Reactor supports an infinite amount of preset profiles (re-)defined anywhere in the layer tree \- Storage and recall of a preset can work either instantaneously or played back over time \- When recorded and played back over time, values are organized in multiple segments. Each segment is essentially a time line and at the end of a timeline, playback will continue to the next segment either automatically or by user invocation (waiting for user input). \- Playback order of segments can be shuffled and waiting time between segments can be randomized. Playback for a timeline can be looped \- Recording and playback allows cancellation which will restore the state before recording or playback. \- Support for ganged recording and playback of multiple preset numbers, device ids, and dimensions (fairly exotic, honestly) \- Prepared for parameter animation (must be implemented in devicecollection) ### Commands: **NextSegment (trigger)** During recording, this will end the segment and start a new one assuming there has been values added. During playback, this will skip to next segment **AddUserWait (trigger)** Like NextSegment, but when used during recording it will insert a User Wait at the end and cap the segment length to the last added value. **Play (trigger)** Starts playback **PlayToggle (trigger)** Starts or stops playback **PlayToggleNext (trigger)** Starts or stops playback, except if waiting in which case it will **PlaySkip (trigger)** Starts playback, and skips to next segment if already playing (which may result in stopping altogether) **PlayPause** Starts playback and toggles pause if already playing **PlayPauseNext** Starts playback and toggles pause if already playing, unless at a user wait in which case it skips to next. **Record (trigger)** Starts recording **RecordToggle (trigger)** Starts or stops recording **RecordNewSegment (trigger)** Starts recording, and creates new segment on second press **RecordAddUserWait (trigger)** Starts recording, and creates new segment with user wait on second press **Stop (trigger)** Stops recording or playing **Delete (trigger)** Deletes preset if it is not recording or playing **Cancel (trigger)** If recording, it will stop recording, recall the values from before recording and reinstate the previous content for the preset If playing, it will stop playing and recall the values from before playing. **Recall (trigger)** Instantly recalls the final values of the first segment of a preset. **RecallStateFromBeforeRecording (trigger)** Recalls the initially stored state of a given preset **DurationRandomExtension (Integer value, ms)** Sets the Random extension value for a given recorded preset. **Loop (bool)** Enable looping for a preset **Shuffle (bool)** Enable shuffle for a preset