function Sink (readFn, channelCount, bufferSize, sampleRate) {
	var	sinks	= Sink.sinks.list,
		i;
	for (i=0; i<sinks.length; i++) {
		if (sinks[i].enabled) {
			try {
				return new sinks[i](readFn, channelCount, bufferSize, sampleRate);
			} catch(e1){}
		}
	}

	throw Sink.Error(0x02);
}
Creates a Sink according to specified parameters, if possible.

@class

@arg =!readFn
@arg =!channelCount
@arg =!bufferSize
@arg =!sampleRate

@param {Function} readFn A callback to handle the buffer fills.
@param {Number} channelCount Channel count.
@param {Number} bufferSize (Optional) Specifies a pre-buffer size to control the amount of latency.
@param {Number} sampleRate Sample rate (ms).
@param {Number} default=0 writePosition Write position of the sink, as in how many samples have been written per channel.
@param {String} default=async writeMode The default mode of writing to the sink.
@param {String} default=interleaved channelMode The mode in which the sink asks the sample buffers to be channeled in.
@param {Number} default=0 previousHit The previous time of a callback.
@param {Buffer} default=null ringBuffer The ring buffer array of the sink. If null, ring buffering will not be applied.
@param {Number} default=0 ringOffset The current position of the ring buffer.