Spinning Topp Logo BlackTopp Studios
inc
effectparameters.h
1 // © Copyright 2010 - 2016 BlackTopp Studios Inc.
2 /* This file is part of The Mezzanine Engine.
3 
4  The Mezzanine Engine is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8 
9  The Mezzanine Engine is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with The Mezzanine Engine. If not, see <http://www.gnu.org/licenses/>.
16 */
17 /* The original authors have included a copy of the license specified above in the
18  'Docs' folder. See 'gpl.txt'
19 */
20 /* We welcome the use of the Mezzanine engine to anyone, including companies who wish to
21  Build professional software and charge for their product.
22 
23  However there are some practical restrictions, so if your project involves
24  any of the following you should contact us and we will try to work something
25  out:
26  - DRM or Copy Protection of any kind(except Copyrights)
27  - Software Patents You Do Not Wish to Freely License
28  - Any Kind of Linking to Non-GPL licensed Works
29  - Are Currently In Violation of Another Copyright Holder's GPL License
30  - If You want to change our code and not add a few hundred MB of stuff to
31  your distribution
32 
33  These and other limitations could cause serious legal problems if you ignore
34  them, so it is best to simply contact us or the Free Software Foundation, if
35  you have any questions.
36 
37  Joseph Toppi - toppij@gmail.com
38  John Blackwood - makoenergy02@gmail.com
39 */
40 // Copyright (c) 2008-2010 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones
41 // This file is part of the "cAudio Engine"
42 // For conditions of distribution and use, see copyright notice in cAudio-ZLIBLicense.txt
43 #ifndef _audioeffectparameters_h
44 #define _audioeffectparameters_h
45 
46 #include "vector3.h"
47 #include "Audio/audioenumerations.h"
48 
49 namespace Mezzanine
50 {
51  namespace Audio
52  {
53  ///////////////////////////////////////////////////////////////////////////////
54  /// @brief This is a struct containing all the parameters needed to describe an EAX Reverb effect.
55  /// @details The Reverb effect simulates sounds that bounce off of surfaces and are reflected back at the listener.
56  ///////////////////////////////////////
58  {
59  /// @brief The Reverb Modal Density controls the coloration of the late reverb.
60  /// @remarks Lowering the value adds more coloration to the late reverb. @n @n Range: 0.0 to 1.0
62  /// @brief The Reverb Diffusion property controls the echo density in the reverberation decay.
63  /// @remarks It's set by default to 1.0, which provides the highest density. Reducing diffusion gives the reverberation a
64  /// more "grainy" character that is especially noticeable with percussive sound sources. If you set a diffusion value of
65  /// 0.0, the later reverberation sounds like a succession of distinct echoes. @n @n Range: 0.0 to 1.0
67  /// @brief The master volume control for the reflected sound.
68  /// @remarks The Reverb Gain property is the master volume control for the reflected sound (both early reflections and reverberation)
69  /// that the reverb effect adds to all sound sources. It sets the maximum amount of reflections and reverberation added to the final
70  /// sound mix. The value of the Reverb Gain property ranges from 1.0 (0db) (the maximum amount) to 0.0 (-100db) (no reflected sound
71  /// at all). @n @n Range: 0.0 to 1.0
73  /// @brief The Reverb Gain High Frequency property.
74  /// @remarks The Reverb Gain HF property further tweaks reflected sound by attenuating it at high frequencies. It controls a low-pass
75  /// filter that applies globally to the reflected sound of all sound sources feeding the particular instance of the reverb effect. The
76  /// value of the Reverb Gain HF property ranges from 1.0 (0db) (no filter) to 0.0 (-100db) (virtually no reflected sound). HF Reference
77  /// sets the frequency at which the value of this property is measured. @n @n Range: 0.0 to 1.0
79  /// @brief The Reverb Gain Low Frequency property.
80  /// @remarks The Reverb Gain LF property further tweaks reflected sound by attenuating it at low frequencies. It controls a high-pass
81  /// filter that applies globally to the reflected sound of all sound sources feeding the particular instance of the reverb effect.
82  /// The value of the Reverb Gain LF property ranges from 1.0 (0db) (no filter) to 0.0 (-100db) (virtually no reflected sound). LF
83  /// Reference sets the frequency at which the value of this property is measured. @n @n Range: 0.0 to 1.0
85  /// @brief The Decay Time property sets the reverberation decay time.
86  /// @remarks It ranges from 0.1 (typically a small room with very dead surfaces) to 20.0 (typically a large room with very live
87  /// surfaces). @n @n Range: 0.1 to 20.0
89  /// @brief The Decay HF Ratio property adjusts the spectral quality of the Decay Time parameter.
90  /// @remarks It is the ratio of high-frequency decay time relative to the time set by Decay Time. The Decay HF Ratio value 1.0 is
91  /// neutral: the decay time is equal for all frequencies. As Decay HF Ratio increases above 1.0, the high-frequency decay time
92  /// increases so it's longer than the decay time at mid frequencies. You hear a more brilliant reverberation with a longer decay at
93  /// high frequencies. As the Decay HF Ratio value decreases below 1.0, the high-frequency decay time decreases so it's shorter than
94  /// the decay time of the mid frequencies. You hear a more natural reverberation. @n @n Range: 0.1 to 20.0
96  /// @brief The Decay LF Ratio property adjusts the spectral quality of the Decay Time parameter.
97  /// @remarks It is the ratio of low-frequency decay time relative to the time set by Decay Time. The Decay LF Ratio value 1.0 is
98  /// neutral: the decay time is equal for all frequencies. As Decay LF Ratio increases above 1.0, the low-frequency decay time
99  /// increases so it's longer than the decay time at mid frequencies. You hear a more booming reverberation with a longer decay at
100  /// low frequencies. As the Decay LF Ratio value decreases below 1.0, the low-frequency decay time decreases so it's shorter than
101  /// the decay time of the mid frequencies. You hear a more tinny reverberation. @n @n Range: 0.1 to 20.0
103  /// @brief The Reflections Gain property controls the overall amount of initial reflections relative to the Gain property.
104  /// @remarks The Gain property sets the overall amount of reflected sound: both initial reflections and later reverberation.
105  /// The value of Reflections Gain ranges from a maximum of 3.16 (+10 dB) to a minimum of 0.0 (-100 dB) (no initial reflections
106  /// at all), and is corrected by the value of the Gain property. The Reflections Gain property does not affect the subsequent
107  /// reverberation decay. @n @n Range: 0.0 to 3.16
109  /// @brief The Reflections Delay property is the amount of delay between the arrival time of the direct path from the source to the first reflection from the source.
110  /// @remarks It ranges from 0 to 300 milliseconds. You can reduce or increase Reflections Delay to simulate closer or more distant
111  /// reflective surfaces and therefore control the perceived size of the room. @n @n Range: 0.0 to 0.3
113  /// @brief The Reflections Pan property is a 3D vector that controls the spatial distribution of the cluster of early reflections.
114  /// @remarks The direction of this vector controls the global direction of the reflections, whileits magnitude controls how focused
115  /// the reflections are towards this direction. @n @n
116  /// It is important to note that the direction of the vector is interpreted in the
117  /// coordinate system of the user, without taking into account the orientation of the virtual listener. For instance, assuming a
118  /// four-point loudspeaker playback system, setting Reflections Pan to (0, 0, 0.7) means that the reflections are panned to the front
119  /// speaker pair, whereas as setting of (0, 0, -0.7) pans the reflections towards the rear speakers. These vectors follow the a
120  /// left-handed co-ordinate system, unlike OpenAL uses a right-handed co-ordinate system. @n @n
121  /// If the magnitude of Reflections Pan is zero (the default setting), the early reflections come evenly from all directions. As the
122  /// magnitude increases, the reflections become more focused in the direction pointed to by the vector. A magnitude of 1.0 would
123  /// represent the extreme case, where all reflections come from a single direction.
125  /// @brief The Late Reverb Gain property controls the overall amount of later reverberation relative to the Gain property.
126  /// @remarks The Gain property sets the overall amount of both initial reflections and later reverberation. The value of Late Reverb
127  /// Gain ranges from a maximum of 10.0 (+20 dB) to a minimum of 0.0 (-100 dB) (no late reverberation at all). @n @n Range: 0.0 to 10.0
129  /// @brief The Late Reverb Delay property defines the begin time of the late reverberation relative to the time of the initial reflection.
130  /// @remarks It ranges from 0 to 100 milliseconds. Reducing or increasing Late Reverb Delay is useful for simulating a smaller or larger
131  /// room. @n @n Range: 0.0 to 0.1
133  /// @brief The Late Reverb Pan property is a 3D vector that controls the spatial distribution of the late reverb.
134  /// @remarks The direction of this vector controls the global direction of the reverb, while its magnitude controls how focused the reverb
135  /// are towards this direction. The details under Reflections Pan, above, also apply to Late Reverb Pan.
137  /// @brief Echo Time controls the rate at which the cyclic echo repeats itself along the reverberation decay.
138  /// @remarks For example, the default setting for Echo Time is 250 ms. causing the echo to occur 4 times per second. Therefore, if you were
139  /// to clap your hands in this type of environment, you will hear four repetitions of clap per second. @n @n Range: 0.075 to 0.25
141  /// @brief Echo Depth introduces a cyclic echo in the reverberation decay, which will be noticeable with transient or percussive sounds.
142  /// @remarks A larger value of Echo Depth will make this effect more prominent. Together with Reverb Diffusion, Echo Depth will control how
143  /// long the echo effect will persist along the reverberation decay. In a more diffuse environment, echoes will wash out more quickly after
144  /// the direct sound. In an environment that is less diffuse, you will be able to hear a larger number of repetitions of the echo, which
145  /// will wash out later in the reverberation decay. If Diffusion is set to 0.0 and Echo Depth is set to 1.0, the echo will persist distinctly
146  /// until the end of the reverberation decay. @n @n Range: 0.0 to 1.0
148  /// @brief Modulation Time controls the amount of time to take when applying the set Modulation Depth.
149  /// @remarks This will be most noticeable applied to sources that have tonal color or pitch. You can use this to make some trippy effects!
150  /// Modulation Time controls the speed of the vibrato (rate of periodic changes in pitch). @n @n
151  /// Using this property and ModulationDepth, you can create a pitch modulation in the reverberant sound. @n @n Range: 0.004 to 4.0
153  /// @brief Modulation Depth controls the amount of pitch change.
154  /// @remarks Low values of Diffusion will contribute to reinforcing the perceived effect by reducing the mixing of overlapping reflections in the
155  /// reverberation decay. @n @n
156  /// Using this property and ModulationTime, you can create a pitch modulation in the reverberant sound. @n @n Range: 0.0 to 1.0
158  /// @brief The Air Absorption Gain HF property controls the distance-dependent attenuation at high frequencies caused by the propagation medium.
159  /// @remarks It applies to reflected sound only. You can use Air Absorption Gain HF to simulate sound transmission through foggy air, dry air,
160  /// smoky atmosphere, and so on. The default value is 0.994 (-0.05 dB) per meter, which roughly corresponds to typical condition of atmospheric
161  /// humidity, temperature, and so on. Lowering the value simulates a more absorbent medium (more humidity in the air, for example); raising the
162  /// value simulates a less absorbent medium (dry desert air, for example). @n @n Range: 0.892 to 1.0
164  /// @brief Determines the frequency at which high-frequency effects created by other properties are measured, such as @ref EAXReverbParameters::DecayHFRatio.
165  /// @remarks Note that it is necessary to maintain a factor of at least 10 between this property and @ref EAXReverbParameters::LFReference so that low frequency
166  /// and high-frequency properties can be accurately controlled and will produce independent effects. @n @n Range: 1000.0 to 20000.0
168  /// @brief Determines the frequency at which low-frequency effects created by other properties are measured, such as @ref EAXReverbParameters::DecayLFRatio.
169  /// @remarks Note that it is necessary to maintain a factor of at least 10 between this property and @ref EAXReverbParameters::HFReference so that low frequency
170  /// and high-frequency properties can be accurately controlled and will produce independent effects. @n @n Range: 20.0 to 1000.0
172  /// @brief The Room Rolloff Factor property is one of two methods available to attenuate the reflected sound according to source-listener distance.
173  /// @remarks It's defined the same way as OpenAL's Rolloff Factor, but operates on reverb sound instead of direct-path sound. Setting the Room
174  /// Rolloff Factor value to 1.0 specifies that the reflected sound will decay by 6 dB every time the distance doubles. Any value other than 1.0 is
175  /// equivalent to a scaling factor applied to the quantity specified by ((Source listener distance) - (Reference Distance)). Reference Distance is
176  /// an OpenAL source parameter that specifies the inner border for distance rolloff effects: if the source comes closer to the listener than the
177  /// reference distance, the direct-path sound isn't increased as the source comes closer to the listener, and neither is the reflected sound. @n @n
178  /// The default value of Room Rolloff Factor is 0.0 because, by default, the Effects Extension reverb effect naturally manages the reflected sound
179  /// level automatically for each sound source to simulate the natural rolloff of reflected sound vs. distance in typical rooms. @n @n Range: 0.0 to 10.0
181  /// @brief Whether or not to limit high-frequency decay.
182  /// @remarks When this flag is set, the high-frequency decay time automatically stays below a limit value that's derived from the setting of the
183  /// property Air Absorption Gain HF. This limit applies regardless of the setting of the property Decay HF Ratio, and the limit doesn't affect
184  /// the value of Decay HF Ratio. This limit, when on, maintains a natural sounding reverberation decay by allowing you to increase the value of
185  /// Decay Time without the risk of getting an unnaturally long decay time at high frequencies. If this flag is set to false, high-frequency decay
186  /// time isn't automatically limited.
188 
189  /// @brief Struct constructor.
190  /// @param density The Reverb Modal Density controls the coloration of the late reverb.
191  /// @param diffusion The Reverb Diffusion property controls the echo density in the reverberation decay.
192  /// @param gain The master volume control for the reflected sound.
193  /// @param gainHF The Reverb Gain High Frequency property.
194  /// @param gainLF The Reverb Gain Low Frequency property.
195  /// @param decayTime The Decay Time property sets the reverberation decay time.
196  /// @param decayHFRatio The Decay HF Ratio property adjusts the spectral quality of the Decay Time parameter.
197  /// @param decayLFRatio The Decay LF Ratio property adjusts the spectral quality of the Decay Time parameter.
198  /// @param reflectionsGain The Reflections Gain property controls the overall amount of initial reflections relative to the Gain property.
199  /// @param reflectionsDelay The Reflections Delay property is the amount of delay between the arrival time of the direct path from the source to the first reflection from the source.
200  /// @param reflectionsPan The Reflections Pan property is a 3D vector that controls the spatial distribution of the cluster of early reflections.
201  /// @param lateReverbGain The Late Reverb Gain property controls the overall amount of later reverberation relative to the Gain property.
202  /// @param lateReverbDelay The Late Reverb Delay property defines the begin time of the late reverberation relative to the time of the initial reflection.
203  /// @param lateReverbPan The Late Reverb Pan property is a 3D vector that controls the spatial distribution of the late reverb.
204  /// @param echoTime Modulation Time controls the amount of time to take when applying the set Modulation Depth.
205  /// @param echoDepth Echo Depth introduces a cyclic echo in the reverberation decay, which will be noticeable with transient or percussive sounds.
206  /// @param modulationTime Modulation Time controls the amount of time to take when applying the set Modulation Depth.
207  /// @param modulationDepth Modulation Depth controls the amount of pitch change.
208  /// @param airAbsorptionGainHF The Air Absorption Gain HF property controls the distance-dependent attenuation at high frequencies caused by the propagation medium.
209  /// @param hFReference Determines the frequency at which high-frequency effects created by other properties are measured, such as @ref EAXReverbParameters::DecayHFRatio.
210  /// @param lFReference Determines the frequency at which low-frequency effects created by other properties are measured, such as @ref EAXReverbParameters::DecayLFRatio.
211  /// @param roomRolloffFactor The Room Rolloff Factor property is one of two methods available to attenuate the reflected sound according to source-listener distance.
212  /// @param decayHFLimit Whether or not to limit high-frequency decay.
214  Real density = 1.0f,
215  Real diffusion = 1.0f,
216  Real gain = 0.32f,
217  Real gainHF = 0.89f,
218  Real gainLF = 0.0f,
219  Real decayTime = 1.49f,
220  Real decayHFRatio = 0.83f,
221  Real decayLFRatio = 1.0f,
222  Real reflectionsGain = 0.05f,
223  Real reflectionsDelay = 0.007f,
224  Vector3 reflectionsPan = Vector3(0.0f, 0.0f, 0.0f),
225  Real lateReverbGain = 1.26f,
226  Real lateReverbDelay = 0.011f,
227  Vector3 lateReverbPan = Vector3(0.0f, 0.0f, 0.0f),
228  Real echoTime = 0.25f,
229  Real echoDepth = 0.0f,
230  Real modulationTime = 0.25f,
231  Real modulationDepth = 0.0f,
232  Real airAbsorptionGainHF = 0.994f,
233  Real hFReference = 5000.0f,
234  Real lFReference = 250.0f,
235  Real roomRolloffFactor = 0.0f,
236  Boole decayHFLimit = true) :
237  Density(density), Diffusion(diffusion), Gain(gain), GainHF(gainHF), GainLF(gainLF),
238  DecayTime(decayTime), DecayHFRatio(decayHFRatio), DecayLFRatio(decayLFRatio),
239  ReflectionsGain(reflectionsGain), ReflectionsDelay(reflectionsDelay),
240  ReflectionsPan(reflectionsPan), LateReverbGain(lateReverbGain),
241  LateReverbDelay(lateReverbDelay), LateReverbPan(lateReverbPan),
242  EchoTime(echoTime), EchoDepth(echoDepth),ModulationTime(modulationTime),
243  ModulationDepth(modulationDepth), AirAbsorptionGainHF(airAbsorptionGainHF),
244  HFReference(hFReference), LFReference(lFReference),
245  RoomRolloffFactor(roomRolloffFactor), DecayHFLimit(decayHFLimit) { }
246  };//EAXReverbParameters
247 
248  ///////////////////////////////////////////////////////////////////////////////
249  /// @brief This is a struct containing all the parameters needed to describe a Reverb effect.
250  /// @details This is similar in purpose to the @ref EAXReverbParameters struct, but has fewer parameters/features enabling it
251  /// to run on more limited hardware. Using this may be a good fallback option for audio reverb effects.
252  ///////////////////////////////////////
254  {
255  /// @brief Reverb Modal Density controls the coloration of the late reverb.
256  /// @remarks Lowering the value adds more coloration to the late reverb. @n @n Range: 0.0 to 1.0
258  /// @brief The Reverb Diffusion property controls the echo density in the reverberation decay.
259  /// @remarks It's set by default to 1.0, which provides the highest density. Reducing diffusion gives the reverberation a more "grainy" character
260  /// that is especially noticeable with percussive sound sources. If you set a diffusion value of 0.0, the later reverberation sounds like a
261  /// succession of distinct echoes. @n @n Range: 0.0 to 1.0
263  /// @brief The Reverb Gain property is the master volume control for the reflected sound that the reverb effect adds to all sound sources.
264  /// @remarks It sets the maximum amount of reflections and reverberation added to the final sound mix. The value of the Reverb Gain property
265  /// ranges from 1.0 (0db) (the maximum amount) to 0.0 (-100db) (no reflected sound at all). @n @n Range: 0.0 to 1.0
267  /// @brief The Reverb Gain HF property further tweaks reflected sound by attenuating it at high frequencies.
268  /// @remarks It controls a low-pass filter that applies globally to the reflected sound of all sound sources feeding the particular instance of
269  /// the reverb effect. The value of the Reverb Gain HF property ranges from 1.0 (0db) (no filter) to 0.0 (-100db) (virtually no reflected sound).
270  /// @n @n Range: 0.0 to 1.0
272  /// @brief The Decay Time property sets the reverberation decay time.
273  /// @remarks It ranges from 0.1 (typically a small room with very dead surfaces) to 20.0 (typically a large room with very live surfaces).
274  /// @n @n Range: 0.1 to 20.0
276  /// @brief The Decay HF Ratio property sets the spectral quality of the Decay Time parameter.
277  /// @remarks It is the ratio of high-frequency decay time relative to the time set by Decay Time. The Decay HF Ratio value 1.0 is neutral: the
278  /// decay time is equal for all frequencies. As Decay HF Ratio increases above 1.0, the high-frequency decay time increases so it's longer than
279  /// the decay time at low frequencies. You hear a more brilliant reverberation with a longer decay at high frequencies. As the Decay HF Ratio
280  /// value decreases below 1.0, the high-frequency decay time decreases so it's shorter than the decay time of the low frequencies. You hear a
281  /// more natural reverberation. @n @n Range: 0.1 to 2.0
283  /// @brief The Reflections Gain property controls the overall amount of initial reflections relative to the Gain property.
284  /// @remarks The Gain property sets the overall amount of reflected sound: both initial reflections and later reverberation. The value of Reflections
285  /// Gain ranges from a maximum of 3.16 (+10 dB) to a minimum of 0.0 (-100 dB) (no initial reflections at all), and is corrected by the value of the Gain
286  /// property. The Reflections Gain property does not affect the subsequent reverberation decay. @n @n Range: 0.0 to 3.16
288  /// @brief The Reflections Delay property is the amount of delay between the arrival time of the direct path from the source to the first reflection from the source.
289  /// @remarks It ranges from 0 to 300 milliseconds. You can reduce or increase Reflections Delay to simulate closer or more distant reflective surfaces and
290  /// therefore control the perceived size of the room. @n @n Range: 0.0 to 0.3
292  /// @brief The Late Reverb Gain property controls the overall amount of later reverberation relative to the Gain property.
293  /// @remarks The Gain property sets the overall amount of both initial reflections and later reverberation. The value of Late Reverb Gain ranges
294  /// from a maximum of 10.0 (+20 dB) to a minimum of 0.0 (-100 dB) (no late reverberation at all). @n @n Range: 0.0 to 10.0
296  /// @brief The Late Reverb Delay property defines the begin time of the late reverberation relative to the time of the initial reflection.
297  /// @remarks It ranges from 0 to 100 milliseconds. Reducing or increasing Late Reverb Delay is useful for simulating a smaller or larger room.
298  /// @n @n Range: 0.0 to 0.1
300  /// @brief The Air Absorption Gain HF property controls the distance-dependent attenuation at high frequencies caused by the propagation medium.
301  /// @remarks It applies to reflected sound only. You can use Air Absorption Gain HF to simulate sound transmission through foggy air, dry air, smoky
302  /// atmosphere, and so on. The default value is 0.994 (-0.05 dB) per meter, which roughly corresponds to typical condition of atmospheric humidity,
303  /// temperature, and so on. Lowering the value simulates a more absorbent medium (more humidity in the air, for example); raising the value simulates
304  /// a less absorbent medium (dry desert air, for example). @n @n Range: 0.892 to 1.0
306  /// @brief The Room Rolloff Factor property is one of two methods available to attenuate the reflected sound according to source-listener distance.
307  /// @remarks It's defined the same way as OpenAL's Rolloff Factor, but operates on reverb sound instead of direct-path sound. Setting the Room Rolloff
308  /// Factor value to 1.0 specifies that the reflected sound will decay by 6 dB every time the distance doubles. Any value other than 1.0 is equivalent to a
309  /// scaling factor applied to the quantity specified by ((Source listener distance) - (Reference Distance)). Reference Distance is an OpenAL source
310  /// parameter that specifies the inner border for distance rolloff effects: if the source comes closer to the listener than the reference distance, the
311  /// direct-path sound isn't increased as the source comes closer to the listener, and neither is the reflected sound. @n @n
312  /// The default value of Room Rolloff Factor is 0.0 because, by default, the Effects Extension reverb effect naturally manages the reflected sound level
313  /// automatically for each sound source to simulate the natural rolloff of reflected sound vs. distance in typical rooms. @n @n Range: 0.0 to 10.0
315  /// @brief Whether or not to limit high-frequency decay.
316  /// @remarks When this flag is set, the high-frequency decay time automatically stays below a limit value that's derived from the setting of the property
317  /// Air Absorption Gain HF. This limit applies regardless of the setting of the property Decay HF Ratio, and the limit doesn't affect the value of Decay HF
318  /// Ratio. This limit, when on, maintains a natural sounding reverberation decay by allowing you to increase the value of Decay Time without the risk of
319  /// getting an unnaturally long decay time at high frequencies. If this flag is set to false, high-frequency decay time isn't automatically limited.
321 
322  /// @brief Struct constructor.
323  /// @param density Reverb Modal Density controls the coloration of the late reverb.
324  /// @param diffusion The Reverb Diffusion property controls the echo density in the reverberation decay.
325  /// @param gain The Reverb Gain property is the master volume control for the reflected sound that the reverb effect adds to all sound sources.
326  /// @param gainHF The Reverb Gain HF property further tweaks reflected sound by attenuating it at high frequencies.
327  /// @param decayTime The Decay Time property sets the reverberation decay time.
328  /// @param decayHFRatio The Decay HF Ratio property sets the spectral quality of the Decay Time parameter.
329  /// @param reflectionsGain The Reflections Gain property controls the overall amount of initial reflections relative to the Gain property.
330  /// @param reflectionsDelay The Reflections Delay property is the amount of delay between the arrival time of the direct path from the source to the first reflection from the source.
331  /// @param lateReverbGain The Late Reverb Gain property controls the overall amount of later reverberation relative to the Gain property.
332  /// @param lateReverbDelay The Late Reverb Delay property defines the begin time of the late reverberation relative to the time of the initial reflection.
333  /// @param airAbsorptionGainHF The Air Absorption Gain HF property controls the distance-dependent attenuation at high frequencies caused by the propagation medium.
334  /// @param roomRolloffFactor The Room Rolloff Factor property is one of two methods available to attenuate the reflected sound according to source-listener distance.
335  /// @param decayHFLimit Whether or not to limit high-frequency decay.
337  Real density = 1.0f,
338  Real diffusion = 1.0f,
339  Real gain = 0.32f,
340  Real gainHF = 0.89f,
341  Real decayTime = 1.49f,
342  Real decayHFRatio = 0.83f,
343  Real reflectionsGain = 0.05f,
344  Real reflectionsDelay = 0.007f,
345  Real lateReverbGain = 1.26f,
346  Real lateReverbDelay = 0.011f,
347  Real airAbsorptionGainHF = 0.994f,
348  Real roomRolloffFactor = 0.0f,
349  Boole decayHFLimit = true) :
350  Density(density), Diffusion(diffusion), Gain(gain), GainHF(gainHF),
351  DecayTime(decayTime), DecayHFRatio(decayHFRatio),
352  ReflectionsGain(reflectionsGain), ReflectionsDelay(reflectionsDelay),
353  LateReverbGain(lateReverbGain), LateReverbDelay(lateReverbDelay),
354  AirAbsorptionGainHF(airAbsorptionGainHF), RoomRolloffFactor(roomRolloffFactor),
355  DecayHFLimit(decayHFLimit) { }
356  };//ReverbParameters
357 
358  ///////////////////////////////////////////////////////////////////////////////
359  /// @brief This is a struct containing all the parameters needed to describe a Chorus effect.
360  /// @details The chorus effect essentially replays the input audio accompanied by another slightly delayed version of the signal, creating a "doubling" effect.
361  ///////////////////////////////////////
363  {
364  /// @brief The shape of the wave if it were viewed on an oscillator.
366  {
367  ECW_Sinusoid, ///< A curved oscillation with smoother transitions at peak frequencies.
368  ECW_Triangle ///< A linear oscillation with rapid transitions at peak frequencies.
369  };
370 
371  /// @brief This property sets the waveform shape of the Low Frequency Oscillation that controls the delay time of the delayed signals.
373  /// @brief This property controls the phase difference between the left and rightLow Frequency Oscillation's.
374  /// @remarks At zero degrees the two LFOs are synchronized. Use this parameter to create the illusion of an expanded stereo field of the output signal.
375  /// @n @n Range: -180 to 180
377  /// @brief This property sets the modulation rate of the Low Frequency Oscillation that controls the delay time of the delayed signals.
378  /// @remarks Range: 0.0 to 10.0
380  /// @brief This property controls the amount by which the delay time is modulated by the Low Frequency Oscillation.
381  /// @remarks Range: 0.0 to 1.0
383  /// @brief This property controls the amount of processed signal that is fed back to the input of the chorus effect.
384  /// @remarks Negative values will reverse the phase of the feedback signal. At full magnitude the identical sample will repeat endlessly. At lower
385  /// magnitudes the sample will repeat and fade out over time. Use this parameter to create a "cascading" chorus effect. @n @n Range: -1.0 to 1.0
387  /// @brief This property controls the average amount of time the sample is delayed before it is played back.
388  /// @remarks This property can also control with feedback, the amount of time between iterations of the sample. Larger values lower the pitch. Smaller values
389  /// make the chorus sound like a flanger, but with different frequency characteristics. @n @n Range: 0.0 to 0.016
391 
392  /// @brief Struct constructor.
393  /// @param waveform This property sets the waveform shape of the Low Frequency Oscillation that controls the delay time of the delayed signals.
394  /// @param phase This property controls the phase difference between the left and rightLow Frequency Oscillation's.
395  /// @param rate This property sets the modulation rate of the Low Frequency Oscillation that controls the delay time of the delayed signals.
396  /// @param depth This property controls the amount by which the delay time is modulated by the Low Frequency Oscillation.
397  /// @param feedback This property controls the amount of processed signal that is fed back to the input of the chorus effect.
398  /// @param delay This property controls the average amount of time the sample is delayed before it is played back.
400  ChorusWaveform waveform = ECW_Triangle,
401  Integer phase = 90,
402  Real rate = 1.1f,
403  Real depth = 0.1f,
404  Real feedback = 0.25f,
405  Real delay = 0.016f) :
406  Waveform(waveform), Phase(phase), Rate(rate), Depth(depth), Feedback(feedback),
407  Delay(delay) { }
408  };// ChorusParameters
409 
410  ///////////////////////////////////////////////////////////////////////////////
411  /// @brief This is a struct containing all the parameters needed to describe a Distortion effect.
412  /// @details The distortion effect simulates turning up (overdriving) the gain stage on a guitar amplifier or adding a distortion pedal to an instrument's output.
413  ///////////////////////////////////////
415  {
416  /// @brief This property controls the shape of the distortion.
417  /// @remarks The higher the value for Edge, the "dirtier" and "fuzzier" the effect. @n @n Range: 0.0 to 1.0
419  /// @brief This property allows you to attenuate the distorted sound.
420  /// @remarks Range: 0.01 to 1.0
422  /// @brief Input signal can have a low pass filter applied, to limit the amount of high frequency signal feeding into the distortion effect.
423  /// @remarks Range: 80.0 to 24000.0
425  /// @brief This property controls the frequency at which the post-distortion attenuation (Gain) is active.
426  /// @remarks Range: 80.0 to 24000.0
428  /// @brief This property controls the bandwidth of the post-distortion attenuation.
429  /// @remarks Range: 80.0 to 24000.0
431 
432  /// @brief Struct constructor.
433  /// @param edge This property controls the shape of the distortion.
434  /// @param gain This property allows you to attenuate the distorted sound.
435  /// @param lowpassCutoff Input signal can have a low pass filter applied, to limit the amount of high frequency signal feeding into the distortion effect.
436  /// @param eqCenter This property controls the frequency at which the post-distortion attenuation (Gain) is active.
437  /// @param eqBandwidth This property controls the bandwidth of the post-distortion attenuation.
439  Real edge = 0.2f,
440  Real gain = 0.05f,
441  Real lowpassCutoff = 8000.0f,
442  Real eqCenter = 3600.0f,
443  Real eqBandwidth = 3600.0f) :
444  Edge(edge), Gain(gain), LowpassCutoff(lowpassCutoff), EqCenter(eqCenter),
445  EqBandwidth(eqBandwidth) { }
446  };//DistortionParameters
447 
448  ///////////////////////////////////////////////////////////////////////////////
449  /// @brief This is a struct containing all the parameters needed to describe an echo effect.
450  /// @details The echo effect generates discrete, delayed instances of the input signal.
451  ///////////////////////////////////////
453  {
454  /// @brief This property controls the delay between the original sound and the first "tap", or echo instance.
455  /// @remarks Range: 0.0 to 0.207
457  /// @brief This property controls the delay between the first "tap" and the second "tap".
458  /// @remarks Range: 0.0 to 0.404
460  /// @brief This property controls the amount of high frequency damping applied to each echo.
461  /// @remarks As the sound is subsequently fed back for further echoes, damping results in an echo which progressively gets softer in tone as well as
462  /// intensity. @n @n Range: 0.0 to 0.99
464  /// @brief This property controls the amount of feedback the output signal fed back into the input.
465  /// @remarks Use this parameter to create "cascading" echoes. At full magnitude, the identical sample will repeat endlessly. Below full magnitude,
466  /// the sample will repeat and fade. @n @n Range: 0.0 to 1.0
468  /// @brief This property controls how hard panned the individual echoes are.
469  /// @remarks With a value of 1.0, the first "tap" will be panned hard left, and the second "tap" hard right. A value of -1.0 gives the opposite result.
470  /// Settings nearer to 0.0 result in less emphasized panning. @n @n Range: -1.0 to 1.0
472 
473  /// @brief Struct constructor.
474  /// @param delay This property controls the delay between the original sound and the first "tap", or echo instance.
475  /// @param lRDelay This property controls the delay between the first "tap" and the second "tap".
476  /// @param damping This property controls the amount of high frequency damping applied to each echo.
477  /// @param feedback This property controls the amount of feedback the output signal fed back into the input.
478  /// @param spread This property controls how hard panned the individual echoes are.
480  Real delay = 0.1f,
481  Real lRDelay = 0.1f,
482  Real damping = 0.5f,
483  Real feedback = 0.5f,
484  Real spread = -1.0f) :
485  Delay(delay), LRDelay(lRDelay), Damping(damping), Feedback(feedback),
486  Spread(spread) { }
487  };//EchoParameters
488 
489  ///////////////////////////////////////////////////////////////////////////////
490  /// @brief This is a struct containing all the parameters needed to describe an flanger effect.
491  /// @details The flanger effect creates a "tearing" or "whooshing" sound (like a jet flying overhead).
492  ///////////////////////////////////////
494  {
495  /// @brief The shape of the wave if it were viewed on an oscillator.
497  {
498  EFW_Sinusoid, ///< A curved oscillation with smoother transitions at peak frequencies.
499  EFW_Triangle ///< A linear oscillation with rapid transitions at peak frequencies.
500  };
501 
502  /// @brief Selects the shape of the LFO waveform that controls the amount of the delay of the sampled signal.
504  /// @brief This changes the phase difference between the left and right LFO's.
505  /// @remarks At zero degrees the two LFOs are synchronized. @n @n Range: -180 to 180
507  /// @brief The number of times per second the LFO controlling the amount of delay repeats.
508  /// @remarks Higher values increase the pitch modulation. @n @n Range: 0.0 to 10.0
510  /// @brief The ratio by which the delay time is modulated by the LFO.
511  /// @remarks Use this parameter to increase the pitch modulation. @n @n Range: 0.0 to 1.0
513  /// @brief This is the amount of the output signal level fed back into the effect's input.
514  /// @remarks A negative value will reverse the phase of the feedback signal. Use this parameter to create an "intense metallic" effect. At full magnitude,
515  /// the identical sample will repeat endlessly. At less than full magnitude, the sample will repeat and fade out over time. @n @n Range: -1.0 to 1.0
517  /// @brief The average amount of time the sample is delayed before it is played back; with feedback, the amount of time between iterations of the sample.
518  /// @remarks Range: 0.0 to 0.004
520 
521  /// @brief Struct constructor.
522  /// @param waveform Selects the shape of the LFO waveform that controls the amount of the delay of the sampled signal.
523  /// @param phase This changes the phase difference between the left and right LFO's.
524  /// @param rate The number of times per second the LFO controlling the amount of delay repeats.
525  /// @param depth The ratio by which the delay time is modulated by the LFO.
526  /// @param feedback This is the amount of the output signal level fed back into the effect's input.
527  /// @param delay The average amount of time the sample is delayed before it is played back; with feedback, the amount of time between iterations of the sample.
529  FlangerWaveform waveform = EFW_Triangle,
530  Integer phase = 0,
531  Real rate = 0.27f,
532  Real depth = 1.0f,
533  Real feedback = -0.5f,
534  Real delay = 0.002f) :
535  Waveform(waveform), Phase(phase), Rate(rate), Depth(depth), Feedback(feedback),
536  Delay(delay) { }
537  };//FlangerParameters
538 
539  ///////////////////////////////////////////////////////////////////////////////
540  /// @brief This is a struct containing all the parameters needed to describe a frequency shift effect.
541  /// @details The frequency shifter is a single-sideband modulator, which translates all the component frequencies of the input signal by an equal amount.
542  ///////////////////////////////////////
544  {
545  /// @brief An enum describing the direction the frequency of the input signal will be shifted.
547  {
548  ESD_Down,
549  ESD_Up,
550  ESD_Off
551  };
552 
553  /// @brief This is the carrier frequency.
554  /// @remarks For carrier frequencies below the audible range, the singlesideband modulator may produce phaser effects, spatial effects or a slight pitch-shift.
555  /// As the carrier frequency increases, the timbre of the sound is affected; a piano or guitar note becomes like a bell's chime, and a human voice sounds
556  /// extraterrestrial! @n @n Range: 0.0 to 24000.0
558  /// @brief These select which internal signals are added together to produce the output.
559  /// @remarks Different combinations of values will produce slightly different tonal and spatial effects.
561  /// @brief These select which internal signals are added together to produce the output.
562  /// @remarks Different combinations of values will produce slightly different tonal and spatial effects.
564 
565  /// @brief Struct constructor.
566  /// @param frequency This is the carrier frequency.
567  /// @param left These select which internal signals are added together to produce the output.
568  /// @param right These select which internal signals are added together to produce the output.
570  Real frequency = 0.0f,
571  ShiftDirection left = ESD_Down,
572  ShiftDirection right = ESD_Down) :
573  Frequency(frequency), Left(left), Right(right) { }
574  };//FrequencyShiftParameters
575 
576  ///////////////////////////////////////////////////////////////////////////////
577  /// @brief This is a struct containing all the parameters needed to describe a vocal morpher effect.
578  /// @details The vocal morpher consists of a pair of 4-band formant filters, used to impose vocal tract effects upon the input signal.
579  ///////////////////////////////////////
581  {
582  /// @brief An enum describing the basic phoneme's of the english language.
584  {
585  EMP_A,
586  EMP_E,
587  EMP_I,
588  EMP_O,
589  EMP_U,
590  EMP_AA,
591  EMP_AE,
592  EMP_AH,
593  EMP_AO,
594  EMP_EH,
595  EMP_ER,
596  EMP_IH,
597  EMP_IY,
598  EMP_UH,
599  EMP_UW,
600  EMP_B,
601  EMP_D,
602  EMP_F,
603  EMP_G,
604  EMP_J,
605  EMP_K,
606  EMP_L,
607  EMP_M,
608  EMP_N,
609  EMP_P,
610  EMP_R,
611  EMP_S,
612  EMP_T,
613  EMP_V,
614  EMP_Z
615  };
616 
617  /// @brief The shape of the wave if it were viewed on an oscillator.
619  {
620  EMW_Sinusoid, ///< A curved oscillation with smoother transitions at peak frequencies.
621  EMW_Triangle, ///< A linear oscillation with rapid transitions at peak frequencies.
622  EMW_Saw ///< A curved upward oscillation with a rapid drop at it's peak frequency.
623  };
624 
625  /// @brief The source phoneme.
626  /// @remarks If both parameters are set to the same phoneme, that determines the filtering effect that will be heard. If these two parameters are set to
627  /// different phonemes, the filtering effect will morph between the two settings at a rate specified by Rate.
629  /// @brief The destination phoneme.
630  /// @remarks If both parameters are set to the same phoneme, that determines the filtering effect that will be heard. If these two parameters are set to
631  /// different phonemes, the filtering effect will morph between the two settings at a rate specified by Rate.
633  /// @brief This is used to adjust the pitch of phoneme filter A in 1-semitone increments.
634  /// @remarks Range: -24 to 24
636  /// @brief This is used to adjust the pitch of phoneme filter B in 1-semitone increments.
637  /// @remarks Range: -24 to 24
639  /// @brief This controls the shape of the low-frequency oscillator used to morph between the two phoneme filters.
641  /// @brief This controls the frequency of the low-frequency oscillator used to morph between the two phoneme filters.
642  /// @remarks Range: 0.0 to 10.0
644 
645  /// @brief Struct constructor.
646  /// @param phonemeA The source phoneme.
647  /// @param phonemeB The destination phoneme.
648  /// @param phonemeACoarseTune This is used to adjust the pitch of phoneme filter A in 1-semitone increments.
649  /// @param phonemeBCoarseTune This is used to adjust the pitch of phoneme filter B in 1-semitone increments.
650  /// @param waveform This controls the shape of the low-frequency oscillator used to morph between the two phoneme filters.
651  /// @param rate This controls the frequency of the low-frequency oscillator used to morph between the two phoneme filters.
653  MorpherPhoneme phonemeA = EMP_A,
654  MorpherPhoneme phonemeB = EMP_ER,
655  Integer phonemeACoarseTune = 0,
656  Integer phonemeBCoarseTune = 0,
657  MorpherWaveform waveform = EMW_Sinusoid,
658  Real rate = 1.41f) :
659  PhonemeA(phonemeA), PhonemeB(phonemeB), PhonemeACoarseTune(phonemeACoarseTune),
660  PhonemeBCoarseTune(phonemeBCoarseTune), Waveform(waveform), Rate(rate) { }
661  };//VocalMorpherParameters
662 
663  ///////////////////////////////////////////////////////////////////////////////
664  /// @brief This is a struct containing all the parameters needed to describe a pitch shift effect.
665  /// @details The pitch shifter applies time-invariant pitch shifting to the input signal, over a one octave range and controllable at a semi-tone and cent resolution.
666  ///////////////////////////////////////
668  {
669  /// @brief This sets the number of semitones by which the pitch is shifted.
670  /// @remarks There are 12 semitones per octave. Negative values create a downwards shift in pitch, positive values pitch the sound upwards. @n @n Range: -12 to 12
672  /// @brief This sets the number of cents between Semitones a pitch is shifted.
673  /// @remarks A Cent is 1/100th of a Semitone. Negative values create a downwards shift in pitch, positive values pitch the sound upwards. @n @n Range: -50 to 50
675 
676  /// @brief Struct constructor.
677  /// @param coarseTune This sets the number of semitones by which the pitch is shifted.
678  /// @param fineTune This sets the number of cents between Semitones a pitch is shifted.
680  Integer coarseTune = 12,
681  Integer fineTune = 0) :
682  CoarseTune(coarseTune), FineTune(fineTune) { }
683  };//PitchShifterParameters
684 
685  ///////////////////////////////////////////////////////////////////////////////
686  /// @brief This is a struct containing all the parameters needed to describe a ring modulation effect.
687  /// @details The ring modulator multiplies an input signal by a carrier signal in the time domain, resulting in tremolo or inharmonic effects.
688  ///////////////////////////////////////
690  {
691  /// @brief The shape of the wave if it were viewed on an oscillator.
693  {
694  EMW_Sinusoid, ///< A curved oscillation with smoother transitions at peak frequencies.
695  EMW_Saw, ///< A curved upward oscillation with a rapid drop at it's peak frequency.
696  EMW_Square ///< A digital waveform that only expresses the highest and lowest frequencies. Effectively "on" or "off".
697  };
698 
699  /// @brief This is the frequency of the carrier signal.
700  /// @remarks If the carrier signal is slowly varying (less than 20 Hz), the result is a tremolo (slow amplitude variation) effect. If the carrier signal is
701  /// in the audio range, audible upper and lower sidebands begin to appear, causing an inharmonic effect. The carrier signal itself is not heard in the output.
702  /// @n @n Range: 0.0 to 8000.0
704  /// @brief This controls the cutoff frequency at which the input signal is high-pass filtered before being ring modulated.
705  /// @remarks If the cutoff frequency is 0, the entire signal will be ring modulated. If the cutoff frequency is high, very little of the signal (only those
706  /// parts above the cutoff) will be ring modulated. @n @n Range: 0.0 to 24000.0
708  /// @brief This controls which waveform is used as the carrier signal.
709  /// @remarks Traditional ring modulator and tremolo effects generally use a sinusoidal carrier. Sawtooth and square waveforms are may cause unpleasant aliasing.
711 
712  /// @brief Struct constructor.
713  /// @param frequency This is the frequency of the carrier signal.
714  /// @param highPassCutoff This controls the cutoff frequency at which the input signal is high-pass filtered before being ring modulated.
715  /// @param waveform This controls which waveform is used as the carrier signal.
717  Real frequency = 440.0f,
718  Real highPassCutoff = 800.0f,
719  ModulatorWaveform waveform = EMW_Sinusoid) :
720  Frequency(frequency), HighPassCutoff(highPassCutoff), Waveform(waveform) { }
721  };//RingModulatorParameters
722 
723  ///////////////////////////////////////////////////////////////////////////////
724  /// @brief This is a struct containing all the parameters needed to describe an Auto-Wah effect.
725  /// @details The Auto-wah effect emulates the sound of a wah-wah pedal used with an electric guitar, or a mute on a brass instrument.
726  ///////////////////////////////////////
728  {
729  /// @brief This property controls the time the filtering effect takes to sweep from minimum to maximum center frequency when it is triggered by input signal.
730  /// @remarks Range: 0.0001 to 1.0
732  /// @brief This property controls the time the filtering effect takes to sweep from maximum back to base center frequency, when the input signal ends.
733  /// @remarks Range: 0.0001 to 1.0
735  /// @brief This property controls the resonant peak, sometimes known as emphasis or Q, of the auto-wah band-pass filter.
736  /// @remarks Resonance occurs when the effect boosts the frequency content of the sound around the point at which the filter is working. A high value promotes
737  /// a highly resonant, sharp sounding effect. @n @n Range: 2.0 to 1000.0
739  /// @brief This property controls the input signal level at which the band-pass filter will be fully opened.
740  /// @remarks Range: 0.00003 to 31621.0
742 
743  /// @brief Struct constructor.
744  /// @param attackTime This property controls the time the filtering effect takes to sweep from minimum to maximum center frequency when it is triggered by input signal.
745  /// @param releaseTime This property controls the time the filtering effect takes to sweep from maximum back to base center frequency, when the input signal ends.
746  /// @param resonance This property controls the resonant peak, sometimes known as emphasis or Q, of the auto-wah band-pass filter.
747  /// @param peakGain This property controls the input signal level at which the band-pass filter will be fully opened.
749  Real attackTime = 0.06f,
750  Real releaseTime = 0.06f,
751  Real resonance = 1000.0f,
752  Real peakGain = 11.22f) :
753  AttackTime(attackTime), ReleaseTime(releaseTime), Resonance(resonance),
754  PeakGain(peakGain) { }
755  };//AutowahParameters
756 
757  ///////////////////////////////////////////////////////////////////////////////
758  /// @brief This is a struct containing all the parameters needed to describe a compressor effect.
759  /// @details The Automatic Gain Control effect performs the same task as a studio compressor, evening out the audio dynamic range of an input sound.
760  ///////////////////////////////////////
762  {
763  /// @brief The Compressor can only be switched on and off, it cannot be adjusted.
765 
766  /// @brief Struct constructor.
767  /// @param active The Compressor can only be switched on and off, it cannot be adjusted.
769  Boole active = true) :
770  Active(active) { }
771  };// CompressorParameters
772 
773  ///////////////////////////////////////////////////////////////////////////////
774  /// @brief This is a struct containing all the parameters needed to describe an equalizer effect.
775  /// @details The OpenAL Effects Extension EQ is very flexible, providing tonal control over four different adjustable frequency ranges.
776  ///////////////////////////////////////
778  {
779  /// @brief This property controls amount of cut or boost on the low frequency range.
780  /// @remarks Range: 0.126 to 7.943
782  /// @brief This property controls the low frequency below which signal will be cut off.
783  /// @remarks Range: 50.0 to 800.0
785  /// @brief This property allows you to cut / boost signal on the "mid1" range.
786  /// @remarks Range: 0.126 to 7.943
788  /// @brief This property sets the center frequency for the "mid1" range.
789  /// @remarks Range: 200.0 to 3000.0
791  /// @brief This property controls the width of the "mid1" range.
792  /// @remarks Range: 0.01 to 1.0
794  /// @brief This property allows you to cut / boost signal on the "mid2" range.
795  /// @remarks Range: 0.126 to 7.943
797  /// @brief This property sets the center frequency for the "mid2" range.
798  /// @remarks Range: 1000.0 to 8000.0
800  /// @brief This property controls the width of the "mid2" range.
801  /// @remarks Range: 0.01 to 1.0
803  /// @brief This property allows you to cut / boost the signal at high frequencies.
804  /// @remarks Range: 0.126 to 7.943
806  /// @brief This property controls the high frequency above which signal will be cut off.
807  /// @remarks Range: 4000.0 to 16000.0
809 
810  /// @brief Struct constructor.
811  /// @param lowGain This property controls amount of cut or boost on the low frequency range.
812  /// @param lowCutoff This property controls the low frequency below which signal will be cut off.
813  /// @param mid1Gain This property allows you to cut / boost signal on the "mid1" range.
814  /// @param mid1Center This property sets the center frequency for the "mid1" range.
815  /// @param mid1Width This property controls the width of the "mid1" range.
816  /// @param mid2Gain This property allows you to cut / boost signal on the "mid2" range.
817  /// @param mid2Center This property sets the center frequency for the "mid2" range.
818  /// @param mid2Width This property controls the width of the "mid2" range.
819  /// @param highGain This property allows you to cut / boost the signal at high frequencies.
820  /// @param highCutoff This property controls the high frequency above which signal will be cut off.
822  Real lowGain = 1.0f,
823  Real lowCutoff = 200.0f,
824  Real mid1Gain = 1.0f,
825  Real mid1Center = 500.0f,
826  Real mid1Width = 1.0f,
827  Real mid2Gain = 1.0f,
828  Real mid2Center = 3000.0f,
829  Real mid2Width = 1.0f,
830  Real highGain = 1.0f,
831  Real highCutoff = 6000.0f) :
832  LowGain(lowGain), LowCutoff(lowCutoff), Mid1Gain(mid1Gain),
833  Mid1Center(mid1Center), Mid1Width(mid1Width), Mid2Gain(mid2Gain),
834  Mid2Center(mid2Center), Mid2Width(mid2Width), HighGain(highGain),
835  HighCutoff(highCutoff) { }
836  };//EqualizerParameters
837  }//Audio
838 }//Mezzanine
839 
840 #endif
FlangerWaveform Waveform
Selects the shape of the LFO waveform that controls the amount of the delay of the sampled signal...
Real Mid2Gain
This property allows you to cut / boost signal on the "mid2" range.
EqualizerParameters(Real lowGain=1.0f, Real lowCutoff=200.0f, Real mid1Gain=1.0f, Real mid1Center=500.0f, Real mid1Width=1.0f, Real mid2Gain=1.0f, Real mid2Center=3000.0f, Real mid2Width=1.0f, Real highGain=1.0f, Real highCutoff=6000.0f)
Struct constructor.
MorpherPhoneme
An enum describing the basic phoneme's of the english language.
Real Rate
This property sets the modulation rate of the Low Frequency Oscillation that controls the delay time ...
Real DecayHFRatio
The Decay HF Ratio property adjusts the spectral quality of the Decay Time parameter.
Real Mid2Width
This property controls the width of the "mid2" range.
Real EqBandwidth
This property controls the bandwidth of the post-distortion attenuation.
This is a struct containing all the parameters needed to describe a Reverb effect.
This is a struct containing all the parameters needed to describe an echo effect. ...
Real EchoDepth
Echo Depth introduces a cyclic echo in the reverberation decay, which will be noticeable with transie...
Real Mid2Center
This property sets the center frequency for the "mid2" range.
Real AttackTime
This property controls the time the filtering effect takes to sweep from minimum to maximum center fr...
A curved oscillation with smoother transitions at peak frequencies.
This is a struct containing all the parameters needed to describe a vocal morpher effect...
Real Frequency
This is the carrier frequency.
MorpherPhoneme PhonemeA
The source phoneme.
bool Boole
Generally acts a single bit, true or false.
Definition: datatypes.h:173
Real Damping
This property controls the amount of high frequency damping applied to each echo. ...
Real HighGain
This property allows you to cut / boost the signal at high frequencies.
Real Gain
The master volume control for the reflected sound.
PitchShifterParameters(Integer coarseTune=12, Integer fineTune=0)
Struct constructor.
FlangerParameters(FlangerWaveform waveform=EFW_Triangle, Integer phase=0, Real rate=0.27f, Real depth=1.0f, Real feedback=-0.5f, Real delay=0.002f)
Struct constructor.
ModulatorWaveform
The shape of the wave if it were viewed on an oscillator.
This is a struct containing all the parameters needed to describe a pitch shift effect.
ShiftDirection Right
These select which internal signals are added together to produce the output.
Real EqCenter
This property controls the frequency at which the post-distortion attenuation (Gain) is active...
MorpherWaveform
The shape of the wave if it were viewed on an oscillator.
Real Edge
This property controls the shape of the distortion.
RingModulatorParameters(Real frequency=440.0f, Real highPassCutoff=800.0f, ModulatorWaveform waveform=EMW_Sinusoid)
Struct constructor.
This is a struct containing all the parameters needed to describe an flanger effect.
CompressorParameters(Boole active=true)
Struct constructor.
Real Depth
This property controls the amount by which the delay time is modulated by the Low Frequency Oscillati...
int Integer
A datatype used to represent any integer close to.
Definition: datatypes.h:154
Vector3 LateReverbPan
The Late Reverb Pan property is a 3D vector that controls the spatial distribution of the late reverb...
Real Delay
This property controls the average amount of time the sample is delayed before it is played back...
Real ReflectionsGain
The Reflections Gain property controls the overall amount of initial reflections relative to the Gain...
Real EchoTime
Echo Time controls the rate at which the cyclic echo repeats itself along the reverberation decay...
Real LowpassCutoff
Input signal can have a low pass filter applied, to limit the amount of high frequency signal feeding...
Integer CoarseTune
This sets the number of semitones by which the pitch is shifted.
Real Gain
This property allows you to attenuate the distorted sound.
Real PeakGain
This property controls the input signal level at which the band-pass filter will be fully opened...
ChorusWaveform
The shape of the wave if it were viewed on an oscillator.
Real ReflectionsGain
The Reflections Gain property controls the overall amount of initial reflections relative to the Gain...
This is a struct containing all the parameters needed to describe a Distortion effect.
MorpherPhoneme PhonemeB
The destination phoneme.
Real Mid1Center
This property sets the center frequency for the "mid1" range.
Real RoomRolloffFactor
The Room Rolloff Factor property is one of two methods available to attenuate the reflected sound acc...
ModulatorWaveform Waveform
This controls which waveform is used as the carrier signal.
EchoParameters(Real delay=0.1f, Real lRDelay=0.1f, Real damping=0.5f, Real feedback=0.5f, Real spread=-1.0f)
Struct constructor.
AutowahParameters(Real attackTime=0.06f, Real releaseTime=0.06f, Real resonance=1000.0f, Real peakGain=11.22f)
Struct constructor.
Real ModulationDepth
Modulation Depth controls the amount of pitch change.
Real Delay
The average amount of time the sample is delayed before it is played back; with feedback, the amount of time between iterations of the sample.
MorpherWaveform Waveform
This controls the shape of the low-frequency oscillator used to morph between the two phoneme filters...
Integer Phase
This property controls the phase difference between the left and rightLow Frequency Oscillation's...
Real ModulationTime
Modulation Time controls the amount of time to take when applying the set Modulation Depth...
Real DecayTime
The Decay Time property sets the reverberation decay time.
This is a struct containing all the parameters needed to describe a frequency shift effect...
float Real
A Datatype used to represent a real floating point number.
Definition: datatypes.h:141
Real AirAbsorptionGainHF
The Air Absorption Gain HF property controls the distance-dependent attenuation at high frequencies c...
Real Resonance
This property controls the resonant peak, sometimes known as emphasis or Q, of the auto-wah band-pass...
ShiftDirection
An enum describing the direction the frequency of the input signal will be shifted.
A curved upward oscillation with a rapid drop at it's peak frequency.
Real Density
The Reverb Modal Density controls the coloration of the late reverb.
Real HFReference
Determines the frequency at which high-frequency effects created by other properties are measured...
A linear oscillation with rapid transitions at peak frequencies.
A linear oscillation with rapid transitions at peak frequencies.
A curved oscillation with smoother transitions at peak frequencies.
DistortionParameters(Real edge=0.2f, Real gain=0.05f, Real lowpassCutoff=8000.0f, Real eqCenter=3600.0f, Real eqBandwidth=3600.0f)
Struct constructor.
Real ReleaseTime
This property controls the time the filtering effect takes to sweep from maximum back to base center ...
ReverbParameters(Real density=1.0f, Real diffusion=1.0f, Real gain=0.32f, Real gainHF=0.89f, Real decayTime=1.49f, Real decayHFRatio=0.83f, Real reflectionsGain=0.05f, Real reflectionsDelay=0.007f, Real lateReverbGain=1.26f, Real lateReverbDelay=0.011f, Real airAbsorptionGainHF=0.994f, Real roomRolloffFactor=0.0f, Boole decayHFLimit=true)
Struct constructor.
Real AirAbsorptionGainHF
The Air Absorption Gain HF property controls the distance-dependent attenuation at high frequencies c...
A curved oscillation with smoother transitions at peak frequencies.
Real LFReference
Determines the frequency at which low-frequency effects created by other properties are measured...
Real HighPassCutoff
This controls the cutoff frequency at which the input signal is high-pass filtered before being ring ...
ChorusParameters(ChorusWaveform waveform=ECW_Triangle, Integer phase=90, Real rate=1.1f, Real depth=0.1f, Real feedback=0.25f, Real delay=0.016f)
Struct constructor.
Real Density
Reverb Modal Density controls the coloration of the late reverb.
Real Rate
This controls the frequency of the low-frequency oscillator used to morph between the two phoneme fil...
ShiftDirection Left
These select which internal signals are added together to produce the output.
Real ReflectionsDelay
The Reflections Delay property is the amount of delay between the arrival time of the direct path fro...
Real Feedback
This property controls the amount of processed signal that is fed back to the input of the chorus eff...
Real LowGain
This property controls amount of cut or boost on the low frequency range.
Real GainHF
The Reverb Gain HF property further tweaks reflected sound by attenuating it at high frequencies...
Real LateReverbGain
The Late Reverb Gain property controls the overall amount of later reverberation relative to the Gain...
This is a struct containing all the parameters needed to describe a compressor effect.
Real RoomRolloffFactor
The Room Rolloff Factor property is one of two methods available to attenuate the reflected sound acc...
ChorusWaveform Waveform
This property sets the waveform shape of the Low Frequency Oscillation that controls the delay time o...
Boole DecayHFLimit
Whether or not to limit high-frequency decay.
Real Rate
The number of times per second the LFO controlling the amount of delay repeats.
This is a struct containing all the parameters needed to describe an EAX Reverb effect.
Boole DecayHFLimit
Whether or not to limit high-frequency decay.
Real Spread
This property controls how hard panned the individual echoes are.
A linear oscillation with rapid transitions at peak frequencies.
Real Mid1Width
This property controls the width of the "mid1" range.
Real Frequency
This is the frequency of the carrier signal.
This is a struct containing all the parameters needed to describe an equalizer effect.
Real GainHF
The Reverb Gain High Frequency property.
A digital waveform that only expresses the highest and lowest frequencies. Effectively "on" or "off"...
Real Delay
This property controls the delay between the original sound and the first "tap", or echo instance...
Real Diffusion
The Reverb Diffusion property controls the echo density in the reverberation decay.
VocalMorpherParameters(MorpherPhoneme phonemeA=EMP_A, MorpherPhoneme phonemeB=EMP_ER, Integer phonemeACoarseTune=0, Integer phonemeBCoarseTune=0, MorpherWaveform waveform=EMW_Sinusoid, Real rate=1.41f)
Struct constructor.
Boole Active
The Compressor can only be switched on and off, it cannot be adjusted.
This is used to represent a point in space, or a vector through space.
Definition: vector3.h:77
Real LateReverbDelay
The Late Reverb Delay property defines the begin time of the late reverberation relative to the time ...
Real Depth
The ratio by which the delay time is modulated by the LFO.
Vector3 ReflectionsPan
The Reflections Pan property is a 3D vector that controls the spatial distribution of the cluster of ...
Integer PhonemeACoarseTune
This is used to adjust the pitch of phoneme filter A in 1-semitone increments.
The bulk of the engine components go in this namspace.
Definition: actor.cpp:56
A curved upward oscillation with a rapid drop at it's peak frequency.
Real Feedback
This is the amount of the output signal level fed back into the effect's input.
This is a struct containing all the parameters needed to describe a Chorus effect.
FrequencyShiftParameters(Real frequency=0.0f, ShiftDirection left=ESD_Down, ShiftDirection right=ESD_Down)
Struct constructor.
Real LowCutoff
This property controls the low frequency below which signal will be cut off.
Real DecayTime
The Decay Time property sets the reverberation decay time.
Real ReflectionsDelay
The Reflections Delay property is the amount of delay between the arrival time of the direct path fro...
Real Feedback
This property controls the amount of feedback the output signal fed back into the input...
Integer PhonemeBCoarseTune
This is used to adjust the pitch of phoneme filter B in 1-semitone increments.
Real Diffusion
The Reverb Diffusion property controls the echo density in the reverberation decay.
Real Gain
The Reverb Gain property is the master volume control for the reflected sound that the reverb effect ...
A curved oscillation with smoother transitions at peak frequencies.
Integer Phase
This changes the phase difference between the left and right LFO's.
Real LateReverbGain
The Late Reverb Gain property controls the overall amount of later reverberation relative to the Gain...
Real HighCutoff
This property controls the high frequency above which signal will be cut off.
EAXReverbParameters(Real density=1.0f, Real diffusion=1.0f, Real gain=0.32f, Real gainHF=0.89f, Real gainLF=0.0f, Real decayTime=1.49f, Real decayHFRatio=0.83f, Real decayLFRatio=1.0f, Real reflectionsGain=0.05f, Real reflectionsDelay=0.007f, Vector3 reflectionsPan=Vector3(0.0f, 0.0f, 0.0f), Real lateReverbGain=1.26f, Real lateReverbDelay=0.011f, Vector3 lateReverbPan=Vector3(0.0f, 0.0f, 0.0f), Real echoTime=0.25f, Real echoDepth=0.0f, Real modulationTime=0.25f, Real modulationDepth=0.0f, Real airAbsorptionGainHF=0.994f, Real hFReference=5000.0f, Real lFReference=250.0f, Real roomRolloffFactor=0.0f, Boole decayHFLimit=true)
Struct constructor.
This is a struct containing all the parameters needed to describe a ring modulation effect...
Integer FineTune
This sets the number of cents between Semitones a pitch is shifted.
This is a struct containing all the parameters needed to describe an Auto-Wah effect.
Real DecayLFRatio
The Decay LF Ratio property adjusts the spectral quality of the Decay Time parameter.
Real LRDelay
This property controls the delay between the first "tap" and the second "tap".
Real DecayHFRatio
The Decay HF Ratio property sets the spectral quality of the Decay Time parameter.
Real Mid1Gain
This property allows you to cut / boost signal on the "mid1" range.
Real GainLF
The Reverb Gain Low Frequency property.
Real LateReverbDelay
The Late Reverb Delay property defines the begin time of the late reverberation relative to the time ...
FlangerWaveform
The shape of the wave if it were viewed on an oscillator.