LCOV - code coverage report
Current view: top level - src/audio/effects - chorus.h (source / functions) Coverage Total Hit
Test: merged.info Lines: 100.0 % 3 3
Test Date: 2026-06-03 09:13:19 Functions: 100.0 % 3 3

            Line data    Source code
       1              : #pragma once
       2              : 
       3              : // Modulated delay effect that thickens the signal with chorus movement.
       4              : // The wet tap is y_w[n] = x[n - D(n)] with D(n)=D0 + A*sin(2*pi*f_lfo*n/Fs);
       5              : // fractional delay reads use interpolation, then y[n]=(1-mix)*x[n]+mix*y_w[n].
       6              : 
       7              : #include "audio/effects/effect.h"
       8              : 
       9              : namespace Amplitron {
      10              : 
      11              : class Chorus : public Effect {
      12              : public:
      13              :     Chorus();
      14              :     void process(float* buffer, int num_samples) override;
      15              :     void process_stereo(float* left, float* right, int num_samples) override;
      16              :     void set_sample_rate(int sample_rate) override;
      17              :     void set_transport_state(float bpm) override;
      18              :     void reset() override;
      19           80 :     const char* name() const override { return "Chorus"; }
      20            3 :     const char* type_id() const override { return "Chorus"; }
      21           89 :     std::vector<EffectParam>& params() override { return params_; }
      22              : 
      23              : private:
      24              :     std::vector<EffectParam> params_;
      25              :     std::vector<float> delay_buffer_;
      26              :     int write_pos_ = 0;
      27              :     float lfo_phase_ = 0.0f;
      28              :     int max_delay_samples_ = 0;
      29              :     float last_bpm_=0.0f; //shortcut if bpm not changed.
      30              :     float smoothed_rate_ = 1.5f;
      31              : };
      32              : 
      33              : } // namespace Amplitron
        

Generated by: LCOV version 2.0-1