IX Snapshot 1.4

What does it do?

Store and restore combinations of machine properties. Unlike Peer State, IX Snapshot can capture a machine's internal state data, allowing you to store properties that are not exposed as parameters or attributes.

Installation

Copy "IX Snapshot.NET.dll" and this file to your Generators folder.

Machine Parameters

Name Function
Slot Selects the active slot. The active slot's state is shown in the main treeview.
Smoothing How long it will take target parameters to transition from their current value to the new value when restoring captured values. See Smoothing.
Smoothing units Time units to use when smoothing parameter changes. See Smoothing.
Smoothing shape Interpolation curve used when smoothing parameter changes. See Smoothing.

GUI

Snapshot has a graphical interface incorporated into the machine parameters window. The window can be resized horizontally to give more room for the treeview controls, but resizing vertically is currently not possible.

The controls are organised into two sections, 'Main' and 'Manage', which can be selected using the tab controls at the top of the interface. In addition there are two further tabs, "MIDI" and "Info", which are used to display information about the state of the machine.

Main tab - Treeview controls

Control Function
Slot dropdown Selects the active slot, the same as using the Slot parameter. You can also rename the active slot and slots which contain property values will appear bold.
Notes panel You can enter descriptive text here to help your failing mind remember what the slot is supposed to do.
Treeview

The treeview shows all of the machines in the Buzz machine view and their properties. Use the checkboxes to select which properties will be affected by the action buttons. Properties that have stored values in the active slot are shown in bold and the value is dispayed to the right of the property name. Properties with smoothing defined are shown in blue and properties with child properties that have smoothing defined are shown in orange (see Smoothing).

Right-clicking an item will bring up a context menu which will allow you to manipulate that item (and it's children), regardless of whether its checkbox is selected. See Property Context Menu

Double-clicking an item will open the Property Dialog.

Unfortunately, Snapshot cannot yet manipulate machine connection parameters such as amp and pan, so these will not be displayed.

Text Filter The treeview will show only machine properties that contain the text in this control. Property selection overrides this setting though, so selected properties will always be displayed, even if they don't match the filter.
Filter clear button Resets the text filter.
Filter dropdown This control allows you to see only properties that are either stored or not stored in the active slot. As with the text filter, selected properties will always be shown.
All button Select all available properties.
None button Deselect all properties.
Stored button Select only properties that are stored in the active slot.
Invert button Invert the property selection.

Property Context Menu

Right-clicking a property in the treeview brings up a context menu. For groups of properties, the actions will apply to all child properties of that group.

The menu options are:

Control Function
Capture Store the current value of the property.
Restore Apply the stored value to the property.
Clear Discard the stored value for the property.
Remove from all slots Discard all stored values for the property in all slots (this will always prompt for confirmation.)
Settings Opens the Property Dialog.

Main tab - Option controls

These checkboxes control Snapshot's behaviour.

Control Function
Confirm on clear/purge If checked, Snapshot will ask for confirmation before discarding stored property values.
Selection follows slot If checked, each slot will remember its own property selection, so that changing the active slot will change which machine properties are selected in the treeview. If the box is not checked, the selection will remain the same when changing slots.
Select new machines If checked, newly added machines will automatically have all their prooperties included in the selection.
Capture on slot change. If checked, Snapshot will capture the selected property values, as if you had pressed the Capture button, before swicthing to the new slot.
Restore on slot change If checked, Snapshot will restore property values contained in the new slot, as if you had pressed the Restore button.
Restore on song load If checked, Snapshot will restore property values contained in the active slot once the song has finished loading.
Restore on transport stop If checked, Snapshot will restore property values contained in the active slot when the song stops playing.

Main tab - Action buttons

These buttons allow you to work with the contents of the active slot, storing or removing machine properties.

Capture selected Store the values of all selected properties in the active slot. Any existing values for the selected properties will be replaced with the current value. Only selected properties will be affected.
Capture missing Store the values of any selected properties that do not already have a stored value.
Purge Discard values from the active slot for any properties that are not selected or are no longer available.
Clear all Discard all stored property values from the active slot. CTRL+ALT+Click will clear all values from all slots (this will always prompt for confirmation.)
Clear selected Discard selected property values from the active slot. CTRL+ALT+Click will clear the selected values from all slots (this will always prompt for confirmation)
Restore all Restore all property values, whether selected or not, contained in the active slot.

Main tab - MIDI assignment buttons

Each action button is flanked by a pair of smaller buttons which allow you to bind MIDI events to the relevant action. See MIDI Assignment.

The left button assigns MIDI events at the global level, that is the action will affect whichever slot is active when the event is received. Right-clicking an action button has the same effect. The indicator on the button turns green if a MIDI event is assigned.

The right button associates a MIDI event with the currently active slot, so that the relevant action will trigger whether the slot is active or not. Shift + right-click on the action button will also assign slot specific MIDI events. The indicator on the button turns blue if a MIDI event is assigned.

MIDI Assignment

This dialog is used to associate MIDI events with slot actions. The title of the dialog shows which action is being assigned.

The dialog contains the following controls:

Control Function
Type Select whether you wish to bind to a Note-on, Note-off or Controller event.
Channel Select the MIDI channel to use when listening for the event.
Note/Controller Select which note or controller message you wish to listen for.
Controller Value If listening for a controller message, which specific value to respond to.
Remember selection (slot specific) If checked, the property selection at the time of assignment will be stored with the MIDI event, overriding any selection when the event is triggered.
Clear non-selected values (slot specific) If checked, slot specific Capture will discard any stored propertie that are not selected, so the slot will contain only the newly captured values.
Require confirmation (slot specific) If checked, ask the user for confirmation before performing the action.
Learn When clicked, Snapshot will listen for MIDI events and populate the dialog controls automatically.
Okay Accept the dialog settings and add the specified MIDI event to the internal MIDI map. If the specified MIDI event is already assigned to another action, a pop-up will ask how to handle the conflict.
Cancel Discard the dialog settings without changing the internal MIDI map.

Manager tab

The manager tab contains two sets of controls similar to those in the main tab. The controls beneath the treeviews operate on the selected properties in the appropriate view, while the controls in the central strip perform operations that involve both sides. The two treeviews are synchronised to show the same properties, so expanding/selecting an item on one side will automatically do the same on the other. Similarly, using the property filter controls will affect both sides simultaneously.

Manager tab - Treeviews and slot controls

The controls for the treeviews are the same as those in the main tab, with the exception that the slot dropdowns will not set the selected slot to be the active slot. To activate the slot, use the activate button.

Control Function
Activate button Set the relevant slot to be the active slot. If "Restore on slot change" is selected, or if you CTRL+Click the button, the slot values will be restored.

Manager tab - Central controls

The central controls, arranged vertically between the two treeviews, perform operations involving both visible slots. Due to limited space, the buttons labels aren't very descriptive but each control has a tooltip explaining its purpose..'

Control Function
Copy to left Copies selected property values from the right slot to the left. If an empty property is copied, the corresponding value in the destination slot will be cleared.
Copy to right As above but the other way round.
Select all Selects all properties in both treeviews.
Select none Deselects all properties in both treeviews.
Invert selection Inverts the property selection in both treeviews.
Select left values Selects only properties that contain values on the left side.
Select right values Selects only properties that contain values on the right side.

MIDI Tab

The MIDI tab shows which MIDI events are assigned to actions. You can sort the list by clicking on the column headers and you can remove assignments by clicking the red crosses at the right of the table.

Info Tab

Shows information about properties and memory usage. Slots can grow to use significant amounts of memory, so this view allows you to see how much data is being stored. A checkbox beneath the table allows you to hide slots that contain no data. It is not currently possible to edit items in the table.

Property Dialog

Double-clicking a property in the treeview will open the Property Dialog, or you can access it via the treeview item context menu. Use the Property Dialog to set/clear/restore the value and define specific smoothing settings for each individual property.

If you access the Property Dialog for a group of properties, changes will apply to all child properties of that group. You can capture/restore/clear values and edit smoothing settings but you cannot manually enter a stored value. Please note that opening the dialog may be slow if there are many properties in the group. This is because Snapshot temporarily stores the values of all affected properties so that everything can be restored correctly if the dialog is cancelled.

The Property Dialog features the following controls:

Control Function
Stored value field Displays the raw stored value for the property, if one has been captured. You can enter a value manually if you unlock the field.
Value description Displays the formatted description of the stored value.
Capture Store the current value of the property.
Restore Apply the stored value to the property.
Clear Discard the stored value for the property..
Smoothing Smoothing time for the property. If no value is set for the property, the box will display the inherited value. The button next to the field is disabled when the inherited value is shown. See Smoothing.
Smoothing units Time units to use when smoothing the property. The combo shows the inherited value unit you select one manually. The button next to the field is disabled when the inherited value is shown. See Smoothing.
Smoothing shape Interpolation shape to use when smoothing the property. The combo shows the inherited value unit you select one manually. The button next to the field is disabled when the inherited value is shown. See Smoothing.
OK Accept changes and close the dialog.
Cancel Close the dialog and discard all changes. Stored values and the target property will be reset to whatever values they had before the dialog was opened.

Smoothing

Snapshot 1.3 adds the ability to slowly transition parameter values when restoring from a slot. Smoothing can be set using the parameters in the machine parameter window and can also be set individually for any specific property. Properties which do not define their own smoothing inherit their values from their parent groups, and ultimately from the Snapshot machine. Inheritance is separate for each of the three smoothing values (count, units and shape) allowing flexible control over how stored values are applied when restoring from a slot.

Please note that timing for smoothing is only approximate as it is not possible to set large numbers of parameters in the Buzz audio thread (doing so causes Buzz to freeze). Because Snapshot can potentially set hundreds of parameters at a time, it is necessary to do the work in a separate thread and precise timing cannot be guaranteed.

Notes

Please be aware that the GUI may be sluggish during capture/restore/clear operations if there are very many properties involved.

Another thing to consider is that the Data property of VST instruments can be quite large, so please be wary if capturing VSTs. Snapshot stores all of the state information in RAM and I do not know what will happen if all the RAM is used up.

Acknowledgements

Massive thanks to WDE and UNZ for awesome helpfulness and of course to Oskari, for making everything possible.

Contact

Comments, requests, bug reports etc. are welcome. You can find me lurking in the Buzz forums and on Discord in the Jeskola Buzz channel. You can also mail me via deenine[at]hotmail[dot]co[dot]uk (but don't expect a quick reply.)

Disclaimer

I still suck at programming, even after all these years, and I can't be held responsible for anything, ever.

- IX