26class MAYAFLUX_API
Counter :
public Generator,
public std::enable_shared_from_this<Counter> {
33 Counter(uint32_t modulo = 16, int32_t step = 1);
41 Counter(
const std::shared_ptr<Node>& reset_trigger, uint32_t modulo = 16, int32_t step = 1);
45 double process_sample(
double input = 0.0)
override;
47 std::vector<double> process_batch(
unsigned int num_samples)
override;
56 void set_modulo(uint32_t modulo);
62 void set_step(int32_t step);
68 void set_reset_trigger(
const std::shared_ptr<Node>& trigger);
73 void clear_reset_trigger();
81 [[nodiscard]] uint32_t
get_count()
const {
return m_count; }
84 [[nodiscard]] uint32_t
get_modulo()
const {
return m_modulo; }
87 [[nodiscard]] int32_t
get_step()
const {
return m_step; }
108 bool remove_hook(
const NodeHook& callback)
override;
109 void remove_all_hooks()
override;
114 void save_state()
override;
115 void restore_state()
override;
118 void notify_tick(
double value)
override;
119 void update_context(
double value)
override;
123 uint32_t m_count { 0 };
124 uint32_t m_modulo { 16 };
125 int32_t m_step { 1 };
128 double m_last_trigger_value { 0.0 };
130 uint32_t m_saved_count { 0 };
131 double m_saved_last_trigger_value { 0.0 };
132 double m_saved_last_output { 0.0 };
134 bool m_wrapped {
false };
Specialized context for generator node callbacks.
Base context class for node callbacks.