MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Buffers::PolynomialProcessor Class Reference

Buffer processor that applies polynomial transformations to audio data. More...

#include <PolynomialProcessor.hpp>

+ Inheritance diagram for MayaFlux::Buffers::PolynomialProcessor:
+ Collaboration diagram for MayaFlux::Buffers::PolynomialProcessor:

Public Types

enum class  ProcessMode : uint8_t { SAMPLE_BY_SAMPLE , BATCH , WINDOWED , BUFFER_CONTEXT }
 Processing mode for the polynomial processor. More...
 

Public Member Functions

template<typename... Args>
requires std::constructible_from<Nodes::Generator::Polynomial, Args...>
void force_use_internal (Args &&... args)
 Forces the processor to use the internal polynomial node.
 
std::shared_ptr< Nodes::Generator::Polynomialget_polynomial () const
 Gets the polynomial node used for processing.
 
ProcessMode get_process_mode () const
 Gets the current processing mode.
 
size_t get_window_size () const
 Gets the current window size.
 
bool is_using_internal () const
 Checks if the processor is using the internal polynomial node.
 
void on_attach (const std::shared_ptr< Buffer > &buffer) override
 Called when the processor is attached to a buffer.
 
void on_detach (const std::shared_ptr< Buffer > &) override
 Called when the processor is detached from a buffer.
 
 PolynomialProcessor ()=default
 
 PolynomialProcessor (const std::shared_ptr< Nodes::Generator::Polynomial > &polynomial, ProcessMode mode=ProcessMode::SAMPLE_BY_SAMPLE, size_t window_size=64)
 Creates a new processor that applies polynomial transformations.
 
template<typename... Args>
requires std::constructible_from<Nodes::Generator::Polynomial, Args...>
 PolynomialProcessor (ProcessMode mode=ProcessMode::SAMPLE_BY_SAMPLE, size_t window_size=64, Args &&... args)
 Creates a new processor that applies polynomial transformations.
 
void processing_function (const std::shared_ptr< Buffer > &buffer) override
 Processes an audio buffer using the polynomial function.
 
void set_process_mode (ProcessMode mode)
 Sets the processing mode.
 
void set_window_size (size_t size)
 Sets the window size for windowed processing.
 
void update_polynomial_node (const std::shared_ptr< Nodes::Generator::Polynomial > &polynomial)
 Updates the polynomial node used for processing.
 
- Public Member Functions inherited from MayaFlux::Buffers::BufferProcessor
virtual ProcessingToken get_processing_token () const
 Gets the current processing token for this buffer.
 
virtual bool is_compatible_with (const std::shared_ptr< Buffer > &) const
 Checks if this processor can handle the specified buffer type.
 
void process (const std::shared_ptr< Buffer > &buffer)
 Applies a computational transformation to the data in the provided buffer.
 
virtual void set_processing_token (ProcessingToken token)
 Gets the preferred processing backend for this processor.
 
virtual ~BufferProcessor ()=default
 Virtual destructor for proper cleanup of derived classes.
 

Private Member Functions

void process_span (std::span< double > data)
 Processes a span of data using the polynomial function.
 

Private Attributes

std::shared_ptr< Nodes::Generator::Polynomialm_pending_polynomial
 Internal polynomial node.
 
std::shared_ptr< Nodes::Generator::Polynomialm_polynomial
 Polynomial node for processing.
 
ProcessMode m_process_mode {}
 Current processing mode.
 
bool m_use_internal {}
 Whether to use the buffer's internal previous state.
 
size_t m_window_size {}
 Window size for windowed processing.
 

Additional Inherited Members

- Protected Attributes inherited from MayaFlux::Buffers::BufferProcessor
ProcessingToken m_processing_token { ProcessingToken::AUDIO_BACKEND }
 

Detailed Description

Buffer processor that applies polynomial transformations to audio data.

This processor connects a Polynomial node to an AudioBuffer, allowing polynomial functions to be applied to buffer data. It supports all three polynomial modes (direct, recursive, and feedforward) and provides configuration options for how the polynomial is applied.

Definition at line 17 of file PolynomialProcessor.hpp.


The documentation for this class was generated from the following files: