7 , m_feedback_amount(feedback)
8 , m_feed_samples(feed_samples)
32 : m_feedback_amount(feedback)
33 , m_feed_samples(feed_samples)
34 , m_using_internal_buffer(false)
40 auto audio_buffer = std::dynamic_pointer_cast<AudioBuffer>(buffer);
44 std::vector<double>* previous_data =
nullptr;
45 auto& buffer_data = audio_buffer->get_data();
47 if (
auto feedback_buffer = std::dynamic_pointer_cast<FeedbackBuffer>(buffer)) {
48 previous_data = &feedback_buffer->get_previous_buffer();
58 for (
double& sample : buffer_data) {
65 output_sample = (output_sample + (*previous_data)[next_index]) * 0.5;
68 sample = output_sample;
78 if (
auto feedback_buffer = std::dynamic_pointer_cast<FeedbackBuffer>(buffer)) {
93 m_previous_buffer.resize(std::dynamic_pointer_cast<AudioBuffer>(buffer)->get_num_samples(), 0.0);
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.
void process_default() override
Processes this buffer using its default processor.
FeedbackBuffer(uint32_t channel_id=0, uint32_t num_samples=512, float feedback=0.5F, uint32_t feed_samples=512)
Creates a new feedback buffer.
std::vector< double > m_previous_buffer
Storage for the previous system state.
float m_feedback_amount
Feedback coefficient (0.0-1.0)
std::shared_ptr< BufferProcessor > create_default_processor() override
Creates the default processor for this buffer type.
FeedbackProcessor(float feedback=0.5F, uint32_t feed_samples=512)
Creates a new feedback processor.
bool m_using_internal_buffer
Flag indicating whether to use the buffer's internal previous state.
uint32_t m_feed_samples
Number of samples to feed back.
void on_detach(std::shared_ptr< Buffer > buffer) override
Called when this processor is detached from a buffer.
std::vector< double > m_previous_buffer
Storage for the previous system state.
void processing_function(std::shared_ptr< Buffer > buffer) override
Processes a buffer by applying the recursive algorithm.
void on_attach(std::shared_ptr< Buffer > buffer) override
Called when this processor is attached to a buffer.
float m_feedback_amount
Feedback coefficient (0.0-1.0)