User Guides

State Reset

State Reset provides the ability to reset song, rack or rack state to a well known base configuration.


Before explaining how this feature works, it's worth considering the various ways settings are used and change over the duration of a song part, song and set list. By "settings" we mean any configuration setting ranging from tempo and time signature changes, to routing settings, gain and mix settings but most importantly plugin parameter settings.

Unchanging Settings
Most settings never change.
Preset Settings
Presets settings are those where you define a configuration of settings and save them as a group. In Cantabile, preset settings are typically represented by States.
Transient Settings
Transient settings are those that change during the performance - normally via a binding from a MIDI control surface to a plugin parameter. Typical examples of these kinds of settings are those bound to expression pedals, modulation wheels, pitch bend etc... See Bindings.

The Problem

While Cantabile's State management handles Unchanging Settings and Preset Settings via States and State Behaviours, these features alone don't cover transient settings. Resetting transient settings raise two important questions:

  1. What should the transient settings be reset to? Because a song (or rack) may be saved when transient settings have been changed from the desired default value there needs to be a mechanism to explicitly state what the reset values of these transient settings should be.

  2. When should transient settings be reset? This is particularly tricky when using shared racks across multiple songs. You may or may not want transient settings reset when switching between songs, and you typically don't want transient settings to reset when switching between song parts.

Capturing Defaults

The following section assumes you have a good understanding of states and state behaviours - if not see here.

To handle transient setting changes, Cantabile now includes a special internal state called the "default state" which starts out empty however you can explicitly capture settings to it:

  1. Make sure the settings are currently configured to the values you want to reset to
  2. Right click on a state behaviour
  3. Select "Capture Defaults for Reset"
Capture Defaults for Reset

This will capture the values of the associated settings and the reset icon will be shown to indicate that this behaviour has default values captured.

Captured Settings

Note that once defaults have been captured for a behaviour it is no longer controlled by regular state behaviours (ie: the check mark is replaced by the reset icon). These settings will only be updated when resetting the state, not during regular state switches.

You can update the captured values by changing the settings and then re-invoking the "Capture Defaults for Reset" command. You can discard captured values using the "Discard Defaults" command (which effectively reverts the behaviour to regular state control). Also, as shown above you can use multiple selection to capture/discard defaults for multiple behaviours at once.

This covers part 1 of "the problem" described above - ie: what should the transient settings be reset to. Since the values are explicitly captured using the context menu, even if you save the song with other transient changes made the captured reset values won't be affected.

Loading and Resetting States

Once the defaults have been captured a state can be loaded in one of two ways:

  • A regular state load - where just the state behaviours are applied
  • A state reset - where the captured reset settings are combined with the regular state behaviours and both sets of settings are applied.

Manually Resetting a State

The simplest way to reset a state is via the State → Reset command.

Manual State Reset

This command performs a reset re-load of the current song or rack.

Creating a State that always Resets

Normally when a state is loaded only the selected state behaviours are applied. You can however configure a state so that it also applies the previously captured defaults:

  1. Right click on the state
  2. Choose "Edit State"
  3. Enable the option "Also Reset when loading this state"
Reset On Load States

When this option is selected, loading this state will load the captured default settings and the other state behaviour controlled settings settings.

This settings provides the ability to have some states that only load the state behaviour properties and others that always perform a reset load. Note that linked clone states can have different values for the "Also Reset" option so you can create two identical states where one resets and one doesn't.

Resetting Racks from Songs

Another way to perform a state reset is in the parent song of a rack. When selecting a rack's state there's a new option "Also Reset the Rack" in the state selector popup:

Rack State Reset

When selected the parent song will force a reset on the rack when loading the state.

Note that different song states (aka: song parts) can configure this option differently. This is important because it means you can configure the first song part to reset the rack's transient settings when the song is loaded, but leave those same settings unaffected when moving through the other song parts.

Note how the song part "Intro" has the reset option enabled on the rack (indicated by the reset icon to the right):

Reset State On

Where as the other song parts don't:

Reset State Off

Resetting Songs

When Cantabile loads a song, it automatically performs a reset load the selected song part. You can manually reset a song using the previously described State → Reset command.

Reset All

The Tools menu → Reset All command performs a full reset including:

  1. Resetting all active songs and racks
  2. Stopping all playing transports (media players, metronome etc...)
  3. Sending All Sound Off commands to all MIDI targets
Reset All

Reset Bindings

You can also invoke resets via bindings. The Song and Rack targets both have a Reset binding point and the Engine object has a "Reset All" binding point:

Reset Bindings