65#ifndef __FMOD_AUDIO_MANAGER_H__
66#define __FMOD_AUDIO_MANAGER_H__
76#include <fmod_errors.h>
80extern void fmod_audio_errcheck(
const char *context, FMOD_RESULT n);
82class EXPCL_FMOD_AUDIO FmodAudioManager :
public AudioManager {
83 friend class FmodAudioSound;
87 virtual ~FmodAudioManager();
91 virtual PT(AudioSound) get_sound(
const Filename &,
bool positional =
false,
int mode=SM_heuristic);
92 virtual PT(AudioSound) get_sound(
MovieAudio *,
bool positional =
false,
int mode=SM_heuristic);
103 virtual bool get_active()
const;
116 PN_stdfloat vx, PN_stdfloat xy, PN_stdfloat xz,
117 PN_stdfloat fx, PN_stdfloat fy, PN_stdfloat fz,
118 PN_stdfloat ux, PN_stdfloat uy, PN_stdfloat uz);
122 PN_stdfloat *vx, PN_stdfloat *vy, PN_stdfloat *vz,
123 PN_stdfloat *fx, PN_stdfloat *fy, PN_stdfloat *fz,
124 PN_stdfloat *ux, PN_stdfloat *uy, PN_stdfloat *uz);
137 virtual PN_stdfloat audio_3d_get_doppler_factor()
const;
142 virtual PN_stdfloat audio_3d_get_drop_off_factor()
const;
163 static FMOD::System *_system;
164 static pset<FmodAudioManager *> _all_managers;
166 static bool _system_is_valid;
168 static PN_stdfloat _distance_factor;
169 static PN_stdfloat _doppler_factor;
170 static PN_stdfloat _drop_off_factor;
172 FMOD::ChannelGroup *_channelgroup;
174 FMOD_VECTOR _position;
175 FMOD_VECTOR _velocity;
176 FMOD_VECTOR _forward;
180 std::string _dlsname;
181 FMOD_CREATESOUNDEXINFO _midi_info;
187 typedef pset<FmodAudioSound *> SoundSet;
188 SoundSet _all_sounds;
190 FMOD_OUTPUTTYPE _saved_outputtype;
196 static void init_type() {
197 AudioManager::init_type();
198 register_type(_type_handle,
"FmodAudioManager", AudioManager::get_class_type());
201 return get_class_type();
205 return get_class_type();
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
virtual bool configure_filters(FilterProperties *config)
Configures the global DSP filter chain.
virtual void update()
Must be called every frame.
The name of a file, such as a texture file or an Egg file.
Stores a configuration for a set of audio DSP filters.
virtual void set_active(bool)
Turn on/off Warning: not implemented.
virtual void audio_3d_set_distance_factor(PN_stdfloat factor)
Set units per meter (Fmod uses meters internally for its sound- spacialization calculations)
virtual int get_speaker_setup()
This is to query if you are using a MultiChannel Setup.
virtual void audio_3d_set_drop_off_factor(PN_stdfloat factor)
Control the effect distance has on audability.
virtual void clear_cache()
NOT USED FOR FMOD-EX!
virtual void reduce_sounds_playing_to(unsigned int count)
NOT USED FOR FMOD-EX!
virtual unsigned int get_cache_limit() const
NOT USED FOR FMOD-EX!
virtual void set_cache_limit(unsigned int count)
NOT USED FOR FMOD-EX!
virtual PN_stdfloat audio_3d_get_distance_factor() const
Gets units per meter (Fmod uses meters internally for its sound- spacialization calculations)
virtual bool is_valid()
This just check to make sure the FMOD System is up and running correctly.
virtual void audio_3d_set_listener_attributes(PN_stdfloat px, PN_stdfloat py, PN_stdfloat pz, PN_stdfloat vx, PN_stdfloat xy, PN_stdfloat xz, PN_stdfloat fx, PN_stdfloat fy, PN_stdfloat fz, PN_stdfloat ux, PN_stdfloat uy, PN_stdfloat uz)
Set position of the "ear" that picks up 3d sounds NOW LISTEN UP!
virtual void set_volume(PN_stdfloat)
Sets the volume of the AudioManager.
virtual unsigned int get_concurrent_sound_limit() const
NOT USED FOR FMOD-EX!
virtual void set_speaker_setup(SpeakerModeCategory cat)
This is to set up FMOD to use a MultiChannel Setup.
virtual void audio_3d_set_doppler_factor(PN_stdfloat factor)
Exaggerates or diminishes the Doppler effect.
virtual void stop_all_sounds()
Stop playback on all sounds managed by this manager.
virtual void set_wavwriter(bool)
Changes output mode to write all audio to a wav file.
virtual void set_concurrent_sound_limit(unsigned int limit=0)
NOT USED FOR FMOD-EX!
virtual void uncache_sound(const Filename &)
NOT USED FOR FMOD-EX!
virtual PN_stdfloat get_volume() const
Returns the AudioManager's volume.
virtual void audio_3d_get_listener_attributes(PN_stdfloat *px, PN_stdfloat *py, PN_stdfloat *pz, PN_stdfloat *vx, PN_stdfloat *vy, PN_stdfloat *vz, PN_stdfloat *fx, PN_stdfloat *fy, PN_stdfloat *fz, PN_stdfloat *ux, PN_stdfloat *uy, PN_stdfloat *uz)
Get position of the "ear" that picks up 3d sounds.
A MovieAudio is actually any source that provides a sequence of audio samples.
TypeHandle is the identifier used to differentiate C++ class types.
EXPCL_FMOD_AUDIO AudioManager * Create_FmodAudioManager()
Factory Function.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...