Beispiel #1
0
        /// <summary>
        /// Генерация новых выходных данных.
        /// </summary>
        /// <param name="left">Левый канал выходного сигнала.</param>
        /// <param name="right">Правый канал выходного сигнала.</param>
        public void Process(out float left, out float right)
        {
            // Сглаживание значений параметров.
            masterVolumeFilter.Process();

            for (int i = 0; i < Downsampler.Order; ++i)
            {
                var voicesOutput     = VoicesManager.Process();
                var saturationOutput = DistortionManager.Process(voicesOutput);
                samplesForOversampling[i] = saturationOutput;
            }

            var output = (float)Downsampler.Process(samplesForOversampling);

            DelayManager.Process(output, output, out left, out right);
            left  *= masterVolume;
            right *= masterVolume;
        }
        /// <summary>
        /// Обработка новых входных данных.
        /// </summary>
        /// <param name="input">Входящий сигнал</param>
        /// <returns>Выходящий сигнал</returns>
        public float Process(float input)
        {
            ampFilter.Process();
            mixFilter.Process();
            asymmetryFilter.Process();

            input *= amp;
            input  = lowPass.Process(input);
            if (mode == DistortionMode.None)
            {
                return(dcBlocker.Process(input));
            }
            else
            {
                var output = currentDistortion.Process(input + dcOffset);
                output = dcBlocker.Process(output);
                return(dryCoeff * input + wetCoeff * output);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Обработка новых входных данных.
        /// </summary>
        /// <param name="inputL">Левый канал входного сигнала</param>
        /// <param name="inputR">Правый канал входного сигнала</param>
        /// <param name="outputL">Левый канал выходного сигнала.</param>
        /// <param name="outputR">Правый канал выходного сигнала.</param>
        public void Process(float inputL, float inputR, out float outputL, out float outputR)
        {
            // Сглаживание значений параметров.
            timeFilter.Process();
            mixFilter.Process();
            stereoAmountFilter.Process();

            if (mode == StereoMode.None)
            {
                outputL = inputL;
                outputR = inputR;
            }
            else
            {
                var lfoCoeff = 1 + MaxLfoDepth * lfoDepth * lfo.Process();
                currentDelay.SetDelay(Math.Min(maxDelay, delay * lfoCoeff));
                currentDelay.Process(inputL, inputR, out var wetL, out var wetR);
                outputL = dryCoeff * inputL + wetSign * wetCoeff * wetL;
                outputR = dryCoeff * inputL + wetSign * wetCoeff * wetR;
            }
        }
Beispiel #4
0
 /// <summary>
 /// Метод, выполняющий обновление всех сглаживающих фильтров.
 /// </summary>
 public void Process()
 {
     cutoffMultiplierFilter.Process();
 }
 /// <summary>
 /// Метод, выполняющий обновление всех сглаживающих фильтров.
 /// </summary>
 public void Process()
 {
     pitchMultiplierFilter.Process();
 }
Beispiel #6
0
 /// <summary>
 /// Метод, выполняющий обновление всех сглаживающих фильтров.
 /// </summary>
 public void Process()
 {
     envelopeAmplitudeFilter.Process();
 }