Exemple #1
0
        /// <summary>
        /// Method for detecting the envelope of a signal
        /// </summary>
        /// <param name="signal">Signal</param>
        /// <param name="lowpassCutoff">LP filter cutoff frequency</param>
        /// <returns></returns>
        public static DiscreteSignal Envelope(DiscreteSignal signal, float lowpassCutoff = 0.05f)
        {
            var envelope = FullRectify(signal);

            var lowpassFilter = new LowPassFilter(lowpassCutoff);
            var smoothed      = lowpassFilter.ApplyTo(envelope);

            return(smoothed);
        }
Exemple #2
0
        private DiscreteSignal ProcessDistortion(DiscreteSignal signal, int gain, int distortion)
        {
            var input  = signal.Samples;
            var output = new float[input.Length];


            for (var i = 0; i < signal.Length; i++)
            {
                // Process gain
                output[i] = Gain(input[i], gain);

                // Process distortion
                output[i] = Dist(output[i], distortion);
            }

            // Process lowpass filter
            var            freq      = 10000.0 /* Hz */ / signal.SamplingRate;
            LowPassFilter  lpf       = new LowPassFilter(freq);
            DiscreteSignal processed = new DiscreteSignal(signal.SamplingRate, output);
            DiscreteSignal res       = lpf.ApplyTo(processed);

            return(res);
        }