Exemplo n.º 1
0
        public void Test_VstAudioBufferManager_ClearAllBuffers()
        {
            VstAudioBufferManager bufferMgr = CreateNew(_testValue);

            AssertAllBuffersHasValue(bufferMgr, _testValue);

            bufferMgr.ClearAllBuffers();

            AssertAllBuffersHasValue(bufferMgr, 0);
        }
Exemplo n.º 2
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];
                    }
                }
            }
        }