72 #ifndef __FMOD_AUDIO_MANAGER_H__
73 #define __FMOD_AUDIO_MANAGER_H__
76 #include "pandabase.h"
79 #include "audioManager.h"
83 #include <fmod_errors.h>
87 extern void fmod_audio_errcheck(
const char *context, FMOD_RESULT n);
98 virtual bool is_valid();
100 virtual PT(
AudioSound) get_sound(
const string&,
bool positional =
false,
int mode=SM_heuristic);
103 virtual int getSpeakerSetup();
104 virtual void setSpeakerSetup(SpeakerModeCategory cat);
109 virtual void set_wavwriter(
bool);
114 virtual void stop_all_sounds();
124 virtual void audio_3d_set_listener_attributes(PN_stdfloat px, PN_stdfloat py, PN_stdfloat pz,
125 PN_stdfloat vx, PN_stdfloat xy, PN_stdfloat xz,
126 PN_stdfloat fx, PN_stdfloat fy, PN_stdfloat fz,
127 PN_stdfloat ux, PN_stdfloat uy, PN_stdfloat uz);
130 virtual void audio_3d_get_listener_attributes(PN_stdfloat *px, PN_stdfloat *py, PN_stdfloat *pz,
131 PN_stdfloat *vx, PN_stdfloat *vy, PN_stdfloat *vz,
132 PN_stdfloat *fx, PN_stdfloat *fy, PN_stdfloat *fz,
133 PN_stdfloat *ux, PN_stdfloat *uy, PN_stdfloat *uz);
138 virtual void audio_3d_set_distance_factor(PN_stdfloat factor);
139 virtual PN_stdfloat audio_3d_get_distance_factor()
const;
144 virtual void audio_3d_set_doppler_factor(PN_stdfloat factor);
145 virtual PN_stdfloat audio_3d_get_doppler_factor()
const;
150 virtual void audio_3d_set_drop_off_factor(PN_stdfloat factor);
151 virtual PN_stdfloat audio_3d_get_drop_off_factor()
const;
157 virtual void set_concurrent_sound_limit(
unsigned int limit = 0);
158 virtual unsigned int get_concurrent_sound_limit()
const;
159 virtual void reduce_sounds_playing_to(
unsigned int count);
160 virtual void uncache_sound(
const string&);
161 virtual void clear_cache();
162 virtual void set_cache_limit(
unsigned int count);
163 virtual unsigned int get_cache_limit()
const;
175 static FMOD::System *_system;
178 static bool _system_is_valid;
180 static PN_stdfloat _distance_factor;
181 static PN_stdfloat _doppler_factor;
182 static PN_stdfloat _drop_off_factor;
184 FMOD::ChannelGroup *_channelgroup;
186 FMOD_VECTOR _position;
187 FMOD_VECTOR _velocity;
188 FMOD_VECTOR _forward;
193 FMOD_CREATESOUNDEXINFO _midi_info;
202 FMOD_OUTPUTTYPE _saved_outputtype;
212 static void init_type() {
213 AudioManager::init_type();
214 register_type(_type_handle,
"FmodAudioManager", AudioManager::get_class_type());
217 return get_class_type();
221 return get_class_type();
233 EXPCL_FMOD_AUDIO
AudioManager *Create_FmodAudioManager();
virtual bool configure_filters(FilterProperties *config)
Configures the global DSP filter chain.
void set_volume(PN_stdfloat volume=1.0)
0.0 to 1.0 scale of volume converted to Fmod's internal 0.0 to 255.0 scale.
Stores a configuration for a set of audio DSP filters.
virtual void update()
Must be called every frame.
bool get_active() const
Returns whether the sound has been marked "active".
void set_active(bool active=true)
Sets whether the sound is marked "active".
PN_stdfloat get_volume() const
Gets the current volume of a sound.
TypeHandle is the identifier used to differentiate C++ class types.
A MovieAudio is actually any source that provides a sequence of audio samples.