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 juce::AudioSampleBuffer emphasis_sample,
31 juce::AudioSampleBuffer normal_sample,
32 bool initially_enabled =
true,
33 float initial_volume = 1.f,
34 QObject * parent =
nullptr);
40 float volume ()
const {
return volume_.load (); }
41 void setVolume (
float volume)
46 volume_.store (volume);
47 Q_EMIT volumeChanged (volume);
49 Q_SIGNAL
void volumeChanged (
float volume);
51 bool enabled ()
const {
return enabled_.load (); }
52 void setEnabled (
bool enabled)
57 enabled_.store (enabled);
58 Q_EMIT enabledChanged (enabled);
60 Q_SIGNAL
void enabledChanged (
bool enabled);
67 const dsp::TempoMap &tempo_map)
noexcept override;
69 void custom_prepare_for_processing (
71 units::sample_rate_t sample_rate,
85 void find_and_queue_metronome_samples (
86 const dsp::TempoMap &tempo_map,
87 units::sample_t start_pos,
88 units::sample_t end_pos,
89 units::sample_t loffset);
94 void queue_metronome_countin (
97 const dsp::TempoMap &tempo_map);
104 void queue_metronome (
106 units::sample_t offset,
107 std::source_location loc = std::source_location::current ());
111 juce::AudioSampleBuffer emphasis_sample_buffer_;
114 juce::AudioSampleBuffer normal_sample_buffer_;
119 std::atomic<float> volume_;
121 std::atomic_bool enabled_;
void custom_process_block(EngineProcessTimeInfo time_nfo, const dsp::ITransport &transport, const dsp::TempoMap &tempo_map) noexcept override
Custom processor logic after processing all owned parameters.