/// <summary> /// Обработка новых входных данных. /// </summary> /// <param name="input">Входной сигнал.</param> /// <param name="cutoffModulation">Модуляция частоты среза фильтра.</param> /// <returns>Выходной сигнал.</returns> public float Process(float input, float cutoffModulation = 0) { var modulatedCutoff = cutoff; modulatedCutoff *= 1 + FilterModulationLookup[(int)(999 * cutoffModulation)]; if (modulatedCutoff > 20000) { modulatedCutoff = 20000; } filter.SetCutoff(modulatedCutoff); return(filter.Process(input)); }
/// <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); } }