LCOV - code coverage report
Current view: top level - src/audio/engine - metronome.h (source / functions) Coverage Total Hit
Test: merged.info Lines: 100.0 % 1 1
Test Date: 2026-06-07 15:51:50 Functions: 66.7 % 3 2

            Line data    Source code
       1              : #pragma once
       2              : 
       3              : #include <atomic>
       4              : 
       5              : #include "audio/engine/i_metronome.h"
       6              : #include "common.h"
       7              : 
       8              : namespace Amplitron {
       9              : 
      10              : class Metronome : public IMetronome {
      11              :    public:
      12              :     Metronome();
      13         1629 :     ~Metronome() override = default;
      14              : 
      15              :     void set_enabled(bool enabled) override;
      16              :     bool is_enabled() const override;
      17              :     void toggle() override;
      18              : 
      19              :     void set_bpm(int bpm) override;
      20              :     int get_bpm() const override;
      21              : 
      22              :     void set_volume(float volume) override;
      23              :     float get_volume() const override;
      24              : 
      25              :     void set_sample_rate(int sample_rate) override;
      26              :     void reset() override;
      27              : 
      28              :     // Generate next click sample
      29              :     float next_sample() override;
      30              : 
      31              :    private:
      32              :     void update_timing();
      33              : 
      34              :     std::atomic<bool> enabled_{false};
      35              :     std::atomic<int> bpm_{120};
      36              :     std::atomic<float> volume_{0.5f};
      37              :     std::atomic<int> sample_rate_{48000};
      38              : 
      39              :     // Audio thread states
      40              :     bool metronome_enabled_ = false;
      41              :     int metronome_bpm_ = 120;
      42              :     float metronome_volume_ = 0.5f;
      43              : 
      44              :     float metronome_volume_smoothed_ = 0.0f;
      45              :     float metronome_volume_smooth_alpha_ = 0.05f;
      46              :     float metronome_bpm_smoothed_ = 120.0f;
      47              :     float metronome_bpm_smooth_alpha_ = 0.05f;
      48              : 
      49              :     double metronome_samples_per_beat_ = 0.0;
      50              :     double metronome_sample_counter_ = 0.0;
      51              :     int metronome_click_samples_total_ = 0;
      52              :     int metronome_click_samples_remaining_ = 0;
      53              :     float metronome_click_phase_ = 0.0f;
      54              :     float metronome_click_phase_inc_ = 0.0f;
      55              :     float metronome_click_env_ = 0.0f;
      56              :     float metronome_click_decay_ = 0.0f;
      57              : };
      58              : 
      59              : }  // namespace Amplitron
        

Generated by: LCOV version 2.0-1