Chris Robinson
2a62b38530
Update filter histories even when they're not used
...
If the filter properties are continually updated, and the HF or LF gain goes
from <1, to 1, and later back to <1, the history shouldn't hold stale values
from before it was at 1.
2015-10-24 00:47:58 -07:00
Chris Robinson
a5631e05cc
Add a ALfilterState method to process multiple samples at once
2014-05-18 06:23:20 -07:00
Chris Robinson
3a26ebef0b
Implementing handling high-pass filter properties
2014-05-17 07:29:50 -07:00
Chris Robinson
1efddac3db
Document the different filter types, and combine some split lines
2014-05-17 02:09:43 -07:00
Chris Robinson
c5b25ba2a7
Rename freq_scale parameter to freq_mult
2014-05-17 01:32:55 -07:00
Chris Robinson
4454ae25c7
Add HF Reference as a filter property
2014-05-14 01:24:18 -07:00
Chris Robinson
3582a44dff
Make LOWPASSFREQREF a float value
2014-05-11 10:09:52 -07:00
Chris Robinson
de5c54db09
Remove an unused method
2014-03-23 17:47:58 -07:00
Chris Robinson
5874e387a8
Move some inline methods to their appropriate headers
2013-11-04 13:51:19 -08:00
Chris Robinson
551f893ae9
Use C99 inline semantics
2013-11-04 12:12:31 -08:00
Chris Robinson
99fa5911bc
Implement the Autowah effect.
2013-10-03 03:37:03 -07:00
Chris Robinson
647398d7c6
Use ALfilterState for the distortion effect filters
2013-06-06 03:24:44 -07:00
Chris Robinson
a371de080b
Silence some clang warnings
2013-06-05 01:52:49 -07:00
Chris Robinson
e96cc656e9
Use C99's inline instead of __inline
2013-05-28 22:27:07 -07:00
Chris Robinson
48aa1e10d6
Use the high-shelf filter in place of low-pass
...
They effectively both work to lower (or raise) high frequencies. However, the
high-shelf performs better when gain=1.
2013-05-28 10:57:38 -07:00
Chris Robinson
0c7c5327c9
Use ALfilterState for the master echo and reverb filters
2013-05-27 19:55:00 -07:00
Chris Robinson
3e663d7307
Remove an unused method
2013-05-27 19:33:12 -07:00
Chris Robinson
feeec34333
Use ALfilterState for the source direct and send filters
2013-05-27 19:14:02 -07:00
Chris Robinson
b1ae44206f
Move ALEQFilter to alFilter.c/h and rename it to ALfilterState
2013-05-27 15:32:02 -07:00
Chris Robinson
e4186f4903
Use a properly-defined history for the FILTER struct
2013-05-21 07:10:24 -07:00
Chris Robinson
4f70766b95
Move a couple macros to more appropriate headers
2012-09-14 02:52:37 -07:00
Chris Robinson
9f58edd7a8
Fix up some more header includes
2012-09-14 02:42:36 -07:00
Chris Robinson
64cd763e19
Remove unused filter functions
2012-08-15 01:48:47 -07:00
Chris Robinson
c9e64596a4
Use a consistent name for the self-id field
2012-04-19 22:28:01 -07:00
Chris Robinson
ab2b62c980
Use function pointers to set type-specific filter properties
2011-09-11 07:34:03 -07:00
Chris Robinson
b838d123f8
Multiply the history offset in the filtering funcitons
2011-05-18 18:52:47 -07:00
Chris Robinson
194f8fc791
Uninline lpCoeffCalc
2011-05-18 18:42:25 -07:00
Chris Robinson
e2850df07e
Use the same filters for mono sources and multi-channel
2011-05-03 16:18:46 -07:00
Chris Robinson
0c49e5ba56
Use click removal when starting a source
2010-08-14 22:59:55 -07:00
Chris Robinson
2d46a1001e
Use a map for the filter list
2010-05-18 17:54:45 -07:00
Chris Robinson
7fb4c4ce4f
Move extension function declarations to alext.h/efx.h
2010-03-23 18:21:55 -07:00
Chris Robinson
3e9934e810
Mark extension functions with AL_API/ALC_API
2010-03-23 17:44:01 -07:00
Chris Robinson
98f4f5a4f0
Add EFX types and enums to alext.h
...
The types and enums are in efx.h, which is included by alext.h. It's done this
way because EFX has a lot if definitions which would polute alext.h
2010-03-09 09:28:22 -08:00
Chris Robinson
656a406377
Use an inline function to calculate the low-pass filter coefficient
2009-12-09 07:21:59 -08:00
Chris Robinson
06bbee2449
Add a function for 1-pole filtering
2009-11-22 21:20:27 -08:00
Chris Robinson
510ccc7f17
Store the effect and filter lists in the device
2009-08-15 09:39:18 -07:00
Chris Robinson
f3a3358e63
Fix for MSVC
...
MSVC won't accept zero-sized arrays at the end of structs, if that struct is
used in another struct that's not also at the end. This wastes a float for each
FILTER object
2009-06-06 23:33:53 -07:00
Chris Robinson
1bfa7609d2
Make the filter functions global inline, and use it for echo
2009-05-16 23:34:26 -07:00
Chris Robinson
7a7a4844f4
Make the filter history buffer size flexible
...
This lets the filter history buffer be as big as needed for a given use, so
that it can have a size large enough for the more demanding cases, but not be
wasteful for lesser-demanding cases, while not incuring the overhead of an
added pointer indirection
2009-04-16 05:43:09 -07:00
Chris Robinson
3056f91ec5
Apply the dry filter to multi-channel sources
...
Unlike mono sources, they use 2 chained one-pole filters instead of 4
2008-12-10 11:54:13 -08:00
Chris Robinson
3863dcc9cb
Use a new low-pass filter, based on the I3DL2 spec
...
Many thanks to Christopher Fitzgerald, for helping with it
2008-10-02 22:20:42 -07:00
Chris Robinson
6bfdb57a5b
Use a 12dB/oct rolloff instead of 24 for the lowpass filter
2008-09-13 02:46:14 -07:00
Chris Robinson
5f3329b2c9
Don't export extension function symbols from the lib
2008-09-06 13:45:27 -07:00
Chris Robinson
597e01153e
Use arrays instead of pointer-to-arrays for the low-pass filter
2008-07-26 17:13:50 -07:00
Chris Robinson
3e0f9cc716
Make the filter processing function inline
2008-07-26 00:58:54 -07:00
Chris Robinson
c7e49c9f57
Implement yet another low-pass filter
...
This one using the Butterworth IIR filter design
2008-07-25 19:31:12 -07:00
Chris Robinson
168d8e3bee
Add AL_FILTER_LOWPASS support
...
Direct filters only, since auxiliary sends and slots aren't available yet
2007-12-17 22:42:38 -08:00
Chris Robinson
91d214d713
Release left over filters on close
2007-12-17 17:08:44 -08:00
Chris Robinson
f6bb6cc891
Add AL_FILTER_TYPE enum
2007-12-17 15:49:26 -08:00
Chris Robinson
56ff747463
Implement filter function skeletons
2007-12-17 15:43:35 -08:00