Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
 void IDisposable.Dispose()
 {
     if (mVstAudioBufferManager != null)
     {
         mVstAudioBufferManager.Dispose();
     }
 }
Exemplo n.º 4
0
 public void Dispose()
 {
     if (Inputs != null)
     {
         Inputs.Dispose();
     }
     if (Outputs != null)
     {
         Outputs.Dispose();
     }
 }
Exemplo n.º 5
0
        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;
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
        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();
        }