public ISample[] Read(int n, out int nn, out bool moreSamples)
{
if (_buff == null || _bufflen < n)
{
_buff = new ISample[n];
_bufflen = n;
}
int nnn = _pos;
int n4 = nnn + n;
bool more = ReadTo(n4);
nn = (more ? n : _samples.Count - nnn);
// Trace.WriteLine("CopyTo {0} {1} {2} {3}", _pos, nnn, nn, _samples.Count);
_samples.CopyTo(nnn, _buff, 0, (int)nn);
moreSamples = more;
_pos += (int)nn;
return _buff;
}