IX Snapshot 1.3

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. There is also a third tab which is 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 - Slot controls

These controls allow you to add/remove selected properties to the active slot. Right-clicking a button will allow you to bind the button action to a MIDI event (see MIDI)

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 - 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, when changing the active slot, the selection will automatically update to contain only properties that are stored in the new slot.
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.

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.

Info Tab

Shows information about properties and memory usage. Snapshots can grow to use significant amounts of memory if you capture the machine data for complex VST instruments.

MIDI

Right-clicking a buttons in the main view will bring up a dialog allowing you to bind that button action to a MIDI event. When that MIDI event is recieved, Snapshot will perform the specified action (capture, restore, etc.) on whichever slot happens to be active at the time.

If you hold CTRL when right-clicking the button, you can bind a MIDI event specifically to the current active slot, allowing you to manipulate that slot even when it is no longer active.

Here are the controls available in the MIDI pop-up:

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.
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.
Cancel Discard the dialog settings without changing the internal MIDI map.

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 or you can mail me via deenine[at]hotmail[dot]co[dot]uk (but don't expect a quick reply.)

Disclaimer

I still suck at this programming lark and I can't be held responsible for anything, ever.

- IX