## Perry Cook's Mandolin Physical Model

The mandolin suite (mandolinActor, mandolinHand, mandolinAlg) makes calls into Perry Cook's STK synthesis toolkit.

To use the mandolin implementation, load perry.so and create an actor of type MandolinActor.

### MandolinActor messages

In addition to the messages understood by all generator actors, the MandolinActor understands the following messages:

SetReverb `hActor x`
  Turn on reverb for new instances created by this actor to `x`. (1 = ON, 0 = OFF)
SetAllReverb `hActor x`
  Turn on reverb of all children to `x`, and set the default reverb flag for all future children. (1 = ON, 0 = OFF)
SetPluckStrength `hActor x`
  Set the pluck strength for new instances created by this actor to `x`.
SetAllPluckStrength `hActor x time`
  Set the pluck strength of all children to `x`, and set the default pluck strength for all future children. If `time` is specified, children will modulate to the new pluck strength over the specified duration. Default pluck strength is always set immediately regardless of `time`.
SetFreq `hActor x`
  Set the frequency (in Hertz) for new instances created by this actor to `x`.
SetAllFreq `hActor x time`
  Set the frequency (in Hertz) of all children to `x`, and set the default frequency (in Hertz) for all future children. If `time` is specified, children will modulate to the new frequency over the specified duration. Default frequency is always set immediately regardless of `time`.
SetVibGain `hActor x`
  Set the vibrato gain for new instances created by this actor to `x`.
SetAllVibGain `hActor x time`
  Set the vibrato gain of all children to `x`, and set the default vibrato gain for all future children. If `time` is specified, children will modulate to the new vibrato gain over the specified duration. Default vibrato gain is always set immediately regardless of `time`.
SetBodySize `hActor x`
  Set the body size for new instances created by this actor to `x`.
SetAllBodySize `hActor x time`
  Set the body size of all children to `x`, and set the default body size for all future children. If `time` is specified, children will modulate to the new body size over the specified duration. Default body size is always set immediately regardless of `time`.
SetPluckPosition `hActor x`
  Set the pluck position for new instances created by this actor to `x`.
SetAllPluckPosition `hActor x time`
  Set the pluck position of all children to `x`, and set the default pluck position for all future children. If `time` is specified, children will modulate to the new pluck position over the specified duration. Default pluck position is always set immediately regardless of `time`.
SetLoopGain `hActor x`
  Set the loop gain for new instances created by this actor to `x`.
SetAllLoopGain `hActor x time`
  Set the loop gain of all children to `x`, and set the default loop gain for all future children. If `time` is specified, children will modulate to the new loop gain over the specified duration. Default loop gain is always set immediately regardless of `time`.

### mandolin handler messages

In addition to the messages understood by all handlers, the handler for the mandolin algorithm understands the following messages:

SetReverb `hSound x`
  Toggle reverb (1 = on, 0 = off).
SetPluckStrength `hSound x time`
  Set the pluck strength to `x`. If `time` is specified, modulate to the new pluck strength over the specified duration.
SetFreq `hSound x time`
  Set the frequency to `x`. If `time` is specified, modulate to the new frequency over the specified duration.
SetVibGain `hSound x time`
  Set the vibrato gain to `x`. If `time` is specified, modulate to the new vibrato gain over the specified duration.
SetBodySize `hSound x time`
  Set the body size to `x`. If `time` is specified, modulate to the new body size over the specified duration.
SetPluckPosition `hSound x time`
  Set the pluck position to `x`. If `time` is specified, modulate to the new pluck position over the specified duration.
SetLoopGain `hSound x time`
  Set the loop gain to `x`. If `time` is specified, modulate to the new loop gain over the specified duration.