BufferPlayer = function(audiolet, buffer, playbackRate, startPosition,
                            loop, onComplete) {
    AudioletNode.call(this, audiolet, 3, 1);
    this.buffer = buffer;
    this.setNumberOfOutputChannels(0, this.buffer.numberOfChannels);
    this.position = startPosition || 0;
    this.playbackRate = new AudioletParameter(this, 0, playbackRate || 1);
    this.restartTrigger = new AudioletParameter(this, 1, 0);
    this.startPosition = new AudioletParameter(this, 2, startPosition || 0);
    this.loop = new AudioletParameter(this, 3, loop || 0);
    this.onComplete = onComplete;

    this.restartTriggerOn = false;
    this.playing = true;
}
Play the contents of an audio buffer

**Inputs**

- Playback rate
- Restart trigger
- Start position
- Loop on/off

**Outputs**

- Audio

**Parameters**

- playbackRate The rate that the buffer should play at.  Value of 1 plays at
the regular rate.  Values > 1 are pitched up.  Values < 1 are pitched down.
Linked to input 0.
- restartTrigger Changes of value from 0 -> 1 restart the playback from the
start position.  Linked to input 1.
- startPosition The position at which playback should begin.  Values between
0 (the beginning of the buffer) and 1 (the end of the buffer).  Linked to
input 2.
- loop Whether the buffer should loop when it reaches the end.  Linked to
input 3

@constructor
@extends AudioletNode
@param {Audiolet} audiolet The audiolet object.
@param {AudioletBuffer} buffer The buffer to play.
@param {Number} [playbackRate=1] The initial playback rate.
@param {Number} [startPosition=0] The initial start position.
@param {Number} [loop=0] Initial value for whether to loop.
@param {Function} [onComplete] Called when the buffer has finished playing.