32class MAYAFLUX_API
Impulse :
public Generator,
public std::enable_shared_from_this<Impulse> {
54 Impulse(
const std::shared_ptr<Node>& frequency_modulator,
float frequency = 1,
double amplitude = 1,
float offset = 0);
66 Impulse(
float frequency,
const std::shared_ptr<Node>& amplitude_modulator,
double amplitude = 1,
float offset = 0);
79 Impulse(
const std::shared_ptr<Node>& frequency_modulator,
const std::shared_ptr<Node>& amplitude_modulator,
80 float frequency = 1,
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;
113 void set_frequency(
float frequency)
override;
132 m_amplitude = amplitude;
144 void set_frequency_modulator(
const std::shared_ptr<Node>& modulator);
153 void set_amplitude_modulator(
const std::shared_ptr<Node>& modulator);
161 void clear_modulators();
172 void reset(
float frequency = 1,
float amplitude = 1.0F,
float offset = 0);
206 m_conditional_callbacks.clear();
207 m_impulse_callbacks.clear();
210 void save_state()
override;
211 void restore_state()
override;
217 [[nodiscard]] std::vector<std::pair<ModulatorRole, std::shared_ptr<Node>>> get_modulators()
const override;
228 void notify_tick(
double value)
override;
237 double m_phase_inc {};
261 void update_phase_increment(
double frequency);
270 double m_saved_phase {};
271 float m_saved_frequency {};
272 float m_saved_offset {};
273 double m_saved_phase_inc {};
274 double m_saved_last_output {};
Core::GlobalInputConfig input
Base class for all signal and pattern generators in Maya Flux.
std::shared_ptr< Node > m_amplitude_modulator
Node that modulates the amplitude.
~Impulse() override=default
Virtual destructor.
void set_params(float frequency, double amplitude, float offset)
Sets all basic parameters at once.
std::vector< TypedHook< GeneratorContext > > m_impulse_callbacks
Collection of impulse-specific callback functions.
float get_frequency() const
Gets the current base frequency.
float m_offset
DC offset added to the output.
void remove_all_hooks() override
Removes all registered callbacks.
std::shared_ptr< Node > m_frequency_modulator
Node that modulates the frequency.
std::function< void(ContextT &)> TypedHook
Callback function type for node processing events, parameterised on context type.