private void applyEffectButton_Click(object sender, EventArgs e) { IFilter effect; if (tremoloRadioButton.Checked) { var freq = float.Parse(tremoloFrequencyTextBox.Text); var index = float.Parse(tremoloIndexTextBox.Text); effect = new TremoloEffect(freq, index); } else if (overdriveRadioButton.Checked) { effect = new OverdriveEffect(); } else if (distortionRadioButton.Checked) { var gain = float.Parse(distortionGainTextBox.Text); var mix = float.Parse(distortionMixTextBox.Text); effect = new DistortionEffect(gain, mix); } else if (tubeDistortionRadioButton.Checked) { var gain = float.Parse(distortionGainTextBox.Text); var mix = float.Parse(distortionMixTextBox.Text); var dist = float.Parse(distTextBox.Text); var q = float.Parse(qTextBox.Text); effect = new TubeDistortionEffect(gain, mix, q, dist); } else if (echoRadioButton.Checked) { var delay = float.Parse(echoDelayTextBox.Text); var decay = float.Parse(echoDecayTextBox.Text); effect = new EchoEffect(delay, decay); } else if (delayRadioButton.Checked) { var delay = float.Parse(echoDelayTextBox.Text); var decay = float.Parse(echoDecayTextBox.Text); effect = new DelayEffect(delay, decay); } else if (wahwahRadioButton.Checked) { var lfoFrequency = float.Parse(lfoFreqTextBox.Text); var minFrequency = float.Parse(minFreqTextBox.Text); var maxFrequency = float.Parse(maxFreqTextBox.Text); var q = float.Parse(lfoQTextBox.Text); effect = new WahwahEffect(lfoFrequency, minFrequency, maxFrequency, q); } else if (pitchShiftRadioButton.Checked) { var shift = float.Parse(pitchShiftTextBox.Text); effect = pitchShiftCheckBox.Checked ? new PitchShiftEffect(shift) : null; } else { var lfoFrequency = float.Parse(lfoFreqTextBox.Text); var minFrequency = float.Parse(minFreqTextBox.Text); var maxFrequency = float.Parse(maxFreqTextBox.Text); var q = float.Parse(lfoQTextBox.Text); effect = new PhaserEffect(lfoFrequency, minFrequency, maxFrequency, q); } _filteredSignal = effect != null? effect.ApplyTo(_signal, FilteringOptions.Auto) : Operation.TimeStretch(_signal, float.Parse(pitchShiftTextBox.Text)); signalAfterFilteringPanel.Signal = _filteredSignal; spectrogramAfterFilteringPanel.Spectrogram = _stft.Spectrogram(_filteredSignal.Samples); }
private void applyEffectButton_Click(object sender, EventArgs e) { AudioEffect effect; var fs = _signal.SamplingRate; var winSize = int.Parse(winSizeTextBox.Text); var hopSize = int.Parse(hopSizeTextBox.Text); var tsm = (TsmAlgorithm)tsmComboBox.SelectedIndex; var shift = float.Parse(pitchShiftTextBox.Text); if (tremoloRadioButton.Checked) { var freq = float.Parse(tremoloFrequencyTextBox.Text); var index = float.Parse(tremoloIndexTextBox.Text); effect = new TremoloEffect(fs, freq, index); } else if (overdriveRadioButton.Checked) { var gain = float.Parse(distortionGainTextBox.Text); effect = new OverdriveEffect(gain); } else if (distortionRadioButton.Checked) { var gain = float.Parse(distortionGainTextBox.Text); effect = new DistortionEffect(gain); } else if (tubeDistortionRadioButton.Checked) { var gain = float.Parse(distortionGainTextBox.Text); var mix = float.Parse(wetTextBox.Text); var dist = float.Parse(distTextBox.Text); var q = float.Parse(qTextBox.Text); effect = new TubeDistortionEffect(gain, mix, q, dist); } else if (echoRadioButton.Checked) { var delay = float.Parse(echoDelayTextBox.Text); var decay = float.Parse(echoDecayTextBox.Text); effect = new EchoEffect(fs, delay, decay); } else if (delayRadioButton.Checked) { var delay = float.Parse(echoDelayTextBox.Text); var decay = float.Parse(echoDecayTextBox.Text); effect = new DelayEffect(fs, delay, decay); } else if (wahwahRadioButton.Checked) { var lfoFrequency = float.Parse(lfoFreqTextBox.Text); var minFrequency = float.Parse(minFreqTextBox.Text); var maxFrequency = float.Parse(maxFreqTextBox.Text); var q = float.Parse(lfoQTextBox.Text); effect = new WahwahEffect(fs, lfoFrequency, minFrequency, maxFrequency, q); //effect = new AutowahEffect(fs, minFrequency, maxFrequency, q); } else if (flangerRadioButton.Checked) { var lfoFrequency = float.Parse(lfoFreqTextBox.Text); var width = float.Parse(widthTextBox.Text); effect = new FlangerEffect(fs, lfoFrequency, width);//, 0.7f, 0.5f); //effect = new VibratoEffect(fs, lfoFrequency, width); //effect = new ChorusEffect(fs, new[] { 1f, 1f, 1f, 1f }, new[] { 0.004f, 0.0042f, 0.0045f, 0.0038f }); } else if (pitchShiftRadioButton.Checked) { //effect = pitchShiftCheckBox.Checked ? new PitchShiftVocoderEffect(fs, shift, winSize, hopSize) : null; effect = pitchShiftCheckBox.Checked ? new PitchShiftEffect(shift, winSize, hopSize, tsm) : null; //effect = pitchShiftCheckBox.Checked ? new WhisperEffect(hopSize, winSize) : null; //effect = new MorphEffect(hopSize, winSize); } else { var lfoFrequency = float.Parse(lfoFreqTextBox.Text); var minFrequency = float.Parse(minFreqTextBox.Text); var maxFrequency = float.Parse(maxFreqTextBox.Text); var q = float.Parse(lfoQTextBox.Text); var lfo = new SawtoothBuilder() .SetParameter("freq", lfoFrequency) .SetParameter("min", minFrequency) .SetParameter("max", maxFrequency) .SampledAt(_signal.SamplingRate); effect = new PhaserEffect(fs, lfo, q); } if (effect != null) { effect.Wet = float.Parse(wetTextBox.Text); effect.Dry = float.Parse(dryTextBox.Text); _filteredSignal = effect.ApplyTo(_signal, FilteringMethod.Auto); //DiscreteSignal morph; //using (var stream = new FileStream(@"D:\Docs\Research\DATABASE\Dictor1\wav\21.wav", FileMode.Open)) //{ // var waveFile = new WaveFile(stream); // morph = waveFile[Channels.Average]; //} //if (morph.SamplingRate != _signal.SamplingRate) //{ // morph = Operation.Resample(morph, _signal.SamplingRate); //} //_filteredSignal = ((MorphEffect)effect).ApplyTo(_signal, morph); } else { _filteredSignal = //Operation.TimeStretch(_signal, shift, tsm); Operation.TimeStretch(_signal, shift, winSize, hopSize, tsm); } signalAfterFilteringPanel.Signal = _filteredSignal; spectrogramAfterFilteringPanel.Spectrogram = _stft.Spectrogram(_filteredSignal.Samples); }