Esempio n. 1
0
        public void ProcessSample(double[][] input, double[][] output, uint bufferSize)
        {
            double[] inBuffer   = input[0];
            double[] outBuffer  = output[0];
            double[] outBuffer2 = output[1];

            // Double buffer for tonestack to work on
            double[] temp = new double[inBuffer.Length];

            for (int i = 0; i < inBuffer.Length; i++)
            {
                temp[i] = inBuffer[i];
            }

            Hp1.ProcessInPlace(temp);
            LpNoise.ProcessInPlace(temp);
            GainTF.ProcessInPlace(temp);
            PostGain.ProcessInPlace(temp);
            Utils.GainInPlace(temp, 83);
            Utils.SaturateInPlace(temp, 4);
            SaturateLP.ProcessInPlace(temp);
            ClipperHP.ProcessInPlace(temp);

            //if (ParameterInfo[P_LEDs].Value < 0.5)
            //{
            Clipper.GetValuesInPlace(temp);

            /*}
             * else
             * {
             *      ClipperLED.GetValuesInPlace(temp);
             *      Utils.GainInPlace(temp, 0.6);
             * }*/

            Tonestack.ProcessInPlace(temp);
            TF2.ProcessInPlace(temp);
            Contour.ProcessInPlace(temp);
            OutHP.ProcessInPlace(temp);
            OutLP.ProcessInPlace(temp);
            Utils.GainInPlace(temp, Utils.ExpResponse(ParameterInfo[P_VOLUME].Value));

            // copy data to outBuffer
            for (int i = 0; i < input[0].Length; i++)
            {
                outBuffer[i]  = temp[i];
                outBuffer2[i] = temp[i];
            }
        }
Esempio n. 2
0
        public void ProcessSample(double[][] input, double[][] output, uint bufferSize)
        {
            double[] signal = input[0];
            HighpassInput.ProcessInPlace(signal);

            // Channel A
            if (ParameterInfo[P_CHANNEL].Value <= 0.5)
            {
                var inputGain = Utils.ExpResponse(ParameterInfo[P_INPUT_A].Value);
                Utils.GainInPlace(signal, inputGain);

                TF1A.ProcessInPlace(signal);
                Stage1A.ProcessInPlace(signal);

                TF2A.ProcessInPlace(signal);
                Stage2A.ProcessInPlace(signal);

                var volume = Utils.ExpResponse(ParameterInfo[P_VOL_A].Value) * 0.333;                 // match loudness of channels
                Utils.GainInPlace(signal, volume);

                PostVolumeHpA.ProcessInPlace(signal);
                TonestackA.ProcessInPlace(signal);
                TFPresA.ProcessInPlace(signal);
            }

            // Channel B
            if (ParameterInfo[P_CHANNEL].Value > 0.5f)
            {
                var inputGain = Utils.ExpResponse(ParameterInfo[P_INPUT_B].Value) * 5;
                Utils.GainInPlace(signal, inputGain);

                TF1B.ProcessInPlace(signal);
                TF1xB.ProcessInPlace(signal);

                Stage1B.ProcessInPlace(signal);

                TF2B.ProcessInPlace(signal);
                Stage2B.ProcessInPlace(signal);

                hipassZenerB.ProcessInPlace(signal);
                ClipperZenerB.ProcessInPlace(signal);

                if (ParameterInfo[P_BOOST_B].Value > 0.5f)
                {
                    ClipperDiodeB.ProcessInPlace(signal);
                    Utils.GainInPlace(signal, 6);
                }

                TFVolumeB.ProcessInPlace(signal);
                TonestackB.ProcessInPlace(signal);
                TFPresB.ProcessInPlace(signal);
            }

            LowpassOutput.ProcessInPlace(signal);

            // prevent horrible noise in case something goes wrong
            Utils.SaturateInPlace(signal, -4, 4);

            // copy data to outBuffer
            for (int i = 0; i < bufferSize; i++)
            {
                output[0][i] = signal[i];
                output[1][i] = signal[i];
            }
        }