public override int Read(float[] buffer, int offset, int count)
{
if (_circularBuffer.Count < count)
{
if (_finished)
{
if (Finished != null) Finished();
Stop();
}
}
else
{
var read = new SampleArray(count);
_circularBuffer.Read(read, 0, read.Length);
for (int i = 0; i < count; i++)
{
buffer[offset + i] = read[i];
}
var samples = count/2.0;
_currentTime += (samples / SampleRate) * 1000 * _playbackSpeed;
}
if (PositionChanged != null)
{
PositionChanged((int)_currentTime);
}
if (!_finished)
{
RequestBuffers();
}
return count;
}