AlphaSynth.Ds.CircularSampleBuffer.Read C# (CSharp) Method

Read() public method

public Read ( AlphaSynth.Ds.SampleArray data, int offset, int count ) : int
data AlphaSynth.Ds.SampleArray
offset int
count int
return int
        public int Read(SampleArray data, int offset, int count)
        {
            if (count > _sampleCount)
            {
                count = _sampleCount;
            }
            var samplesRead = 0;
            var readToEnd = Math.Min(_buffer.Length - _readPosition, count);
            SampleArray.Blit(_buffer, _readPosition, data, offset, readToEnd);
            samplesRead += readToEnd;
            _readPosition += readToEnd;
            _readPosition %= _buffer.Length;

            if (samplesRead < count)
            {
                SampleArray.Blit(_buffer, _readPosition, data, offset + samplesRead, count - samplesRead);
                _readPosition += (count - samplesRead);
                samplesRead = count;
            }

            _sampleCount -= samplesRead;
            return samplesRead;
        }