Ejemplo n.º 1
0
        public override unsafe void DSPCallback(int handle, int channel, IntPtr buffer, int length, IntPtr user)
        {
            if (IsBypassed)
            {
                return;
            }

            if (ChannelBitwidth == 32) // 32-bit sample data
            {
                var    data = (float *)buffer;
                float *y    = stackalloc float[length];
                float *x    = stackalloc float[length];
                for (int i = 0; i < length / 4; i++)
                {
                    x[i] = data[i];
                    y[i] = data[i];
                }
                if (data != null)
                {
                    update_Pre_Filters();
                    update_Post_Filters();

                    run_Pre_Filters(data, length, 4);
                    iad.Run(data, x, length / 4);
                    run_Post_Filters(data, length, 4);

                    mix_with_DirectSignal(y, data, length, 4);
                }
            }

            RaiseNotification();
        }