17 double mix_level = 1.0;
20 MixSource(std::shared_ptr<AudioBuffer> buffer,
double level = 1.0,
bool once_flag =
false);
24 return !buffer_ref.expired() && !data.empty();
31 return !buffer_ref.expired() && buffer_ref.lock() == buffer;
36 return index < data.size();
41 return data[index] * mix_level;
69 bool register_source(std::shared_ptr<AudioBuffer> source,
double mix_level = 1.0,
bool once =
false);
72 void processing_function(std::shared_ptr<Buffer> buffer)
override;
79 bool remove_source(std::shared_ptr<AudioBuffer> buffer);
84 void validate_sources();
Central computational transformation interface for continuous buffer processing.
std::vector< MixSource > m_sources
Processes multiple audio buffers and mixes their data into a single output buffer.
std::weak_ptr< AudioBuffer > buffer_ref
bool matches_buffer(const std::shared_ptr< AudioBuffer > &buffer) const
double get_mixed_sample(size_t index) const
bool has_sample_at(size_t index) const
Represents a source audio buffer with its data and mixing properties.