MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ supply_audio_buffer_to()

bool MayaFlux::Buffers::BufferSupplyMixing::supply_audio_buffer_to ( const std::shared_ptr< AudioBuffer > &  buffer,
ProcessingToken  token,
uint32_t  channel,
double  mix = 1.0 
)

Supplies an external audio buffer to a specific token and channel.

Parameters
bufferBuffer to supply
tokenProcessing domain
channelChannel index
mixMix level (default: 1.0)
Returns
True if the buffer was successfully supplied, false otherwise

The buffer data is added, mixed, and normalized at the end of the processing chain of the channel's root buffer, but before final processing. This is useful when one AudioBuffer needs to be supplied to multiple channels.

Definition at line 24 of file BufferSupplyMixing.cpp.

29{
30 if (!buffer) {
32 "BufferSupplyMixing: Invalid buffer for supplying");
33 return false;
34 }
35
36 if (buffer->get_channel_id() == channel) {
38 "BufferSupplyMixing: Buffer already has the correct channel ID {}", channel);
39 return false;
40 }
41
44 "BufferSupplyMixing: Token/channel combination out of range for supplying (token: {}, channel: {})",
45 static_cast<int>(token), channel);
46 return false;
47 }
48
50 auto root_buffer = unit.get_buffer(channel);
51 auto processing_chain = unit.get_chain(channel);
52
53 std::shared_ptr<MixProcessor> mix_processor = processing_chain->get_processor<MixProcessor>(root_buffer);
54
55 if (!mix_processor) {
56 mix_processor = std::make_shared<MixProcessor>();
57 processing_chain->add_processor(mix_processor, root_buffer);
58 }
59
60 return mix_processor->register_source(buffer, mix, false);
61}
#define MF_ERROR(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
static MayaFlux::Nodes::ProcessingToken token
Definition Timers.cpp:8
TokenUnitManager & m_unit_manager
Reference to the token/unit manager.
uint32_t get_audio_channel_count(ProcessingToken token) const
Gets the number of channels in an audio unit.
bool has_audio_unit(ProcessingToken token) const
Checks if an audio unit exists for the given token.
RootAudioUnit & get_audio_unit_mutable(ProcessingToken token)
Gets an existing audio unit without creating if missing (mutable)
@ BufferManagement
Buffer Management (Buffers::BufferManager, creating buffers)
@ Core
Core engine, backend, subsystems.
std::vector< double > mix(const std::vector< std::vector< double > > &streams)
Mix multiple data streams with equal weighting.
Definition Yantra.cpp:1019
std::shared_ptr< RootAudioBuffer > get_buffer(uint32_t channel) const

References MayaFlux::Journal::BufferManagement, MayaFlux::Journal::Core, MayaFlux::Buffers::TokenUnitManager::get_audio_channel_count(), MayaFlux::Buffers::TokenUnitManager::get_audio_unit_mutable(), MayaFlux::Buffers::RootAudioUnit::get_buffer(), MayaFlux::Buffers::TokenUnitManager::has_audio_unit(), m_unit_manager, MF_ERROR, MF_WARN, MayaFlux::mix(), and token.

+ Here is the call graph for this function: