cAudio  2.3.0
3d Audio Engine
IAudioSource.h
1 // Copyright (c) 2008-2011 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones, Murat (wolfmanfx) Sari
2 // This file is part of the "cAudio Engine"
3 // For conditions of distribution and use, see copyright notice in cAudio.h
4 
5 #pragma once
6 
7 #include "cAudioDefines.h"
8 #include "IRefCounted.h"
9 #include "IAudioDecoder.h"
10 #include "cVector3.h"
11 #include "IEffect.h"
12 #include "IFilter.h"
13 #include "ISourceEventHandler.h"
14 
15 namespace cAudio
16 {
18  class IAudioBuffer : public IRefCounted
19  {
20  public:
21  virtual ~IAudioBuffer() {}
22 
23  virtual bool isValid() const = 0;
24  virtual unsigned getBuffer() const = 0;
25  virtual int getChannels() const = 0;
26 
27  virtual int getTotalAudioSize() const = 0;
28  virtual float getTotalAudioTime() const = 0;
29  };
30 
32  class IAudioSource : public IRefCounted
33  {
34  public:
35  IAudioSource() {}
36  virtual ~IAudioSource() {}
37 
39 
41  virtual bool play() = 0;
42 
44 
47  virtual bool play2d(const bool& toLoop = false) = 0;
48 
50 
55  virtual bool play3d(const cVector3& position, const float& soundstr = 1.0 , const bool& toLoop = false) = 0;
56 
58  virtual void pause() = 0;
59 
61  virtual void stop() = 0;
62 
64 
65  virtual void loop(const bool& toLoop) = 0;
66 
68 
72  virtual bool seek(const float& seconds, bool relative = false) = 0;
73 
75 
77  virtual bool setBuffer(IAudioBuffer* buffer) = 0;
78 
80 
81  virtual IAudioBuffer *getBuffer() = 0;
82 
84  virtual float getTotalAudioTime() = 0;
85 
87  virtual int getTotalAudioSize() = 0;
88 
90  virtual int getCompressedAudioSize() = 0;
91 
93  virtual float getCurrentAudioTime() = 0;
94 
96  virtual int getCurrentAudioPosition() = 0;
97 
99  virtual int getCurrentCompressedAudioPosition() = 0;
100 
102  virtual bool update() = 0;
103 
105  virtual bool isValid() const = 0; //
106 
108  virtual bool isPlaying() const = 0;
109 
111  virtual bool isPaused() const = 0;
112 
114  virtual bool isStopped() const = 0;
115 
117  virtual bool isLooping() const = 0;
118 
120 
122  virtual void setPosition(const cVector3& position) = 0;
123 
125 
127  virtual void setVelocity(const cVector3& velocity) = 0;
128 
130 
132  virtual void setDirection(const cVector3& direction) = 0;
133 
135 
138  virtual void setRolloffFactor(const float& rolloff) = 0;
139 
141 
144  virtual void setStrength(const float& soundstrength) = 0;
145 
147 
149  virtual void setMinDistance(const float& minDistance) = 0;
150 
152 
154  virtual void setMaxAttenuationDistance(const float& maxDistance) = 0;
155 
157 
159  virtual void setPitch(const float& pitch) = 0;
160 
162 
164  virtual void setVolume(const float& volume) = 0;
165 
167 
169  virtual void setMinVolume(const float& minVolume) = 0;
170 
172 
174  virtual void setMaxVolume(const float& maxVolume) = 0;
175 
177 
180  virtual void setInnerConeAngle(const float& innerAngle) = 0;
181 
183 
186  virtual void setOuterConeAngle(const float& outerAngle) = 0;
187 
189 
191  virtual void setOuterConeVolume(const float& outerVolume) = 0;
192 
194 
196  virtual void setDopplerStrength(const float& dstrength) = 0;
197 
199 
201  virtual void setDopplerVelocity(const cVector3& dvelocity) = 0;
202 
204 
206  virtual void move(const cVector3& position) = 0;
207 
209  virtual cVector3 getPosition() const = 0;
210 
212  virtual cVector3 getVelocity() const = 0;
213 
215  virtual cVector3 getDirection() const = 0;
216 
218  virtual float getRolloffFactor() const = 0;
219 
221  virtual float getStrength() const = 0;
222 
224  virtual float getMinDistance() const = 0;
225 
227  virtual float getMaxDistance() const = 0;
228 
230  virtual bool isRelative() const = 0;
231 
233  virtual float calculateGain() const = 0;
234 
236  virtual float getPitch() const = 0;
237 
239  virtual float getVolume() const = 0;
240 
242  virtual float getMinVolume() const = 0;
243 
245  virtual float getMaxVolume() const = 0;
246 
248  virtual float getInnerConeAngle() const = 0;
249 
251  virtual float getOuterConeAngle() const = 0;
252 
254  virtual float getOuterConeVolume() const = 0;
255 
257  virtual float getDopplerStrength() const = 0;
258 
260  virtual cVector3 getDopplerVelocity() const = 0;
261 
263 
265  virtual void registerEventHandler(ISourceEventHandler* handler) = 0;
266 
268 
270  virtual void unRegisterEventHandler(ISourceEventHandler* handler) = 0;
271 
273  virtual void unRegisterAllEventHandlers() = 0;
274 
275 #if CAUDIO_EFX_ENABLED == 1
276  virtual unsigned int getNumEffectSlotsAvailable() const = 0;
278 
280 
284  virtual bool attachEffect(unsigned int slot, IEffect* effect) = 0;
285 
287 
289  virtual void removeEffect(unsigned int slot) = 0;
290 
292 
295  virtual bool attachFilter(IFilter* filter) = 0;
296 
298  virtual void removeFilter() = 0;
299 #endif
300 
301  protected:
302  private:
303  };
304 };
Interface for a single audio source, which allow you to manipulate sound sources (speakers) in 2D or ...
Definition: IAudioSource.h:32
Applies reference counting to certain cAudio objects.
Definition: IRefCounted.h:12
Interface for event handlers on Audio Sources.
Class for manipulating vectors in 3D space.
Definition: cVector3.h:22
interface for a sample (audio buffer): completely loaded into memory, shareable across sources ...
Definition: IAudioSource.h:18
Main namespace for the entire cAudio library.
Definition: cAudioCapture.h:15