# BTDSys PeerState

## What is it?

PeerState allows "snapshots" of the parameter states of machines to be captured and restored easily. You can switch between up to 128 stored parameter values for several machines at once, with only a couple of clicks, one entry in the pattern editor, or one press of a MIDI key.

## Installation

Unzip into your Buzz\Gear\Generators\ folder. Add to index.txt if you want, or download an up-to-date index.txt if you're lazy.

## Quick-start guide

- Add PeerState to your song, along with some other machines
- You don't need to connect anything to PeerState in the machine view
- Right click PeerState, and select Machines/Parameters
- In this dialog, place checks next to the machines and parameters you want to control
- Click OK
- Double click PeerState, and play around with the resulting dialog

## Version history

- v1.1: Added snapshot manager window. Fixed crash when loading a song where PeerState controlled another Peer machine. Fixed occasional strange behaviour of inertia. Fixed side-effects (storing/restoring snapshots) when opening dialogs. Added facility for overwriting a snapshot from the 'Simple' dialog without first restoring it. Added "What to open on double click" attribute.
- v1.0: First public release.

## Parameters

- Snapshot - Choose the current snapshot number.
- Inertia - Sets the glide time when changing snapshots.

## Attributes

- MIDI channel - Sets which MIDI channel PeerState will respond to.
- MIDI note for taking snapshots - A press of the selected note will cause the current snapshot to be overwritten with current parameter values.
- Inertia update freq - Sets the resolution with which inertia takes place. Lower values give smoother glides, but result in higher CPU load.
- What to open on double click - Select what will happen upon double clicking PeerState in the machine view:
  0: PeerState's parameter window
  1: The 'Simple' GUI
  2: The 'A/B' GUI

## MIDI

The MIDI support in PeerState works as follows:

- When a MIDI note is pressed, the corresponding numbered snapshot is restored and set as current. For example, a press on "Middle C" will call up snapshot number 60.
- In addition, a note may be chosen (in the attributes) to act instead as a "store snapshot" key.

A table of MIDI note numbers is available by clicking here.

## Dialogs

There are several dialogs in PeerState, most of which are fairly self-explanatory. But I'll explain them anyway.

### Machines/parameters dialog

Here you can choose which parameters you want to include in snapshots. Note that the checkboxes next to machine names indicate at-a-glance whether any of that parameters of that machine are selected—a black tick indicates all parameters are selected, a grey tick indicates some, and no tick indicates none.

### 'Simple' GUI

This is the dialog brought up by a double-click on the machine. You can use the combo box to call up snapshots, and the big button to store current parameter states. An asterisk next to the snapshot in the combo box indicates there is a snapshot currently stored in that slot.

You can use the checkbox in this dialog to prevent a snapshot from being restored when you select it from the combo box. This is useful for overwriting a snapshot without having to restore it and reset all your parameter values first.

### 'A/B' GUI

This is similar to the 'Simple' GUI, but more suited for quickly comparing and tweaking several snapshots. The big 'Take snapshot' button is replaced with two arrow buttons for selecting snapshots. And whenever you choose a new snapshot number, the old one is automatically overwritten with current parameter values before the new one is restored.

### Snapshot manager

This dialog, logically enough, allows you to manage your snapshots. Management tasks include copying/swapping/deleting, as well as more complex randomisation and genetic functions.

1. You can choose two snapshots (A on the left, and B on the right), and perform editing tasks between them.
2. The various parameter values stored in each snapshot are listed here.
3. Displays the MIDI note which will corresponds to this snapshot. This cannot be changed.
4. Call up the specified snapshot. This works in precisely the same way as the "Snapshot" machine parameter, or the combo boxes in the 'Simple' and 'A/B' GUIs.
5. Deletes snapshot A (ie clears all parameter values from it), leaving snapshot B unchanged.
6. Overwrites snapshot A with the parameter values from snapshot B, leaving snapshot B unchanged.
7. Exchanges all parameter values between snapshots A and B.
8. Does a crossfade between the two snapshots, overwriting snapshot A with the results. The amount slider (k) controls the weighting between the two snapshots: if it is at the far left there is no effect, and if it is at the far right the effect is identical to button f.
9. Performs a randomised "genetic splice" between the two snapshots, overwriting snapshot A with the results. For each parameter in the snapshot, either the value from snapshot A or the value from snapshot B is used. The amount slider (k) controls the probability of choosing parameters from one snapshot or the other: if it is at the far left there is no effect, and if it is at the far right the effect is identical to button f.
10. Applies a random perturbation to the values in snapshot A. Each parameter value is changed by a random amount at most k% of the parameter's range, where k% is the value of slider k. If the slider is at the far left there is no effect, if it is at the far right the effect is similar to the "Random" button in Buzz.
11. Controls the amounts or weightings for buttons h, i and j.

## Thanks

Thanks to Ronny Pries for the initial idea. Thanks to Polac for inspiration for the snapshot manager (and for his marvellous VST adaptors). Also thanks to tinga, noolout, mute, thOke, XionD, wizenwet, ideolog, and everyone else who contributed their support and opinions.

## EOF/legal

Docs and code ©2003/4 Ed Powley
website (including contact details)
This machine is freeware and freely distributable, provided no money is charged and all files are present and unchanged.