LCOV - code coverage report
Current view: top level - src/audio/effects/delay_reverb - delay.h (source / functions) Coverage Total Hit
Test: merged.info Lines: 75.0 % 4 3
Test Date: 2026-06-07 15:51:50 Functions: 75.0 % 4 3

            Line data    Source code
       1              : #pragma once
       2              : 
       3              : // Tempo-independent ring-buffer delay line with feedback and wet/dry control.
       4              : // The circular buffer reads d samples behind the write head and writes
       5              : // x[n] + feedback*y_delay[n]; output is y[n]=(1-mix)*x[n]+mix*y_delay[n], with
       6              : // a one-pole tone filter shaping repeated echoes.
       7              : 
       8              : #include "audio/dsp/biquad.h"
       9              : #include "audio/effects/core/effect.h"
      10              : 
      11              : namespace Amplitron {
      12              : 
      13              : class Delay : public Effect {
      14              :    public:
      15              :     Delay();
      16              :     void process(float* buffer, int num_samples) override;
      17              :     void set_sample_rate(int sample_rate) override;
      18              :     void set_transport_state(float bpm) override;
      19              :     void reset() override;
      20          311 :     const char* name() const override { return "Delay"; }
      21            3 :     const char* type_id() const override { return "Delay"; }
      22          235 :     std::vector<EffectParam>& params() override { return params_; }
      23            0 :     const std::vector<EffectParam>& params() const override { return params_; }
      24              : 
      25              :    private:
      26              :     std::vector<EffectParam> params_;
      27              :     std::vector<float> delay_buffer_;
      28              :     int write_pos_ = 0;
      29              :     int max_delay_samples_ = 0;
      30              :     OnePole tone_lp_;
      31              : 
      32              :     // One-pole smoothed parameter states
      33              :     float smoothed_time_ms_ = 350.0f;
      34              :     float smoothed_feedback_ = 0.4f;
      35              :     float smoothed_tone_ = 0.7f;
      36              :     float smoothed_level_ = 0.5f;
      37              : 
      38              :     // shortcut if bpm hasn't changed
      39              :     float last_bpm_ = 0.0f;
      40              : };
      41              : 
      42              : }  // namespace Amplitron
        

Generated by: LCOV version 2.0-1