CMLSDelay.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. ==============================================================================
  3. CMLSDelay.h
  4. Created: 3 May 2025 5:39:35pm
  5. Author: Luigi
  6. Ref. https://github.com/flipbug/simple-delay/tree/master
  7. ==============================================================================
  8. */
  9. #pragma once
  10. #include <JuceHeader.h>
  11. #define MAX_DELAY_LENGTH 1.0f // Maximum delay time in seconds
  12. #define MIN_FEEDBACK -100.0f
  13. #define MAX_FEEDBACK 0.0f
  14. class CMLSDelay : public juce::dsp::ProcessorBase
  15. {
  16. public:
  17. CMLSDelay();
  18. ~CMLSDelay() override;
  19. void reset() override;
  20. void prepare(const juce::dsp::ProcessSpec&) override;
  21. void process(const juce::dsp::ProcessContextReplacing<float>&) override;
  22. // Parameter getters and setters
  23. void setDryWet(float value);
  24. void setAmount(float value);
  25. const float getDryWet();
  26. const float getAmount();
  27. private:
  28. //Parameters
  29. float dryWetProp;
  30. float feedback;
  31. float delayLength;
  32. float amount;
  33. int maximumDelaySamples = 0;
  34. // Dry/Wet mixer
  35. juce::dsp::DryWetMixer<float> mixer;
  36. // DelayLine
  37. juce::dsp::DelayLine<float, juce::dsp::DelayLineInterpolationTypes::Linear> delayLine;
  38. juce::dsp::DelayLine<float, juce::dsp::DelayLineInterpolationTypes::Linear> delayLine2;
  39. // Range converters
  40. juce::NormalisableRange<float>* delayRange;
  41. juce::SmoothedValue<float, juce::ValueSmoothingTypes::Linear>* delaySmoothing;
  42. int lastDelayInSamples = 0;
  43. };