19class Metronome :
public QObject,
public AudioSampleProcessor
22 Q_PROPERTY (
float volume READ volume WRITE setVolume NOTIFY volumeChanged)
23 Q_PROPERTY (
bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
30 const dsp::TempoMap &tempo_map,
31 juce::AudioSampleBuffer emphasis_sample,
32 juce::AudioSampleBuffer normal_sample,
33 bool initially_enabled =
true,
34 float initial_volume = 1.f,
35 QObject * parent =
nullptr);
41 float volume ()
const {
return volume_.load (); }
42 void setVolume (
float volume)
47 volume_.store (volume);
48 Q_EMIT volumeChanged (volume);
50 Q_SIGNAL
void volumeChanged (
float volume);
52 bool enabled ()
const {
return enabled_.load (); }
53 void setEnabled (
bool enabled)
58 enabled_.store (enabled);
59 Q_EMIT enabledChanged (enabled);
61 Q_SIGNAL
void enabledChanged (
bool enabled);
69 void custom_prepare_for_processing (
71 units::sample_rate_t sample_rate,
83 void find_and_queue_metronome_samples (
84 units::sample_t start_pos,
85 units::sample_t end_pos,
86 units::sample_t loffset);
91 void queue_metronome_countin (
100 void queue_metronome (
102 units::sample_t offset,
103 std::source_location loc = std::source_location::current ());
106 const dsp::TempoMap &tempo_map_;
109 juce::AudioSampleBuffer emphasis_sample_buffer_;
112 juce::AudioSampleBuffer normal_sample_buffer_;
117 std::atomic<float> volume_;
119 std::atomic_bool enabled_;