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

Write() public method

public Write ( AlphaSynth.Ds.SampleArray data, int offset, int count ) : int
data AlphaSynth.Ds.SampleArray
offset int
count int
return int
        public int Write(SampleArray data, int offset, int count)
        {
            var samplesWritten = 0;
            if (count > _buffer.Length - _sampleCount)
            {
                count = _buffer.Length - _sampleCount;
            }

            var writeToEnd = Math.Min(_buffer.Length - _writePosition, count);
            SampleArray.Blit(data, offset, _buffer, _writePosition, writeToEnd);
            _writePosition += writeToEnd;
            _writePosition %= _buffer.Length;
            samplesWritten += writeToEnd;
            if (samplesWritten < count)
            {
                SampleArray.Blit(data, offset + samplesWritten, _buffer, _writePosition, count - samplesWritten);
                _writePosition += (count - samplesWritten);
                samplesWritten = count;
            }
            _sampleCount += samplesWritten;
            return samplesWritten;
        }