00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef __AUDIOSOUND_H__
00017 #define __AUDIOSOUND_H__
00018
00019 #include "config_audio.h"
00020 #include "typedReferenceCount.h"
00021 #include "pointerTo.h"
00022 #include "filterProperties.h"
00023
00024 class AudioManager;
00025
00026 class EXPCL_PANDA_AUDIO AudioSound : public TypedReferenceCount {
00027 PUBLISHED:
00028 virtual ~AudioSound();
00029
00030
00031
00032
00033
00034
00035
00036
00037 virtual void play() = 0;
00038 virtual void stop() = 0;
00039
00040
00041
00042 virtual void set_loop(bool loop=true) = 0;
00043 virtual bool get_loop() const = 0;
00044
00045
00046
00047 virtual void set_loop_count(unsigned long loop_count=1) = 0;
00048 virtual unsigned long get_loop_count() const = 0;
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064 virtual void set_time(PN_stdfloat start_time=0.0) = 0;
00065 virtual PN_stdfloat get_time() const = 0;
00066
00067
00068
00069 virtual void set_volume(PN_stdfloat volume=1.0) = 0;
00070 virtual PN_stdfloat get_volume() const = 0;
00071
00072
00073
00074
00075
00076 virtual void set_balance(PN_stdfloat balance_right=0.0) = 0;
00077 virtual PN_stdfloat get_balance() const = 0;
00078
00079
00080
00081 virtual void set_play_rate(PN_stdfloat play_rate=1.0f) = 0;
00082 virtual PN_stdfloat get_play_rate() const = 0;
00083
00084
00085 virtual void set_active(bool flag=true) = 0;
00086 virtual bool get_active() const = 0;
00087
00088
00089
00090 virtual void set_finished_event(const string& event) = 0;
00091 virtual const string& get_finished_event() const = 0;
00092
00093
00094 virtual const string& get_name() const = 0;
00095
00096
00097 virtual PN_stdfloat length() const = 0;
00098
00099
00100
00101
00102 virtual void set_3d_attributes(PN_stdfloat px, PN_stdfloat py, PN_stdfloat pz,
00103 PN_stdfloat vx, PN_stdfloat vy, PN_stdfloat vz);
00104 virtual void get_3d_attributes(PN_stdfloat *px, PN_stdfloat *py, PN_stdfloat *pz,
00105 PN_stdfloat *vx, PN_stdfloat *vy, PN_stdfloat *vz);
00106
00107
00108
00109
00110
00111
00112
00113 virtual void set_3d_min_distance(PN_stdfloat dist);
00114 virtual PN_stdfloat get_3d_min_distance() const;
00115
00116
00117
00118
00119
00120 virtual void set_3d_max_distance(PN_stdfloat dist);
00121 virtual PN_stdfloat get_3d_max_distance() const;
00122
00123
00124
00125
00126
00127
00128
00129 virtual PN_stdfloat get_speaker_mix(int speaker);
00130 virtual void set_speaker_mix(PN_stdfloat frontleft, PN_stdfloat frontright, PN_stdfloat center, PN_stdfloat sub, PN_stdfloat backleft, PN_stdfloat backright, PN_stdfloat sideleft, PN_stdfloat sideright);
00131
00132 virtual PN_stdfloat get_speaker_level(int index);
00133 virtual void set_speaker_levels(PN_stdfloat level1, PN_stdfloat level2=-1.0f, PN_stdfloat level3=-1.0f, PN_stdfloat level4=-1.0f, PN_stdfloat level5=-1.0f, PN_stdfloat level6=-1.0f, PN_stdfloat level7=-1.0f, PN_stdfloat level8=-1.0f, PN_stdfloat level9=-1.0f);
00134
00135 virtual int get_priority();
00136 virtual void set_priority(int priority);
00137
00138 virtual bool configure_filters(FilterProperties *config);
00139
00140 enum SoundStatus { BAD, READY, PLAYING };
00141 virtual SoundStatus status() const = 0;
00142
00143 virtual void output(ostream &out) const;
00144 virtual void write(ostream &out) const;
00145
00146 protected:
00147 AudioSound();
00148
00149 friend class AudioManager;
00150
00151 public:
00152 static TypeHandle get_class_type() {
00153 return _type_handle;
00154 }
00155 static void init_type() {
00156 TypedReferenceCount::init_type();
00157 register_type(_type_handle, "AudioSound",
00158 TypedReferenceCount::get_class_type());
00159 }
00160 virtual TypeHandle get_type() const {
00161 return get_class_type();
00162 }
00163 virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
00164
00165 private:
00166 static TypeHandle _type_handle;
00167 };
00168
00169 inline ostream &
00170 operator << (ostream &out, const AudioSound &sound) {
00171 sound.output(out);
00172 return out;
00173 }
00174
00175 #include "audioSound.I"
00176
00177 EXPCL_PANDA_AUDIO ostream &
00178 operator << (ostream &out, AudioSound::SoundStatus status);
00179
00180 #endif