  | 
  
    CUGL 1.3
    
   Cornell University Game Library 
   | 
 
 
 
 
   45 #ifndef __CU_AUDIO_CHANNELS_H__ 
   46 #define __CU_AUDIO_CHANNELS_H__ 
   47 #include <cugl/audio/CUAudioManager.h> 
   48 #include <cugl/audio/CUSound.h> 
   49 #include <cugl/util/CUTimestamp.h> 
   50 #include <unordered_map> 
   57 #define DEFAULT_FADE     0.015 
  115 #pragma mark Sound State 
  134     unsigned int _capacity;
 
  136     std::unordered_map<std::string,std::shared_ptr<audio::AudioFader>> _effects;
 
  138     std::deque<std::string> _equeue;
 
  143     std::shared_ptr<audio::AudioOutput> _output;
 
  145     std::shared_ptr<audio::AudioMixer>  _mixer;
 
  147     std::vector<std::shared_ptr<audio::AudioScheduler>> _channel;
 
  149     std::vector<std::shared_ptr<audio::AudioFader>>     _chfader;
 
  152     std::deque<std::shared_ptr<audio::AudioFader>>  _fadePool;
 
  154     std::deque<std::shared_ptr<audio::AudioPanner>> _pan1Pool;
 
  156     std::deque<std::shared_ptr<audio::AudioPanner>> _pan2Pool;
 
  169     std::function<void(
Sound* asset, 
bool status)> _musicCB;
 
  182     std::function<void(
const std::string& key , 
bool status)> _soundCB;
 
  185 #pragma mark Constructors (Private) 
  223     bool init(Uint32 slots);
 
  235 #pragma mark Internal Helpers 
  244     void removeKey(std::string key);
 
  258     std::shared_ptr<audio::AudioFader> wrapInstance(
const std::shared_ptr<Sound>& asset);
 
  272     std::shared_ptr<Sound> accessInstance(
const std::shared_ptr<audio::AudioNode>& node) 
const;
 
  286     std::shared_ptr<Sound> disposeInstance(
const std::shared_ptr<audio::AudioNode>& node);
 
  299     void gcMusic(
const std::shared_ptr<audio::AudioNode>& sound, 
bool status);
 
  314     void gcEffect(
const std::shared_ptr<audio::AudioNode>& sound, 
bool status);
 
  317 #pragma mark Static Accessors 
  357     static void start(Uint32 slots);
 
  388     static void start(Uint32 channels, Uint32 buffer);
 
  401 #pragma mark Music Playback 
  426     void playMusic(
const std::shared_ptr<Sound>& music, 
bool loop=
false,
 
  427                    float volume=-1.0f, 
float fade=0.0f);
 
  671 #pragma mark Music Queue Management 
  696     void queueMusic(
const std::shared_ptr<Sound>& music, 
bool loop=
false,
 
  697                     float volume=-1.0f, 
float fade=0.0f);
 
  775 #pragma mark Sound Effect Management 
  800     bool playEffect(
const std::string& key, 
const std::shared_ptr<Sound>& sound,
 
  801                     bool loop=
false, 
float volume=-1.0f, 
bool force=
false);
 
  827     bool playEffect(
const char* key, 
const std::shared_ptr<Sound>& sound,
 
  828                     bool loop=
false, 
float volume=1.0f, 
bool force=
false) {
 
  829         return playEffect(std::string(key),sound,loop,volume,force);
 
  843         return (
size_t)_capacity-_effects.size();
 
  880         return _effects.find(key) != _effects.end();
 
 1279     void stopEffect(
const std::string& key,
float fade=DEFAULT_FADE);
 
 1316     void pauseEffect(
const std::string& key,
float fade=DEFAULT_FADE);
 
 1402         _soundCB = callback;
 
 1420 #pragma mark Global Management 
 1434     void stopAll(
float fade=DEFAULT_FADE);
 
 1450     void pauseAll(
float fade=DEFAULT_FADE);
 
  
float getEffectDuration(const char *key) const
Definition: CUAudioChannels.h:1126
 
void pauseAll(float fade=DEFAULT_FADE)
 
void stopEffect(const char *key, float fade=DEFAULT_FADE)
Definition: CUAudioChannels.h:1298
 
void resumeEffect(std::string key)
 
float getMusicRemaining() const
 
float getEffectVolume(const char *key) const
Definition: CUAudioChannels.h:988
 
bool playEffect(const char *key, const std::shared_ptr< Sound > &sound, bool loop=false, float volume=1.0f, bool force=false)
Definition: CUAudioChannels.h:827
 
void setEffectRemaining(const char *key, float time)
Definition: CUAudioChannels.h:1258
 
void setMusicVolume(float volume)
 
void setEffectRemaining(const std::string &key, float time)
 
float getEffectVolume(const std::string &key) const
 
float getEffectElapsed(const std::string &key) const
 
static AudioChannels * get()
Definition: CUAudioChannels.h:327
 
void setEffectLoop(const char *key, bool loop)
Definition: CUAudioChannels.h:962
 
Definition: CUAudioChannels.h:114
 
const std::vector< Sound * > getMusicQueue() const
 
float getMusicPan() const
 
const Sound * currentEffect(const std::string &key) const
 
std::function< void(const std::string &key, bool)> getEffectListener() const
Definition: CUAudioChannels.h:1415
 
void setMusicElapsed(float time)
 
size_t getAvailableChannels() const
Definition: CUAudioChannels.h:842
 
void playMusic(const std::shared_ptr< Sound > &music, bool loop=false, float volume=-1.0f, float fade=0.0f)
 
const Sound * currentMusic() const
 
void pauseEffect(const std::string &key, float fade=DEFAULT_FADE)
 
bool isEffectLoop(const std::string &key) const
 
State getEffectState(const std::string &key) const
 
void setEffectPan(const std::string &key, float pan)
 
void setMusicLoop(bool loop)
 
float getEffectRemaining(const std::string &key) const
 
State getMusicState() const
 
float getEffectPan(const std::string &key) const
 
float getMusicDuration() const
 
bool isEffectLoop(const char *key) const
Definition: CUAudioChannels.h:940
 
void stopAllEffects(float fade=DEFAULT_FADE)
 
void setEffectLoop(const std::string &key, bool loop)
 
void setEffectElapsed(const std::string &key, float time)
 
void setOverlap(double time)
 
State
Definition: CUAudioChannels.h:120
 
void stopEffect(const std::string &key, float fade=DEFAULT_FADE)
 
void setMusicRemaining(float time)
 
State getEffectState(const char *key) const
Definition: CUAudioChannels.h:868
 
void stopMusic(float fade=DEFAULT_FADE)
 
void pauseEffect(const char *key, float fade=DEFAULT_FADE)
Definition: CUAudioChannels.h:1332
 
void setEffectPan(const char *key, float pan)
Definition: CUAudioChannels.h:1096
 
bool playEffect(const std::string &key, const std::shared_ptr< Sound > &sound, bool loop=false, float volume=-1.0f, bool force=false)
 
void queueMusic(const std::shared_ptr< Sound > &music, bool loop=false, float volume=-1.0f, float fade=0.0f)
 
void setEffectElapsed(const char *key, float time)
Definition: CUAudioChannels.h:1192
 
float getMusicVolume() const
 
void resumeEffect(const char *key)
Definition: CUAudioChannels.h:1352
 
void setMusicPan(float pan)
 
bool isActiveEffect(const std::string &key) const
Definition: CUAudioChannels.h:879
 
float getEffectElapsed(const char *key) const
Definition: CUAudioChannels.h:1160
 
std::function< void(Sound *, bool)> getMusicListener() const
Definition: CUAudioChannels.h:666
 
void pauseAllEffects(float fade=DEFAULT_FADE)
 
const Sound * currentEffect(const char *key) const
Definition: CUAudioChannels.h:916
 
bool isActiveEffect(const char *key) const
Definition: CUAudioChannels.h:890
 
float getMusicElapsed() const
 
float getEffectRemaining(const char *key) const
Definition: CUAudioChannels.h:1226
 
float getEffectPan(const char *key) const
Definition: CUAudioChannels.h:1056
 
void setEffectListener(std::function< void(const std::string &key, bool)> callback)
Definition: CUAudioChannels.h:1401
 
void pauseMusic(float fade=DEFAULT_FADE)
 
static void start(Uint32 slots)
 
void advanceMusicQueue(float fade=DEFAULT_FADE, unsigned int steps=0)
 
void setEffectVolume(const char *key, float volume)
Definition: CUAudioChannels.h:1014
 
void setEffectVolume(const std::string &key, float volume)
 
size_t getMusicPending() const
 
void setMusicListener(std::function< void(Sound *, bool)> callback)
Definition: CUAudioChannels.h:652
 
float getEffectDuration(const std::string &key) const
 
void stopAll(float fade=DEFAULT_FADE)