38 #ifndef __CU_AUDIO_FADER_H__
39 #define __CU_AUDIO_FADER_H__
41 #include "CUAudioNode.h"
124 Uint32
doFadeIn(
float* buffer, Uint32 frames);
145 Uint32
doFadeOut(
float* buffer, Uint32 frames);
172 #pragma mark Constructors
198 virtual bool init()
override;
212 virtual bool init(Uint8 channels, Uint32 rate)
override;
224 bool init(
const std::shared_ptr<AudioNode>& input);
232 virtual void dispose()
override;
235 #pragma mark Static Constructors
244 static std::shared_ptr<AudioFader>
alloc() {
245 std::shared_ptr<AudioFader> result = std::make_shared<AudioFader>();
246 return (result->init() ? result :
nullptr);
259 static std::shared_ptr<AudioFader>
alloc(Uint8 channels, Uint32 rate) {
260 std::shared_ptr<AudioFader> result = std::make_shared<AudioFader>();
261 return (result->init(channels,rate) ? result :
nullptr);
274 static std::shared_ptr<AudioFader>
alloc(
const std::shared_ptr<AudioNode>& input) {
275 std::shared_ptr<AudioFader> result = std::make_shared<AudioFader>();
276 return (result->init(input) ? result :
nullptr);
280 #pragma mark Fade In/Out Support
291 bool attach(
const std::shared_ptr<AudioNode>& node);
300 std::shared_ptr<AudioNode>
detach();
323 void fadeIn(
double duration);
351 void fadeOut(
double duration,
bool wrap=
false);
409 void fadePause(
double fadein,
double fadeout);
412 #pragma mark Overriden Methods
428 virtual bool pause()
override;
437 virtual bool resume()
override;
457 virtual Uint32
read(
float* buffer, Uint32 frames)
override;
477 virtual bool mark()
override;
488 virtual bool unmark()
override;
498 virtual bool reset()
override;
510 virtual Sint64
advance(Uint32 frames)
override;
532 virtual Sint64
setPosition(Uint32 position)
override;
554 virtual double setElapsed(
double time)
override;
virtual bool completed() override
virtual double setRemaining(double time) override
static std::shared_ptr< AudioFader > alloc()
Definition: CUAudioFader.h:244
static std::shared_ptr< AudioFader > alloc(const std::shared_ptr< AudioNode > &input)
Definition: CUAudioFader.h:274
virtual bool unmark() override
virtual bool resume() override
void fadePause(double duration)
virtual void dispose() override
virtual double getRemaining() const override
Uint32 doFadeIn(float *buffer, Uint32 frames)
virtual bool isPaused() override
std::mutex _mutex
Definition: CUAudioFader.h:74
virtual double getElapsed() const override
std::shared_ptr< AudioNode > detach()
Sint64 _inmark
Definition: CUAudioFader.h:78
Uint32 doFadePause(float *buffer, Uint32 frames)
virtual Uint32 read(float *buffer, Uint32 frames) override
virtual Sint64 getPosition() const override
bool _diphalf
Definition: CUAudioFader.h:100
Definition: CUAudioNode.h:93
Sint64 _dipmark
Definition: CUAudioFader.h:96
bool _outdone
Definition: CUAudioFader.h:88
virtual Sint64 setPosition(Uint32 position) override
virtual Sint64 advance(Uint32 frames) override
Uint64 _fadein
Definition: CUAudioFader.h:80
Uint64 _fadeout
Definition: CUAudioFader.h:86
static std::shared_ptr< AudioFader > alloc(Uint8 channels, Uint32 rate)
Definition: CUAudioFader.h:259
bool _outkeep
Definition: CUAudioFader.h:90
virtual double setElapsed(double time) override
void fadeIn(double duration)
virtual bool init() override
virtual bool reset() override
bool attach(const std::shared_ptr< AudioNode > &node)
Sint64 _outmark
Definition: CUAudioFader.h:84
Uint64 _dipstop
Definition: CUAudioFader.h:98
void fadeOut(double duration, bool wrap=false)
Uint32 doFadeOut(float *buffer, Uint32 frames)
bool _dipstart
Definition: CUAudioFader.h:102
std::shared_ptr< AudioNode > _input
Definition: CUAudioFader.h:71
Definition: CUAction.h:51
~AudioFader()
Definition: CUAudioFader.h:184
Definition: CUAudioFader.h:68
virtual bool mark() override
Uint64 _fadedip
Definition: CUAudioFader.h:94
virtual bool pause() override
std::shared_ptr< AudioNode > getInput()
Definition: CUAudioFader.h:307