/// <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); }
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); }