29 if (source_ ==
source)
return;
30 if (source_ && prepared_) source_->release_resources();
33 last_sample_rate_ = 0.0;
41 float gain()
const {
return gain_; }
50 fill_silence(out, num_samples);
54 || sample_rate != last_sample_rate_
55 || num_samples > last_block_size_) {
56 source_->prepare_to_play(num_samples, sample_rate);
57 last_sample_rate_ = sample_rate;
58 last_block_size_ = num_samples;
61 source_->get_next_audio_block(out, 0, num_samples);
63 for (std::size_t ch = 0; ch < out.
num_channels(); ++ch) {
65 for (
int i = 0; i < num_samples; ++i) ptr[i] *= gain_;
73 if (source_ && prepared_) source_->release_resources();
75 last_sample_rate_ = 0.0;
81 for (std::size_t ch = 0; ch < out.
num_channels(); ++ch) {
83 for (
int i = 0; i < n; ++i) ptr[i] = 0.0f;
87 AudioSource* source_ =
nullptr;
89 bool prepared_ =
false;
90 double last_sample_rate_ = 0.0;
91 int last_block_size_ = 0;
void set_gain(float gain)
Overall gain applied after the source's render. Default 1.0.
Definition source_player.hpp:40
void release()
Manually release the source's resources (mirrors what set_source(nullptr) does for the prior source).
Definition source_player.hpp:72
AudioSource * source() const
Definition source_player.hpp:37
void audio_callback(BufferView< float > out, int num_samples, double sample_rate)
Call from the host's audio callback.
Definition source_player.hpp:45
void set_source(AudioSource *source)
Bind a source (or nullptr to detach).
Definition source_player.hpp:28
float gain() const
Definition source_player.hpp:41
AudioSourcePlayer()=default
Abstract base — host-callable audio source.
Definition source.hpp:33
Non-owning view over multi-channel audio sample data.
Definition buffer.hpp:30
std::size_t num_channels() const
Definition buffer.hpp:83
SampleType * channel_ptr(std::size_t index)
Raw pointer to one channel's sample data.
Definition buffer.hpp:68
Definition analyzer_provider.hpp:12
Audio source hierarchy — abstract bases for streaming audio playback graphs.