render method

void render(
  1. List<double> left,
  2. List<double> right
)
override

Implementation

void render(List<double> left, List<double> right) {
  if (left.length != right.length) {
    throw "The output buffers for the left and right must be the same length.";
  }

  var wrote = 0;
  while (wrote < left.length) {
    if (_blockWrote == synthesizer.blockSize) {
      _processEvents();
      _blockWrote = 0;
      _currentTime += MidiFile.getTimeSpanFromSeconds(_speed * synthesizer.blockSize / synthesizer.sampleRate);
    }

    var srcRem = synthesizer.blockSize - _blockWrote;
    var dstRem = left.length - wrote;
    var rem = math.min(srcRem, dstRem);

    synthesizer.render(left.slice(wrote, rem), right.slice(wrote, rem));

    _blockWrote += rem;
    wrote += rem;
  }
}