8 : m_node(
std::move(node))
10 , m_clear_before_process(clear_before_process)
22 auto& buffer_data = std::dynamic_pointer_cast<AudioBuffer>(buffer)->get_data();
25 if (
auto node_buffer = std::dynamic_pointer_cast<NodeBuffer>(buffer)) {
26 should_clear = node_buffer->get_clear_before_process();
35 }
catch (
const std::exception& e) {
42 std::vector<double> output(num_samples);
43 const auto& state =
m_node->m_state.load();
46 for (
size_t i = 0; i < num_samples; i++) {
47 output[i] =
m_node->process_sample(0.F);
51 for (
size_t i = 0; i < num_samples; i++) {
52 output[i] =
m_node->process_sample(0.F);
62 const auto& state =
m_node->m_state.load();
64 for (
double& i : buffer_data) {
71 for (
double& i : buffer_data) {
77NodeBuffer::NodeBuffer(uint32_t channel_id, uint32_t num_samples, std::shared_ptr<Nodes::Node> source,
bool clear_before_process)
79 , m_source_node(
std::move(source))
80 , m_clear_before_process(clear_before_process)
#define MF_RT_ERROR(comp, ctx,...)
virtual void clear() override
Resets all audio samples in the buffer to silence.
std::shared_ptr< BufferProcessor > m_default_processor
Default audio transformation processor for this buffer.
Concrete audio implementation of the Buffer interface for double-precision audio data.
NodeBuffer(uint32_t channel_id, uint32_t num_samples, std::shared_ptr< Nodes::Node > source, bool clear_before_process=true)
Creates a new buffer connected to a computational node.
std::shared_ptr< BufferProcessor > create_default_processor() override
Creates the default processor for this buffer type.
std::shared_ptr< Nodes::Node > m_source_node
Source node that generates sequential data values.
bool m_clear_before_process
Whether to reset the buffer before adding node output.
void process_default() override
Processes this buffer using its default processor.
bool m_clear_before_process
Whether to reset the buffer before adding node output.
void update_buffer(std::vector< double > &buffer_data)
Updates the buffer data with node output.
NodeSourceProcessor(std::shared_ptr< Nodes::Node > node, float mix=0.5f, bool clear_before_process=true)
Creates a new processor that connects a computational node to data buffers.
float m_mix
Interpolation coefficient between existing and incoming data (0.0-1.0)
std::shared_ptr< Nodes::Node > m_node
Source node that generates sequential data values.
std::vector< double > get_node_data(uint32_t num_samples)
Gets a batch of data from the node.
void processing_function(std::shared_ptr< Buffer > buffer) override
Captures node computation output into a buffer.
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Buffers
Buffers, Managers, processors and processing chains.
@ INACTIVE
Engine is not processing this node.
std::vector< double > mix(const std::vector< std::vector< double > > &streams)
Mix multiple data streams with equal weighting.