42 Sine(
float frequency = 440,
double amplitude = 1,
float offset = 0);
54 Sine(
const std::shared_ptr<Node>& frequency_modulator,
float frequency = 440,
double amplitude = 1,
float offset = 0);
66 Sine(
float frequency,
const std::shared_ptr<Node>& amplitude_modulator,
double amplitude = 1,
float offset = 0);
79 Sine(
const std::shared_ptr<Node>& frequency_modulator,
const std::shared_ptr<Node>& amplitude_modulator,
80 float frequency = 440,
double amplitude = 1,
float offset = 0);
95 double process_sample(
double input = 0.)
override;
105 std::vector<double> process_batch(
unsigned int num_samples)
override;
114 void set_frequency(
float frequency)
override;
133 m_amplitude = amplitude;
145 void set_frequency_modulator(
const std::shared_ptr<Node>& modulator);
154 void set_amplitude_modulator(
const std::shared_ptr<Node>& modulator);
162 void clear_modulators();
173 void reset(
float frequency = 440,
double amplitude = 0.5,
float offset = 0);
175 void save_state()
override;
176 void restore_state()
override;
182 [[nodiscard]] std::vector<std::pair<ModulatorRole, std::shared_ptr<Node>>> get_modulators()
const override;
191 double m_phase_inc {};
215 void update_phase_increment(
double frequency);
217 double m_saved_phase {};
218 float m_saved_frequency {};
219 float m_saved_offset {};
220 double m_saved_phase_inc {};
221 double m_saved_last_output {};