3 * Copyright 2018 Chris Robinson
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
23 #ifndef EAXVECTOR_DEFINED
24 #define EAXVECTOR_DEFINED
25 typedef struct _EAXVECTOR
{
30 DEFINE_GUID(DSPROPSETID_EAX30_ListenerProperties
, 0xa8fa6882, 0xb476, 0x11d3, 0xbd, 0xb9, 0x00, 0xc0, 0xf0, 0x2d, 0xdf, 0x87);
32 DSPROPERTY_EAX30LISTENER_NONE
,
33 DSPROPERTY_EAX30LISTENER_ALLPARAMETERS
,
34 DSPROPERTY_EAX30LISTENER_ENVIRONMENT
,
35 DSPROPERTY_EAX30LISTENER_ENVIRONMENTSIZE
,
36 DSPROPERTY_EAX30LISTENER_ENVIRONMENTDIFFUSION
,
37 DSPROPERTY_EAX30LISTENER_ROOM
,
38 DSPROPERTY_EAX30LISTENER_ROOMHF
,
39 DSPROPERTY_EAX30LISTENER_ROOMLF
,
40 DSPROPERTY_EAX30LISTENER_DECAYTIME
,
41 DSPROPERTY_EAX30LISTENER_DECAYHFRATIO
,
42 DSPROPERTY_EAX30LISTENER_DECAYLFRATIO
,
43 DSPROPERTY_EAX30LISTENER_REFLECTIONS
,
44 DSPROPERTY_EAX30LISTENER_REFLECTIONSDELAY
,
45 DSPROPERTY_EAX30LISTENER_REFLECTIONSPAN
,
46 DSPROPERTY_EAX30LISTENER_REVERB
,
47 DSPROPERTY_EAX30LISTENER_REVERBDELAY
,
48 DSPROPERTY_EAX30LISTENER_REVERBPAN
,
49 DSPROPERTY_EAX30LISTENER_ECHOTIME
,
50 DSPROPERTY_EAX30LISTENER_ECHODEPTH
,
51 DSPROPERTY_EAX30LISTENER_MODULATIONTIME
,
52 DSPROPERTY_EAX30LISTENER_MODULATIONDEPTH
,
53 DSPROPERTY_EAX30LISTENER_AIRABSORPTIONHF
,
54 DSPROPERTY_EAX30LISTENER_HFREFERENCE
,
55 DSPROPERTY_EAX30LISTENER_LFREFERENCE
,
56 DSPROPERTY_EAX30LISTENER_ROOMROLLOFFFACTOR
,
57 DSPROPERTY_EAX30LISTENER_FLAGS
58 } DSPROPERTY_EAX30_LISTENERPROPERTY
;
60 /* Stores the value being set, but does not apply it */
61 #define DSPROPERTY_EAX30LISTENER_DEFERRED 0x80000000
62 /* The lack of the deferred flag forces a call to CommitDeferredSettings(),
63 * applying *all* deferred settings, including the EAX property being set */
64 #define DSPROPERTY_EAX30LISTENER_IMMEDIATE 0x00000000
65 /* Same as IMMEDIATE; causes a commit of deferred properties but implies no
66 * extra property being set */
67 #define DSPROPERTY_EAX30LISTENER_COMMITDEFERREDSETTINGS 0x00000000
69 /* DSPROPERTY_EAX30LISTENER_ALLPARAMETERS */
70 typedef EAXREVERBPROPERTIES EAX30LISTENERPROPERTIES
, *LPEAX30LISTENERPROPERTIES
;
72 /* DSPROPERTY_EAX30LISTENER_FLAGS */
73 /* These flags determine what properties are modified when the environment size
76 #define EAX30LISTENERFLAGS_DECAYTIMESCALE 0x00000001
77 #define EAX30LISTENERFLAGS_REFLECTIONSSCALE 0x00000002
78 #define EAX30LISTENERFLAGS_REFLECTIONSDELAYSCALE 0x00000004
79 #define EAX30LISTENERFLAGS_REVERBSCALE 0x00000008
80 #define EAX30LISTENERFLAGS_REVERBDELAYSCALE 0x00000010
81 /* This flag limits the high frequency decay according to air absorption */
82 #define EAX30LISTENERFLAGS_DECAYHFLIMIT 0x00000020
83 #define EAX30LISTENERFLAGS_ECHOTIMESCALE 0x00000040
84 #define EAX30LISTENERFLAGS_MODTIMESCALE 0x00000080
87 DEFINE_GUID(DSPROPSETID_EAX30_BufferProperties
, 0xa8fa6881, 0xb476, 0x11d3, 0xbd, 0xb9, 0x00, 0xc0, 0xf0, 0x2d, 0xdf, 0x87);
89 DSPROPERTY_EAX30BUFFER_NONE
,
90 DSPROPERTY_EAX30BUFFER_ALLPARAMETERS
,
91 DSPROPERTY_EAX30BUFFER_OBSTRUCTIONPARAMETERS
,
92 DSPROPERTY_EAX30BUFFER_OCCLUSIONPARAMETERS
,
93 DSPROPERTY_EAX30BUFFER_EXCLUSIONPARAMETERS
,
94 DSPROPERTY_EAX30BUFFER_DIRECT
,
95 DSPROPERTY_EAX30BUFFER_DIRECTHF
,
96 DSPROPERTY_EAX30BUFFER_ROOM
,
97 DSPROPERTY_EAX30BUFFER_ROOMHF
,
98 DSPROPERTY_EAX30BUFFER_OBSTRUCTION
,
99 DSPROPERTY_EAX30BUFFER_OBSTRUCTIONLFRATIO
,
100 DSPROPERTY_EAX30BUFFER_OCCLUSION
,
101 DSPROPERTY_EAX30BUFFER_OCCLUSIONLFRATIO
,
102 DSPROPERTY_EAX30BUFFER_OCCLUSIONROOMRATIO
,
103 DSPROPERTY_EAX30BUFFER_OCCLUSIONDIRECTRATIO
,
104 DSPROPERTY_EAX30BUFFER_EXCLUSION
,
105 DSPROPERTY_EAX30BUFFER_EXCLUSIONLFRATIO
,
106 DSPROPERTY_EAX30BUFFER_OUTSIDEVOLUMEHF
,
107 DSPROPERTY_EAX30BUFFER_DOPPLERFACTOR
,
108 DSPROPERTY_EAX30BUFFER_ROLLOFFFACTOR
,
109 DSPROPERTY_EAX30BUFFER_ROOMROLLOFFFACTOR
,
110 DSPROPERTY_EAX30BUFFER_AIRABSORPTIONFACTOR
,
111 DSPROPERTY_EAX30BUFFER_FLAGS
112 } DSPROPERTY_EAX30_BUFFERPROPERTY
;
114 #define DSPROPERTY_EAX30BUFFER_DEFERRED 0x80000000
115 /* NOTE: This applies all deferred changes, not just the buffer's. */
116 #define DSPROPERTY_EAX30BUFFER_IMMEDIATE 0x00000000
117 #define DSPROPERTY_EAX30BUFFER_COMMITDEFERREDSETTINGS 0x00000000
119 /* DSPROPERTY_EAX30BUFFER_ALLPARAMETERS */
120 typedef EAXSOURCEPROPERTIES EAX30BUFFERPROPERTIES
, *LPEAX30BUFFERPROPERTIES
;
122 /* DSPROPERTY_EAX30BUFFER_OBSTRUCTION */
123 #ifndef EAX_OBSTRUCTIONPROPERTIES_DEFINED
124 #define EAX_OBSTRUCTIONPROPERTIES_DEFINED
125 typedef struct _EAXOBSTRUCTIONPROPERTIES
{
127 float flObstructionLFRatio
;
128 } EAXOBSTRUCTIONPROPERTIES
, *LPEAXOBSTRUCTIONPROPERTIES
;
131 /* DSPROPERTY_EAX30BUFFER_OCCLUSION */
132 #ifndef EAX_OCCLUSIONPROPERTIES_DEFINED
133 #define EAX_OCCLUSIONPROPERTIES_DEFINED
134 typedef struct _EAXOCCLUSIONPROPERTIES
{
136 float flOcclusionLFRatio
;
137 float flOcclusionRoomRatio
;
138 float flOcclusionDirectRatio
;
139 } EAXOCCLUSIONPROPERTIES
, *LPEAXOCCLUSIONPROPERTIES
;
142 /* DSPROPERTY_EAX30BUFFER_EXCLUSION */
143 #ifndef EAX_EXCLUSIONPROPERTIES_DEFINED
144 #define EAX_EXCLUSIONPROPERTIES_DEFINED
145 typedef struct _EAXEXCLUSIONPROPERTIES
{
147 float flExclusionLFRatio
;
148 } EAXEXCLUSIONPROPERTIES
, *LPEAXEXCLUSIONPROPERTIES
;
151 /* DSPROPERTY_EAX30BUFFER_FLAGS */
152 #define EAX30BUFFERFLAGS_DIRECTHFAUTO 0x00000001
153 #define EAX30BUFFERFLAGS_ROOMAUTO 0x00000002
154 #define EAX30BUFFERFLAGS_ROOMHFAUTO 0x00000004