public void Test_VstAudioBufferManager_ClearAllBuffers() { VstAudioBufferManager bufferMgr = CreateNew(_testValue); AssertAllBuffersHasValue(bufferMgr, _testValue); bufferMgr.ClearAllBuffers(); AssertAllBuffersHasValue(bufferMgr, 0); }
protected override void FillBuffers(float[][] buffer, int offset, int count) { if (Bypass) //effects just bypass { if (FIsSynth) //synths return silece { foreach (var buf in buffer) { buf.ReadSilence(offset, count); } } else { var minChannels = Math.Min(FInputCount, FOutputCount); for (int b = 0; b < minChannels; b++) { var inSig = FInput[b]; if (inSig != null) { //read input signals inSig.Read(buffer[b], offset, count); } } if (FOutputCount > FInputCount) { var remains = FOutputCount - FInputCount; for (int i = 0; i < remains; i++) { buffer[i + minChannels - 1] = buffer[i % minChannels]; } } } return; } if (PluginContext != null && FDoProcess) { ManageBuffers(count); if (FInput != null) { FInputMgr.ClearAllBuffers(); for (int b = 0; b < FInputCount; b++) { var inSig = FInput[b]; if (inSig != null) { var vstBuffer = FInputBuffers[b % FInputCount]; //read input, use buffer[0] as temp buffer inSig.Read(buffer[0], offset, count); //copy to vst buffer for (int i = 0; i < count; i++) { vstBuffer[i] += buffer[0][i]; } } } } //add events? if (FHasEvents) { PluginContext.PluginCommandStub.ProcessEvents(MidiEvents.ToArray()); MidiEvents.Clear(); FHasEvents = false; } //process audio PluginContext.PluginCommandStub.ProcessReplacing(FInputBuffers, FOutputBuffers); //copy buffers for (int i = 0; i < FOutputBuffers.Length; i++) { for (int j = 0; j < count; j++) { buffer[i][j] = FOutputBuffers[i][j]; } } } }