36 #ifndef __CU_AUDIO_MIXER_H__
37 #define __CU_AUDIO_MIXER_H__
38 #include "CUAudioNode.h"
64 std::shared_ptr<AudioNode>* _inputs;
74 std::atomic<float> _knee;
77 #pragma mark Constructors
111 virtual bool init()
override;
128 bool init(Uint8 width);
144 virtual bool init(Uint8 channels, Uint32 rate)
override;
160 bool init(Uint8 width, Uint8 channels, Uint32 rate);
168 virtual void dispose()
override;
170 #pragma mark Static Constructors
186 static std::shared_ptr<AudioMixer>
alloc(Uint8 width=8) {
187 std::shared_ptr<AudioMixer> result = std::make_shared<AudioMixer>();
188 return (result->init(width) ? result :
nullptr);
205 static std::shared_ptr<AudioMixer>
alloc(Uint8 width, Uint8 channels, Uint32 rate) {
206 std::shared_ptr<AudioMixer> result = std::make_shared<AudioMixer>();
207 return (result->init(width,channels, rate) ? result :
nullptr);
210 #pragma mark Audio Graph Methods
222 std::shared_ptr<AudioNode>
attach(Uint8 slot,
const std::shared_ptr<AudioNode>& input);
233 std::shared_ptr<AudioNode>
detach(Uint8 slot);
253 virtual Uint32
read(
float* buffer, Uint32 frames)
override;
255 #pragma mark Anticlipping Methods
virtual bool init() override
static std::shared_ptr< AudioMixer > alloc(Uint8 width, Uint8 channels, Uint32 rate)
Definition: CUAudioMixer.h:205
static std::shared_ptr< AudioMixer > alloc(Uint8 width=8)
Definition: CUAudioMixer.h:186
static const Uint8 DEFAULT_WIDTH
Definition: CUAudioMixer.h:79
Definition: CUAudioMixer.h:61
std::shared_ptr< AudioNode > attach(Uint8 slot, const std::shared_ptr< AudioNode > &input)
virtual Uint32 read(float *buffer, Uint32 frames) override
Definition: CUAudioNode.h:93
~AudioMixer()
Definition: CUAudioMixer.h:94
virtual void dispose() override
std::shared_ptr< AudioNode > detach(Uint8 slot)
Definition: CUAction.h:51
static const float DEFAULT_KNEE
Definition: CUAudioMixer.h:81