## Perry Cook's Marimba Physical Model

The marimba suite (marimbaActor, marimbaHand, marimbaAlg) makes calls into Perry Cook's STK synthesis toolkit.

To use the marimba implementation, load perry.so and create an actor of type MarimbaActor.

### MarimbaActor messages

In addition to the messages understood by all generator actors, the MarimbaActor 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)
SetStrikeStrength `hActor x`
  Set the strike strength for new instances created by this actor to `x`.
SetAllStrikeStrength `hActor x time`
  Set the strike strength of all children to `x`, and set the default strike strength for all future children. If `time` is specified, children will modulate to the new strike strength over the specified duration. Default strike 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`.
SetStickHardness `hActor x`
  Set the stick hardness for new instances created by this actor to `x`.
SetAllStickHardness `hActor x time`
  Set the stick hardness of all children to `x`, and set the default stick hardness for all future children. If `time` is specified, children will modulate to the new stick hardness over the specified duration. Default stick hardness is always set immediately regardless of `time`.
SetStrikePosition `hActor x`
  Set the strike position for new instances created by this actor to `x`.
SetAllStrikePosition `hActor x time`
  Set the strike position of all children to `x`, and set the default strike position for all future children. If `time` is specified, children will modulate to the new strike position over the specified duration. Default strike 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`.

### marimba handler messages

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

SetReverb `hSound x`
  Toggle reverb (1 = on, 0 = off).
SetStrikeStrength `hSound x time`
  Set the strike strength to `x`. If `time` is specified, modulate to the new strike 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.
SetStickHardness `hSound x time`
  Set the stick hardness to `x`. If `time` is specified, modulate to the new stick hardness over the specified duration.
SetStrikePosition `hSound x time`
  Set the strike position to `x`. If `time` is specified, modulate to the new strike 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.