/// <summary>
        /// Обработчик изменения подстройки частоты в полутонах.
        /// </summary>
        /// <param name="value">Нормированное новое значение параметра.</param>
        private void SetPitchSemi(float value)
        {
            pitchSemi = (float)Math.Pow(2, Converters.ToSemitones(value) / 12.0);
            var target = pitchSemi * pitchFine;

            pitchMultiplierFilter.SetTarget(target);
        }
Beispiel #2
0
        /// <summary>
        /// Инициализирует параметры с помощью переданной фабрики параметров.
        /// </summary>
        /// <param name="factory">Фабрика параметров</param>
        protected override void InitializeParameters(ParameterFactory factory)
        {
            OversamplingOrderManager = factory.CreateParameterManager(
                name: "OVSMP",
                valueChangedHandler: SetOversamplingOrder);

            MasterVolumeManager = factory.CreateParameterManager(
                name: "VOL",
                defaultValue: 0.5f,
                valueChangedHandler: x => masterVolumeFilter.SetTarget(x));
            masterVolumeFilter = new ParameterFilter(UpdateMasterVolume, 1);
        }
Beispiel #3
0
        /// <summary>
        /// Инициализирует параметры с помощью переданной фабрики параметров.
        /// </summary>
        /// <param name="factory">Фабрика параметров</param>
        protected override void InitializeParameters(ParameterFactory factory)
        {
            // Параметр длительности стадии атаки.
            AttackTimeManager = factory.CreateParameterManager(
                name: "AT",
                defaultValue: 0.001f,
                valueChangedHandler: SetAttackTime);

            // Параметр длительности стадии спада.
            DecayTimeManager = factory.CreateParameterManager(
                name: "DT",
                valueChangedHandler: SetDecayTime);

            // Параметр уровня стадии поддержки.
            SustainLevelManager = factory.CreateParameterManager(
                name: "SL",
                defaultValue: 1,
                valueChangedHandler: SetSustainLevel);

            // Параметр длительности стадии затухания.
            ReleaseTimeManager = factory.CreateParameterManager(
                name: "RT",
                defaultValue: 0.001f,
                valueChangedHandler: SetReleaseTime);

            // Параметр изгиба стадии атаки.
            AttackCurveManager = factory.CreateParameterManager(
                name: "AC",
                defaultValue: 1,
                valueChangedHandler: SetAttackCurve);

            // Параметр изгиба стадий спада и затухания.
            DecayReleaseCurveManager = factory.CreateParameterManager(
                name: "DRC",
                valueChangedHandler: SetDecayReleaseCurve);

            // Параметр амплитуды огибающей.
            EnvelopeAmplitudeManager = factory.CreateParameterManager(
                name: "AMP",
                defaultValue: 1f,
                valueChangedHandler: x => envelopeAmplitudeFilter.SetTarget(x));
            envelopeAmplitudeFilter = new ParameterFilter(UpdateEnvelopeAmplitude, 1);
        }
        /// <summary>
        /// Инициализирует параметры с помощью переданной фабрики параметров.
        /// </summary>
        /// <param name="factory">Фабрика параметров</param>
        protected override void InitializeParameters(ParameterFactory factory)
        {
            // Параметр типа дисторшна.
            ModeManager = factory.CreateParameterManager(
                name: "TYPE",
                valueChangedHandler: SetMode);

            // Параметр силы эффекта.
            AmountManager = factory.CreateParameterManager(
                name: "AMNT",
                defaultValue: 0.5f,
                valueChangedHandler: SetAmount);

            // Параметр постоянного амплитудного сдвига.
            AsymmetryManager = factory.CreateParameterManager(
                name: "ASYM",
                defaultValue: 0.5f,
                valueChangedHandler: SetAsymmetryTarget);
            asymmetryFilter = new ParameterFilter(UpdateAsymmetry, 0);

            // Параметр уровня громкости входного сигнала.
            AmpManager = factory.CreateParameterManager(
                name: "AMP",
                defaultValue: 0.25f,
                valueChangedHandler: SetAmpTarget);
            ampFilter = new ParameterFilter(UpdateAmp, 1);

            // Параметр частоты среза фильтра низких частот для входного сигнала.
            LowPassCutoffManager = factory.CreateParameterManager(
                name: "LP",
                defaultValue: 1,
                valueChangedHandler: SetLowPassCutoff);

            // Параметр количества выходного и входного сигналов.
            MixManager = factory.CreateParameterManager(
                name: "MIX",
                defaultValue: 0.5f,
                valueChangedHandler: x => mixFilter.SetTarget(x));
            mixFilter = new ParameterFilter(UpdateMix, 0);
        }
Beispiel #5
0
        /// <summary>
        /// Обработчик изменения множителя частоты среза фильтра.
        /// </summary>
        /// <param name="value">Нормированное новое значение параметра.</param>
        private void SetCutoffMultiplierTarget(float value)
        {
            var mult = (float)Converters.ToFilterCutoffMultiplier(value);

            cutoffMultiplierFilter.SetTarget(mult);
        }
Beispiel #6
0
 /// <summary>
 /// Обработчик изменения параметра количества выходного и входного сигнала.
 /// </summary>
 /// <param name="target">Нормированное новое значение параметра.</param>
 private void SetMixTarget(float target)
 {
     mixFilter.SetTarget(target);
 }
Beispiel #7
0
 /// <summary>
 /// Обработчик изменения параметра стерео-эффекта.
 /// </summary>
 /// <param name="target">Нормированное новое значение параметра.</param>
 private void SetStereoAmountTarget(float target)
 {
     stereoAmountFilter.SetTarget((float)Converters.ToStereoAmount(target));
 }
Beispiel #8
0
 /// <summary>
 /// Обработчик изменения времени задержки.
 /// </summary>
 /// <param name="target">Нормированное новое значение параметра.</param>
 private void SetTimeTarget(float target)
 {
     timeFilter.SetTarget((float)Converters.ToDelayTime(target));
 }
 /// <summary>
 /// Обработчик изменения уровня входного сигнала.
 /// </summary>
 /// <param name="value">Нормированное новое значение параметра.</param>
 private void SetAmpTarget(float value)
 {
     ampFilter.SetTarget((float)Converters.ToDistortionAmp(value));
 }
 /// <summary>
 /// Обработчик изменения коэффициента постоянного амплитудного сдвига.
 /// </summary>
 /// <param name="value">Нормированное новое значение параметра.</param>
 private void SetAsymmetryTarget(float value)
 {
     asymmetryFilter.SetTarget(value);
 }