Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

IAudioExt.h

Go to the documentation of this file.
00001 /***********************************************************\
00002 Copyright (C) James Boer, 2002. 
00003 All rights reserved worldwide.
00004 
00005 This software is provided "as is" without express or implied
00006 warranties. You may freely copy and compile this source into
00007 applications you distribute provided that the copyright text
00008 below is included in the resulting source code, for example:
00009 "Portions Copyright (C) James Boer, 2002"
00010 \***********************************************************/
00011 #ifndef IAUDIOEXT_H__
00012 #define IAUDIOEXT_H__
00013 
00014 #include "3dl2.h"
00015 #include "3dl2help.h"
00016 #include "eax.h"
00017 #include "ZoomFX.h"
00018 
00019 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00020 namespace Audio
00021 {
00022 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
00023  
00025 
00027 
00036 struct EAXListenerProps : public _EAXLISTENERPROPERTIES
00037 {
00039         EAXListenerProps()
00040         {  Clear();  }
00042         void Clear()
00043         {
00044                 lRoom = EAXLISTENER_DEFAULTROOM;                    
00045                 lRoomHF = EAXLISTENER_DEFAULTROOMHF;                  
00046                 flRoomRolloffFactor = EAXLISTENER_DEFAULTROOMROLLOFFFACTOR;     
00047                 flDecayTime = EAXLISTENER_DEFAULTDECAYTIME;             
00048                 flDecayHFRatio = EAXLISTENER_DEFAULTDECAYHFRATIO;          
00049                 lReflections = EAXLISTENER_DEFAULTREFLECTIONS;             
00050                 flReflectionsDelay = EAXLISTENER_DEFAULTREFLECTIONSDELAY;      
00051                 lReverb = EAXLISTENER_DEFAULTREVERB;                  
00052                 flReverbDelay = EAXLISTENER_DEFAULTREVERBDELAY;           
00053                 dwEnvironment = EAXLISTENER_DEFAULTENVIRONMENT;   
00054                 flEnvironmentSize = EAXLISTENER_DEFAULTENVIRONMENTSIZE;       
00055                 flEnvironmentDiffusion = EAXLISTENER_DEFAULTENVIRONMENTDIFFUSION;  
00056                 flAirAbsorptionHF = EAXLISTENER_DEFAULTAIRABSORPTIONHF;       
00057                 dwFlags = EAXLISTENER_DEFAULTFLAGS;         
00058         }
00059 };
00060 
00062 
00072 class IEAXListener
00073 {
00074 public:
00075 
00080         virtual void SetRoom(int32 iRoom) = 0;
00085         virtual void SetRoomHF(int32 iRoomHF) = 0;
00090         virtual void SetRoomRolloffFactor(float fRoomRolloffFactor) = 0;
00095         virtual void SetDecayTime(float fDecayTime) = 0;
00100         virtual void SetDecayHFRatio(float fDecayHFRatio) = 0;
00105         virtual void SetReflections(int32 iReflections) = 0;
00110         virtual void SetReflectionsDelay(float fReflectionsDelay) = 0;
00115         virtual void SetReverb(int32 iReverb) = 0;
00121         virtual void SetReverbDelay(float fReverbDelay) = 0;
00126         virtual void SetEnvironment(uint32 nEnvironment) = 0;
00131         virtual void SetEnvironmentSize(float fEnvironmentSize) = 0;
00136         virtual void SetEnvironmentDiffusion(float fEnvironmentDiffusion) = 0;
00141         virtual void SetAirAbsorptionHF(float fAirAbsorption) = 0;
00146         virtual void SetFlags(uint32 nFlags) = 0;
00151         virtual void SetProperties(const EAXListenerProps& props) = 0;
00156         virtual void GetProperties(EAXListenerProps& props) = 0;
00157 };
00158 
00160 
00169 struct EAXBufferProps : public _EAXBUFFERPROPERTIES
00170 {
00172         EAXBufferProps()
00173         {  Clear();  }
00175         void Clear()
00176         {
00177                 lDirect = EAXBUFFER_DEFAULTDIRECT;                
00178                 lDirectHF = EAXBUFFER_DEFAULTDIRECTHF;              
00179                 lRoom = EAXBUFFER_DEFAULTROOM;                  
00180                 lRoomHF = EAXBUFFER_DEFAULTROOMHF;                
00181                 flRoomRolloffFactor = EAXBUFFER_DEFAULTROOMROLLOFFFACTOR;   
00182                 lObstruction = EAXBUFFER_DEFAULTOBSTRUCTION;           
00183                 flObstructionLFRatio = EAXBUFFER_DEFAULTOBSTRUCTIONLFRATIO;  
00184                 lOcclusion = EAXBUFFER_DEFAULTOCCLUSION;             
00185                 flOcclusionLFRatio = EAXBUFFER_DEFAULTOCCLUSIONLFRATIO;    
00186                 flOcclusionRoomRatio = EAXBUFFER_DEFAULTOCCLUSIONROOMRATIO;  
00187                 lOutsideVolumeHF = EAXBUFFER_DEFAULTOUTSIDEVOLUMEHF;       
00188                 flAirAbsorptionFactor = EAXBUFFER_DEFAULTAIRABSORPTIONFACTOR; 
00189                 dwFlags = EAXBUFFER_DEFAULTFLAGS;       
00190         }
00191 };
00192 
00193 
00195 
00205 class IEAXBuffer
00206 {
00207 public:
00212         virtual void SetDirect(int32 iDirect) = 0;
00217         virtual void SetDirectHF(int32 iDirectHF) = 0;
00222         virtual void SetRoom(int32 iRoom) = 0;
00227         virtual void SetRoomHF(int32 iRoomHF) = 0;
00232         virtual void SetRoomRolloffFactor(float fRoomRolloffFactor) = 0;
00237         virtual void SetObstruction(int32 iObstruction) = 0;
00242         virtual void SetObstructionLFRatio(float fObstructionLFRatio) = 0;
00247         virtual void SetOcclusion(int32 iOcclusion) = 0;
00252         virtual void SetOcclusionLFRatio(float fOcclusionLFRatio) = 0;
00257         virtual void SetOcclusionRoomRatio(float fOcclusionRoomRatio) = 0;
00262         virtual void SetOutsideVolumeHF(int32 iOutsideVolumeHF) = 0;
00267         virtual void SetAirAbsorptionFactor(float fAirAbsorptionFactor) = 0;
00272         virtual void SetFlags(uint32 nFlags) = 0;
00277         virtual void SetProperties(const EAXBufferProps& props) = 0;
00282         virtual void GetProperties(EAXBufferProps& props) = 0;
00283 };
00284 
00285 
00287 
00296 struct ZoomFXBox : public ZOOMFX_BOX
00297 {
00299         ZoomFXBox()     { Clear(); }
00301         void Clear()
00302         {
00303                 vMin.x = 0.0f;  
00304                 vMin.y = 0.0f;  
00305                 vMin.z = 0.0f;
00306                 vMax.x = 0.0f;  
00307                 vMax.y = 0.0f;  
00308                 vMax.z = 0.0f;
00309         }
00310 };
00311 
00313 
00322 struct ZoomFXOrientation : public ZOOMFX_ORIENTATION
00323 {
00325         ZoomFXOrientation()     { Clear(); }
00327         void Clear()
00328         {
00329                 vFront.x = 0.0f;  
00330                 vFront.y = 0.0f;  
00331                 vFront.z = 1.0f;
00332                 vTop.x = 0.0f;  
00333                 vTop.y = 1.0f;  
00334                 vTop.z = 0.0f;
00335         }
00336 };
00337 
00339 
00348 struct ZoomFXProps : public ZOOMFX_BUFFERPROPERTIES
00349 {
00351         ZoomFXProps()   { Clear(); }
00353         void Clear()
00354         {
00355                 box.vMin.x = 0.0f;  
00356                 box.vMin.y = 0.0f;  
00357                 box.vMin.z = 0.0f;
00358                 box.vMax.x = 0.0f;  
00359                 box.vMax.y = 0.0f;  
00360                 box.vMax.z = 0.0f;
00361                 orientation.vFront.x = 0.0f;  
00362                 orientation.vFront.y = 0.0f;  
00363                 orientation.vFront.z = 1.0f;
00364                 orientation.vTop.x = 0.0f;  
00365                 orientation.vTop.y = 1.0f;  
00366                 orientation.vTop.z = 0.0f;
00367                 lMacroFx = ZOOMFXBUFFER_MACROFX_DEFAULT;
00368         }
00369 };
00370 
00371 
00372 
00373 
00374 
00376 class IZoomFX
00377 {
00378 public:
00384         virtual void SetBox(const ZoomFXBox& box) = 0;
00390         virtual void SetOrientation(const ZoomFXOrientation& orientation) = 0;
00395         virtual void SetMacroFX(uint32 nMacroFX) = 0;
00400         virtual void SetProperties(const ZoomFXProps& props) = 0;
00405         virtual void GetProperties(ZoomFXProps& props) = 0;
00406 
00407 };
00408 
00409 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00410 }; // namespace Audio
00411 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
00412 
00413 
00414 #endif // IAUDIOEXT_H__

Generated at Sun Jul 28 23:17:41 2002 for GAP Audio System by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001