38 template <
typename... Args>
41 : m_polynomial(
std::make_shared<Nodes::Generator::Polynomial>(
std::forward<Args>(args)...))
42 , m_process_mode(mode)
43 , m_window_size(window_size)
44 , m_use_internal(true)
57 PolynomialProcessor(
const std::shared_ptr<Nodes::Generator::Polynomial>& polynomial, ProcessMode mode = ProcessMode::SAMPLE_BY_SAMPLE,
size_t window_size = 64);
66 void processing_function(std::shared_ptr<Buffer> buffer)
override;
72 void on_attach(std::shared_ptr<Buffer> buffer)
override;
78 inline void on_detach(std::shared_ptr<Buffer>)
override { }
108 [[nodiscard]]
inline std::shared_ptr<Nodes::Generator::Polynomial>
get_polynomial()
const {
return m_polynomial; }
127 template <
typename... Args>
131 m_pending_polynomial = std::make_shared<Nodes::Generator::Polynomial>(std::forward<Args>(args)...);
143 m_pending_polynomial = polynomial;
149 size_t m_window_size {};
151 bool m_use_internal {};
158 void process_span(std::span<double> data);
Central computational transformation interface for continuous buffer processing.
void update_polynomial_node(const std::shared_ptr< Nodes::Generator::Polynomial > &polynomial)
Updates the polynomial node used for processing.
ProcessMode get_process_mode() const
Gets the current processing mode.
void on_detach(std::shared_ptr< Buffer >) override
Called when the processor is detached from a buffer.
void set_process_mode(ProcessMode mode)
Sets the processing mode.
PolynomialProcessor(ProcessMode mode=ProcessMode::SAMPLE_BY_SAMPLE, size_t window_size=64, Args &&... args)
Creates a new processor that applies polynomial transformations.
bool is_using_internal() const
Checks if the processor is using the internal polynomial node.
ProcessMode
Processing mode for the polynomial processor.
std::shared_ptr< Nodes::Generator::Polynomial > get_polynomial() const
Gets the polynomial node used for processing.
PolynomialProcessor()=default
void force_use_internal(Args &&... args)
Forces the processor to use the internal polynomial node.
std::shared_ptr< Nodes::Generator::Polynomial > m_pending_polynomial
Internal polynomial node.
void set_window_size(size_t size)
Sets the window size for windowed processing.
size_t get_window_size() const
Gets the current window size.
std::shared_ptr< Nodes::Generator::Polynomial > m_polynomial
Polynomial node for processing.
Buffer processor that applies polynomial transformations to audio data.
Generator that produces values based on polynomial functions.