32class MAYAFLUX_API
Impulse :
public Generator,
public std::enable_shared_from_this<Impulse> {
42 Impulse(
float frequency = 1,
double amplitude = 1,
float offset = 0);
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;
129 void set_frequency(
float frequency)
override;
146 inline void set_params(
float frequency,
double amplitude,
float offset)
148 m_amplitude = amplitude;
150 set_frequency(frequency);
160 void set_frequency_modulator(
const std::shared_ptr<Node>& modulator);
169 void set_amplitude_modulator(
const std::shared_ptr<Node>& modulator);
177 void clear_modulators();
188 void reset(
float frequency = 1,
float amplitude = 1.0F,
float offset = 0);
199 void on_impulse(
const NodeHook& callback);
209 bool remove_hook(
const NodeHook& callback)
override;
222 m_conditional_callbacks.clear();
223 m_impulse_callbacks.clear();
226 void save_state()
override;
227 void restore_state()
override;
238 void notify_tick(
double value)
override;
247 double m_phase_inc {};
271 void update_phase_increment(
double frequency);
280 double m_saved_phase {};
281 float m_saved_frequency {};
282 float m_saved_offset {};
283 double m_saved_phase_inc {};
284 double m_saved_last_output {};
286 bool m_state_saved {};
Base class for all signal and pattern generators in Maya Flux.
std::shared_ptr< Node > m_amplitude_modulator
Node that modulates the amplitude.
void printCurrent() override
Prints the current parameters of the impulse generator.
~Impulse() override=default
Virtual destructor.
void set_params(float frequency, double amplitude, float offset)
Sets all basic parameters at once.
std::vector< NodeHook > 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.
void printGraph() override
Prints a visual representation of the impulse train.
std::shared_ptr< Node > m_frequency_modulator
Node that modulates the frequency.
std::function< void(NodeContext &)> NodeHook
Callback function type for node processing events.