private void PrepareBuffers(int count) { if (count == _totalSamples) { return; } System.Diagnostics.Debug.WriteLine($"VstSampleProvider::PrepareBuffers [{_plugin.PluginCommandStub.GetEffectName()}] count changed from {_totalSamples} to {count}. Replacing current buffers."); _inBufMgr?.Dispose(); _outBufMgr?.Dispose(); int samplesPerBuffer = count / NUM_CHANNEL; _tempBuf = new float[count]; _inBufMgr = new VstAudioBufferManager(_inputCount, samplesPerBuffer); _outBufMgr = new VstAudioBufferManager(_outputCount, samplesPerBuffer); #pragma warning disable CS0618 // Type or member is obsolete _inBuf = _inBufMgr.ToArray(); _outBuf = _outBufMgr.ToArray(); #pragma warning restore CS0618 // Type or member is obsolete _totalSamples = count; }
protected void ManageBuffers(int count) { if (FInputMgr.BufferSize != count) { FInputMgr.Dispose(); FOutputMgr.Dispose(); FInputMgr = new VstAudioBufferManager(FInputCount, count); FOutputMgr = new VstAudioBufferManager(FOutputCount, count); FInputBuffers = FInputMgr.ToArray(); FOutputBuffers = FOutputMgr.ToArray(); } }
void IDisposable.Dispose() { if (mVstAudioBufferManager != null) { mVstAudioBufferManager.Dispose(); } }
public void Dispose() { if (Inputs != null) { Inputs.Dispose(); } if (Outputs != null) { Outputs.Dispose(); } }
private void PrepareBuffers(int count) { if (count == _totalSamples) { return; } _inBufMgr?.Dispose(); _outBufMgr?.Dispose(); int samplesPerBuffer = count / NUM_CHANNEL; _tempBuf = new float[count]; _inBufMgr = new VstAudioBufferManager(NUM_CHANNEL, samplesPerBuffer); _outBufMgr = new VstAudioBufferManager(NUM_CHANNEL, samplesPerBuffer); #pragma warning disable CS0618 // Type or member is obsolete _inBuf = _inBufMgr.ToArray(); _outBuf = _outBufMgr.ToArray(); #pragma warning restore CS0618 // Type or member is obsolete _totalSamples = count; }
public int Read(float[] buffer, int offset, int count) { VstAudioBufferManager inBufMgr = new VstAudioBufferManager(2, count); VstAudioBufferManager outBufMgr = new VstAudioBufferManager(2, count); VstAudioBuffer[] inBuf = inBufMgr.ToArray(); VstAudioBuffer[] outBuf = outBufMgr.ToArray(); _cmdstub.StartProcess(); _cmdstub.ProcessReplacing(inBuf, outBuf); _cmdstub.StopProcess(); for (int i = 0; i < count; i++) { buffer[i] = outBuf[i % 2][i]; } inBufMgr.Dispose(); outBufMgr.Dispose(); return(count); }
static void Method(VstPluginContext PluginContext, int bytesWritten, byte[] destBuffer) { int inputCount = PluginContext.PluginInfo.AudioInputCount; int outputCount = PluginContext.PluginInfo.AudioOutputCount; int blockSize = bytesWritten; VstAudioBufferManager inputMgr = new VstAudioBufferManager(inputCount, blockSize); VstAudioBufferManager outputMgr = new VstAudioBufferManager(outputCount, blockSize); foreach (VstAudioBuffer buffer in inputMgr.ToArray()) { for (int i = 0; i < blockSize; i++) { buffer[i] = (float)destBuffer[i] / 128.0f - 1.0f; } } PluginContext.PluginCommandStub.SetBlockSize(blockSize); PluginContext.PluginCommandStub.SetSampleRate(44.8f); PluginContext.PluginCommandStub.StartProcess(); PluginContext.PluginCommandStub.ProcessReplacing(inputMgr.ToArray(), outputMgr.ToArray()); PluginContext.PluginCommandStub.StopProcess(); foreach (VstAudioBuffer buffer in outputMgr.ToArray()) { for (int i = 0; i < blockSize; i++) { destBuffer[i] = Convert.ToByte(((float)buffer[i] + 1.0f) * 128.0f); } } inputMgr.ClearBuffer(inputMgr.ToArray()[0]); inputMgr.ClearBuffer(inputMgr.ToArray()[1]); inputMgr.Dispose(); outputMgr.ClearBuffer(outputMgr.ToArray()[0]); outputMgr.ClearBuffer(outputMgr.ToArray()[1]); outputMgr.Dispose(); }
static void Method(VstPluginContext PluginContext, int bytesWritten, byte[] destBuffer) { int inputCount = PluginContext.PluginInfo.AudioInputCount; int outputCount = PluginContext.PluginInfo.AudioOutputCount; int blockSize = bytesWritten; VstAudioBufferManager inputMgr = new VstAudioBufferManager(inputCount, blockSize); VstAudioBufferManager outputMgr = new VstAudioBufferManager(outputCount, blockSize); foreach (VstAudioBuffer buffer in inputMgr.ToArray()) { for (int i = 0; i < blockSize; i++) { buffer[i] = (float)destBuffer[i] / 128.0f - 1.0f; } } PluginContext.PluginCommandStub.SetBlockSize(blockSize); PluginContext.PluginCommandStub.SetSampleRate(44.8f); PluginContext.PluginCommandStub.StartProcess(); PluginContext.PluginCommandStub.ProcessReplacing(inputMgr.ToArray(), outputMgr.ToArray()); PluginContext.PluginCommandStub.StopProcess(); foreach (VstAudioBuffer buffer in outputMgr.ToArray()) { for (int i = 0; i < blockSize; i++) { destBuffer[i] = Convert.ToByte(((float)buffer[i] + 1.0f) * 128.0f); } } inputMgr.ClearBuffer(inputMgr.ToArray()[0]); inputMgr.ClearBuffer(inputMgr.ToArray()[1]); inputMgr.Dispose(); outputMgr.ClearBuffer(outputMgr.ToArray()[0]); outputMgr.ClearBuffer(outputMgr.ToArray()[1]); outputMgr.Dispose(); }