Chris Robinson
b6ce793f84
Use a span for the complex_fft/hilbert functions
2019-06-08 16:05:18 -07:00
Chris Robinson
f9da06fc6a
Use a span for the effect state's output target
2019-06-05 19:58:58 -07:00
Chris Robinson
1ce310c6d1
Make some more channel counts unsigned
2019-06-05 19:26:54 -07:00
Chris Robinson
20ce461096
Make sure the T60 filter gains are properly clamped
2019-05-31 11:58:48 -07:00
Chris Robinson
6ee49cad52
Once more for MSVC
2019-05-30 18:55:24 -07:00
Chris Robinson
a123c87ba5
Avoid some MSVC workarounds that didn't seem to work
2019-05-30 14:38:06 -07:00
Chris Robinson
76e7c8b244
Try to work around some MSVC short-comings
2019-05-30 10:52:28 -07:00
Chris Robinson
153f133435
Try to fix "ambiguous" initializations with older compilers
2019-05-29 23:41:09 -07:00
Chris Robinson
2909f263fd
Use span<FloatBufferLine> for EffectState::process output
2019-05-29 22:31:36 -07:00
Chris Robinson
893ffe9a84
Use span<FloatBufferLine> for MixSamples
2019-05-29 21:58:37 -07:00
Chris Robinson
8af7b4c6e0
Use FloatBufferLine and span<> for MixRowSamples
2019-05-29 20:45:33 -07:00
Chris Robinson
7e6b6d7ad9
Use FloatBufferLine and span<> in the reverb effect
2019-05-29 19:36:06 -07:00
Chris Robinson
ec3a6f8cde
Use FloatBufferLine for the effect process method
2019-05-29 09:37:25 -07:00
Chris Robinson
c80ee5b701
Use std::array for most mixing buffer arrays
2019-05-28 16:22:36 -07:00
Chris Robinson
b0e12ccf71
Ensure a couple calls are constexpr
2019-05-26 15:57:17 -07:00
Chris Robinson
7cbf82afe4
Avoid a few more NUM_LINES assumptions
2019-05-26 11:34:17 -07:00
Chris Robinson
8ca97a7d9a
Move a couple functions into its related class
2019-05-25 11:54:51 -07:00
Chris Robinson
ebf33b7c6b
Avoid some uses of RESTRICT
2019-05-25 08:17:37 -07:00
Chris Robinson
d502397b37
Simplify the echo feedback loop
2019-05-20 22:07:41 -07:00
Chris Robinson
55845f316d
Don't use coverage spread for the echo spread
2019-05-20 21:30:56 -07:00
Chris Robinson
6dbd488d13
Avoid unnecessary use of CalcAngleCoeffs
2019-05-20 21:16:13 -07:00
Chris Robinson
9eea2e4c73
Use BUFFERSIZE for the reverb loop limit
...
At 44/48khz, the main delay line comes out to 20k to 22k samples, which gets
rounded up to 32k as the next power of two. This leaves plenty of room for the
full 1k BUFFERSIZE without having to increase the delay line beyond what it
already is.
2019-05-03 12:59:04 -07:00
Chris Robinson
2f2ec2b6e3
Add some assumes and consts
2019-05-03 00:50:47 -07:00
Chris Robinson
a72c47164c
Avoid a few more array length assumptions
2019-05-01 11:15:17 -07:00
Chris Robinson
6281f6e85a
Avoid masking offsets in the inner reverb loops
2019-04-30 23:28:57 -07:00
Chris Robinson
9d6619efdc
Combine some reverb processing loops
...
Specifically, the A2B and output mixing, as well as applying the band-pass with
B2A mixing (the latter of which hiding a bug that was overwriting the early
buffer storage).
2019-04-28 08:56:41 -07:00
Chris Robinson
819ec8a653
Rename and move ALeffectProps
2019-03-22 22:48:12 -07:00
Chris Robinson
3a6e741e90
Use MixParams for the wet buffers
2019-03-22 19:25:55 -07:00
Chris Robinson
edc32b40a5
Slightly improve casting in the modulator effect
2019-03-22 17:47:19 -07:00
Chris Robinson
ea8b02dead
Pass ALeffectProps directly to the get/setParam* methods
2019-03-22 16:04:13 -07:00
Chris Robinson
e7e585f65c
Use the effect state factory to set the default effect props
2019-03-22 15:00:37 -07:00
Chris Robinson
f951f4a66b
Implement getDefaultProps for effect state factories
2019-03-22 12:58:24 -07:00
Chris Robinson
935f386982
Use a separate EffectStateFactory for standard reverb
2019-03-22 11:57:32 -07:00
Chris Robinson
3e816de4fb
Use SSE intrinsics in a few more places
2019-03-18 20:58:48 -07:00
Chris Robinson
12721f94a7
Add a method to apply an HF scale without band-splitting
2019-03-10 10:30:33 -07:00
Chris Robinson
86926f0998
Combine the reverb output mixes into a single call
2019-02-25 05:52:37 -08:00
Chris Robinson
81aa5af3b9
Make sure the reverb fading completes
...
The processing loop doesn't depend on being aligned anymore, so it won't get
stuck when only less than 4 samples can be done in a non-final update.
2019-02-25 01:08:11 -08:00
Chris Robinson
a2ba550ebf
Rework reverb A/B-Format conversion mixing
...
This should help improve performance using the optimized mixers, and fewer
passes on the transforms, though at the cost of more memory.
2019-02-24 15:43:56 -08:00
Chris Robinson
4ec0aed286
Change some functions to proper methods
2019-02-23 03:18:12 -08:00
Chris Robinson
42934b09e5
Avoid multiple int-to-float conversions
2019-02-23 01:43:55 -08:00
Chris Robinson
317206e8f3
Remove the FOAOut mixing buffer and associated post-processes
2019-02-22 22:35:37 -08:00
Chris Robinson
5b35e60a98
Apply ambisonic upsampling on reverb output as needed
...
This isn't the greatest thing since it splits the A-to-B-Format transform from
the panning transform. The A-to-B and HF scale mixes are also not as optimal as
they could be, since they can't use the main mixer functions (wrong buffer line
length).
It does, however, get rid of the final use of the FOAOut buffer, so the
upsampling post-process is no longer needed.
2019-02-22 21:53:45 -08:00
Chris Robinson
6a3c10d850
Ensure reverb fading doesn't end with less than 4 samples
2019-02-22 02:15:22 -08:00
Chris Robinson
6a2cf96448
Avoid some unnecessary local variables
2019-02-22 01:00:57 -08:00
Chris Robinson
01ac6e2e56
Combine reverb transform matrices one column at a time
2019-02-21 19:05:20 -08:00
Chris Robinson
8ac2d34706
Allow processing some effects in higher order ambisonics
...
Reverb notably is still only first-order (any higher order channels are
dropped, and it writes to FOAOut). But others, like the equalizer, work on all
available channels.
2019-02-21 04:23:01 -08:00
Chris Robinson
a35255291f
Fix unused parameter warning
2019-02-21 03:54:12 -08:00
Chris Robinson
8d2d7c63da
Get rid of the MAX_EFFECT_CHANNELS macro
2019-02-21 03:52:54 -08:00
Chris Robinson
462e320847
Make sure the B2A matrix has enough values for the input count
2019-02-21 03:31:24 -08:00
Chris Robinson
d95e144c48
Remove some now-unnecessary ReverbState fields
2019-02-21 03:07:36 -08:00