/// <summary> /// Add remaining audio data to back buffer to be played in next audio thread cycles. /// </summary> private void AddToBackBuffer(int channels) { if (maxBackBufferSize > 0) { if (_index != -1 && _index < _clipData.Length) { float[] newBackBuffer = new float[_clipData.Length - _index]; for (int i = _index; i < _clipData.Length / _clipChannels; i++) { int clipChannel = 0; while (clipChannel < _clipChannels) { newBackBuffer[(i - _index) * _clipChannels + clipChannel] = _clipData[i * _clipChannels + clipChannel]; clipChannel++; } } BackBuffer bb = BackBufferFactory(); if (bb) { bb.SetData(newBackBuffer); if (log) { print("New BackBuffer[" + newBackBuffer.Length + "] added. Total: " + _activeBackBuffers.Count + "/" + _activeBackBuffers.Capacity); } } } } }