function AudioletDevice(audiolet, sampleRate, numberOfChannels, bufferSize) {
    AudioletNode.call(this, audiolet, 1, 0);

    this.sink = Sink(this.tick.bind(this), numberOfChannels, bufferSize,
                     sampleRate);

    // Re-read the actual values from the sink.  Sample rate especially is
    // liable to change depending on what the soundcard allows.
    this.sampleRate = this.sink.sampleRate;
    this.numberOfChannels = this.sink.channelCount;
    this.bufferSize = this.sink.preBufferSize;

    this.writePosition = 0;
    this.buffer = null;
    this.paused = false;

    this.needTraverse = true;
    this.nodes = [];
}
Audio output device.  Uses sink.js to output to a range of APIs.

@constructor
@param {Audiolet} audiolet The audiolet object.
@param {Number} [sampleRate=44100] The sample rate to run at.
@param {Number} [numberOfChannels=2] The number of output channels.
@param {Number} [bufferSize=8192] A fixed buffer size to use.