Chris Robinson
809f709ba6
Limit the normalized filter frequency to under half
...
Nearing half, weird things can start happening with the filters' generated sine
and cosine values.
2018-07-21 14:22:52 -07:00
Chris Robinson
6fe1ffa3bb
Improve handling of 0hz ring modulator frequency
2018-07-21 14:21:00 -07:00
Chris Robinson
72e4b60374
Clamp the maximum normalized reference frequency too
2018-06-03 01:52:05 -07:00
Chris Robinson
48b265e136
Use a higher normalized frequency limit for the ring modulator
2018-06-02 00:02:14 -07:00
Chris Robinson
7865ebb6d5
Use the biquad high-pass in the ring modulator
2018-05-31 22:21:00 -07:00
Chris Robinson
f765099503
Slightly simplify the modulator square wave generator
2018-05-31 19:43:02 -07:00
Raulshc
1bba276aaf
EFX: Ring modulator fixes
...
Change from unipolar to bipolar carrier signal in the Ring modulator effect.
2018-05-31 15:47:47 +02:00
Chris Robinson
0b7f35b289
Avoid extra sample copies and storage in the modulator effect
2018-05-29 22:55:21 -07:00
Chris Robinson
46c59f382f
Use fastf2i instead of manual rounding in another place
2018-05-29 22:49:45 -07:00
Chris Robinson
ac8dbd7a56
Add a specific function for truncating float-to-int conversions
2018-05-03 22:02:32 -07:00
Chris Robinson
9c5307a48a
Rename BiquadState to BiquadFilter
2018-04-04 18:07:46 -07:00
Chris Robinson
6990478369
Rename ALfilterState/Type to BiquadState/Type
2018-03-23 14:52:59 -07:00
Chris Robinson
7a23330ffe
Move the filter implementation to a separate directory
2018-03-22 07:05:40 -07:00
Chris Robinson
52dee31270
Only calculate the modulation samples once for all 4 channels
2018-03-08 17:48:22 -08:00
Chris Robinson
22d3e3b563
Simplify modulator effect index updating
2018-03-08 17:48:21 -08:00
Chris Robinson
a211c2f5e4
Avoid AL prefix on internal effect state factory types
...
Also avoid using the generic V/V0 macros for them
2018-02-28 19:37:12 -08:00
Chris Robinson
99f0377ae3
Construct error messages using parameterized values
2018-01-25 15:59:59 -08:00
Chris Robinson
2ded5547ba
Provide messages for the remaining AL errors
2018-01-24 17:07:01 -08:00
Chris Robinson
9c33f4aea8
Use MixSamples for the dedicated and ring modulator effect output
2018-01-11 04:48:18 -08:00
Chris Robinson
15f9d15ba0
Avoid using macros to access anonymous structures
2018-01-11 03:45:23 -08:00
Chris Robinson
90cedbea49
Pass the context to the auxiliary effect update method
2017-09-21 05:42:35 -07:00
Chris Robinson
e9a7218a06
Remove the fastf2u conversion function
2017-06-27 07:25:08 -07:00
Chris Robinson
53c3d48fe0
Change some ALuint parameters to ALsizei
2017-05-02 04:54:59 -07:00
Chris Robinson
080b0cea8b
Reorder filter coefficients
2016-12-21 21:35:50 -08:00
Chris Robinson
53d8a49673
Call ALfilterState_processC directly
...
It's the only implementation currently, so there's no point to having it stored
as a function pointer in the filter struct. Even if there were SIMD versions,
it'd be a global selection, not per-instance.
2016-09-12 11:48:15 -07:00
Chris Robinson
8a64f07121
Use a predefined identity matrix
2016-09-05 02:02:14 -07:00
Chris Robinson
0fbf34fb45
Add a ref count to ALeffectState
...
This is mostly just reorganizing the effects to call the Construct method which
initializes the ref count.
2016-08-25 03:49:57 -07:00
Chris Robinson
11b38e1190
Rename input_gain to b0
2016-07-26 00:03:44 -07:00
Chris Robinson
93a94d177c
Get rid of an unnecessary copy of ALeffectProps
2016-05-13 18:28:01 -07:00
Chris Robinson
ef0d4f8210
Provide (mostly) lockless updates for effect slots
...
Similar to the listener, separate containers are provided atomically for the
mixer thread to apply updates without needing to block, and a free-list is used
to reuse container objects.
A couple things to note. First, the lock is still used when the effect state's
deviceUpdate method is called to prevent asynchronous calls to reset the device
from interfering. This can be fixed by using the list lock in ALc.c instead.
Secondly, old effect states aren't immediately deleted when the effect type
changes (the actual type, not just its properties). This is because the mixer
thread is intended to be real-time safe, and so can't be freeing anything. They
are cleared away when updates reuse the container they were kept in, and they
don't incur any extra processing cost, but there may be cases where the memory
is kept around until the effect slot is deleted.
2016-05-12 18:41:33 -07:00
Chris Robinson
a6c70992b0
More directly map coefficients for ambisonic mixing buffers
...
Instead of looping over all the coefficients for each channel with multiplies,
when we know only one will have a non-0 factor for ambisonic mixing buffers,
just index the one with a non-0 factor.
2016-04-15 22:05:47 -07:00
Chris Robinson
e0466766d7
Include any first-order scaling in the FOAOut coefficients
2016-03-25 23:25:13 -07:00
Chris Robinson
713ac9e679
Add a specific output for first-order sources
2016-03-22 17:52:20 -07:00
Chris Robinson
a457157516
Organize the dry buffer properties into a struct
2016-03-09 23:43:57 -08:00
Chris Robinson
7f908d90af
Rename ComputeBFormatGains to ComputeFirstOrderGains
2016-01-31 09:00:23 -08:00
Chris Robinson
7111322526
Make the modulator effect multichannel
2016-01-29 23:44:43 -08:00
Chris Robinson
a046a951e9
Use separate modulator functions only for the waveform
2016-01-29 23:28:38 -08:00
Chris Robinson
2fa3ae85c9
Pass a pointer to the input samples array for effect processing
2016-01-27 08:16:47 -08:00
Chris Robinson
f547ef6d39
Separate calculating ambisonic coefficients from the panning gains
2016-01-25 06:11:51 -08:00
Chris Robinson
94816d0073
Reorder filterstate properties
2016-01-23 03:38:15 -08:00
Chris Robinson
b348abf5c3
Rename F_2PI to F_TAU
2015-09-13 08:46:48 -07:00
Chris Robinson
c3a36d9b19
Do up to 256 samples at a time with multi-step loops
2014-12-18 09:23:55 -08:00
Chris Robinson
3f7cb8392e
Pas the output device channel count to ALeffectState::process
2014-11-07 03:43:33 -08:00
Chris Robinson
4c3f27193f
Use a separate macro for the max output channel count
2014-11-07 02:18:24 -08:00
Chris Robinson
6083a684d1
Use a method to set omni-directional channel gains
2014-11-04 03:33:35 -08:00
Chris Robinson
a77387b549
Avoid taking the square-root of the ambient gain
...
Although it is more correct for preserving the apparent volume, the ambisonics-
based panning does not work on the same power scale, making it louder by
comparison.
2014-10-11 09:35:32 -07:00
Chris Robinson
4e66224d6c
Combine some fields into a struct
2014-09-10 17:53:01 -07:00
François Cami
3c13e1e333
Update COPYING to the latest https://www.gnu.org/licenses/old-licenses/lgpl-2.0.txt to fix the FSF' address Fix the FSF' address in the source
2014-08-18 11:34:29 -07:00
Chris Robinson
0a030c2bd9
Use a void* for the effect state Delete method param
2014-03-21 23:56:18 -07:00
Chris Robinson
a421e515be
Use a helper macro for pi*2
2013-10-08 16:31:23 -07:00