## A simple stereo-panning implementation

The Stereo suite (stereoActor, stereoHand, stereoAlg) implements a basic stereo panning algorithm and its associated handler and actor. Stereo inputs are panned such that both channels will get sent "hard right" if the pan position is hard right, and such that the channels remain unaltered and separated if the pan position is dead center. (The input channels are processed separately, not merely summed.)

Note that all Generator Actors understand the SetPan message. If you just want to pan around a monophonic source, use that instead of the StereoActor. The StereoActor is intended for panning sounds, particularly stereo sounds, into a two-channel stream which other Processor Actors will modify.

To use this stereo implementation, load stereo.so and create an actor of type StereoActor.

### StereoActor messages

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

SetPan `hActor x`
  Set the default pan position for new instances created by this actor to `x` (-1 to +1 is hard left to hard right).
SetAllPan `hActor x time`
  Set the pan position of all children to `x` (-1 to +1 is hard left to hard right), and set the default pan position for all future children. If `time` is specified, children will modulate to the new pan position over the specified duration. Default pan position is always set immediately regardless of `time`.

### StereoActor handler messages

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

SetInput `hSound hHandler`
  Set the input to come from the handler `hHandler`.
SetPan `hSound x time`
  Set the pan position to `x` (-1 to +1 is hard left to hard right). If `time` is specified, move to the new pan position over the specified duration.