Chris Robinson
619249371a
Remove math_defs.h
2022-01-27 04:04:41 -08:00
Chris Robinson
1bbea9cd30
Start and use a standard-like numbers header
2022-01-27 01:38:39 -08:00
Chris Robinson
d16b61dffb
Move the effects base and effectslot to core
2021-12-17 17:13:59 -08:00
Chris Robinson
953745d386
Make an inline function to check for 2D ambisonic formats
2021-12-12 15:53:53 -08:00
Chris Robinson
01dd34f305
Add an internal Super Stereo format
...
It's not available as an AL buffer format (yet) since I'm not sure how to
expose it. Internally it seems fine as a separate channel configuration, but
because OpenAL combines the channel configuration and sample type, a flag may
work better there.
2021-12-11 17:50:24 -08:00
Chris Robinson
d998c03a27
Add a UHJ-specific coefficient scaling array
2021-07-13 06:31:13 -07:00
Chris Robinson
061148072f
Update include headers
...
Don't add alc/ to the include paths.
2021-04-27 16:04:54 -07:00
Chris Robinson
d06209ef5a
Update includes
2021-04-27 08:39:17 -07:00
Chris Robinson
ff380298e4
Move BufferStorage and Voice to core
2021-04-27 08:26:42 -07:00
Chris Robinson
22a8ebff80
Move GetChannelIdxByName and clean up some more includes
2021-04-26 08:04:50 -07:00
Chris Robinson
0fe38c053d
Move some functions to core
...
And clean up more includes
2021-04-25 11:36:37 -07:00
Chris Robinson
440ce71dce
Move GetHFOrderScales to a more appropriate place
2021-04-24 13:46:52 -07:00
Chris Robinson
b54bb388a3
Create a base the ALCdevice and ALCcontext structs
...
A base that contains the API-agnostic data, with ALCdevice and ALCcontext being
for AL-specific data.
2021-04-24 08:28:13 -07:00
Chris Robinson
f33edc3b30
Add support for 4-channel UHJ
...
Also add the SOFT moniker to the new macros
2021-03-31 21:02:30 -07:00
Chris Robinson
b5e36007f1
Handle 3-channel UHJ audio buffers
2021-03-31 10:03:31 -07:00
Chris Robinson
8793055e66
Start an interface for providing UHJ audio
...
Currently only 2-channel UHJ, which gets treated as stereo.
2021-03-31 05:37:56 -07:00
Chris Robinson
13c1d7efb7
Store buffer info in the queue entry
2021-01-24 02:07:39 -08:00
Chris Robinson
20f5e7c1fa
Avoid global constexpr arrays
2021-01-21 04:03:30 -08:00
Chris Robinson
f2b7a063ef
Add NEON-enhanced FIR loops for convolution and UHJ
2020-12-31 13:01:17 -08:00
Chris Robinson
aae115c35a
Return an intrusive_ptr from EffectStateFactory::create
2020-12-28 08:04:23 -08:00
Chris Robinson
62fa6a2277
Avoid including voice.h in alcontext.h
2020-12-27 16:14:11 -08:00
Chris Robinson
507cbfa027
Combine EffectState::deviceUpdate with setBuffer
2020-12-26 12:33:00 -08:00
Chris Robinson
8a86ec8ac5
Add a crossover frequency field for the device
...
Used when upsampling low-order ambisonic signals to higher order. Rather than a
hardcoded 400hz, it ensures a consistent crossover point when an ambdec
configuration is used. It can also allow for an alsoft config option.
2020-12-26 05:23:08 -08:00
Chris Robinson
eaf209d2f1
Update a comment and type used in the convolution effect
2020-12-25 07:00:57 -08:00
Chris Robinson
204f7d8811
Rename From2D to FromACN2D
2020-12-25 06:40:13 -08:00
Chris Robinson
0d3b041aa2
Avoid AL types and enums in the effect processors
2020-12-24 22:49:55 -08:00
Chris Robinson
d578bc6cb1
Move logging to core
2020-12-17 02:47:03 -08:00
Chris Robinson
56af137ba0
Move fmt_traits to core
2020-12-13 21:12:03 -08:00
Chris Robinson
191fe888b4
Move ambidefs.h to core
2020-12-12 10:38:24 -08:00
Chris Robinson
4ee95dc296
Use a smaller FFT for convolution
2020-12-05 14:18:19 -08:00
Chris Robinson
50e33ce8f4
Change some macros into constexpr variables
2020-12-04 13:53:56 -08:00
Chris Robinson
69d55d7e03
Move the filters to core
2020-12-04 11:15:50 -08:00
Chris Robinson
32b9a46b39
Move AL EffectProp handling to separate sources
2020-11-25 13:55:29 -08:00
Chris Robinson
4e760bbecc
Use a separate structure for the active effect slot properties
2020-11-07 08:36:49 -08:00
Chris Robinson
d912b92a60
Support all buffer layouts for convolution
2020-09-22 08:09:42 -07:00
Chris Robinson
8ef242bce0
Don't use direct channels with convolution
...
It may come back as an effect property, but it's probably better to not try
forcing it by default.
2020-09-18 10:12:58 -07:00
Chris Robinson
07989a34dc
Allow higher-order B-Format buffers for convolution
...
Only the first-order channels will be used, but higher-order buffers will be
allowed.
2020-09-18 00:06:10 -07:00
Chris Robinson
e7d8e7eb3f
Avoid extraneous buffers and buffer clears
2020-09-17 21:34:26 -07:00
Chris Robinson
0974b6b47c
Use inline wrappers to clarify forward/inverse FFTs
2020-09-13 04:18:40 -07:00
Chris Robinson
ce0a45cbc7
Don't assume iterators are pointers
2020-09-09 14:02:02 -07:00
Chris Robinson
68a099ba35
Apply the first convolution segment in the time domain
...
This avoids an inherent delay from the effect, at the cost of higher CPU use.
Having a customizable user-specified delay (with said user ensuring a properly
trimmed impulse response) could help alleviate the cost since once the delay
exceeds the segment size, the initial FIR filter could be skipped.
2020-09-09 02:23:38 -07:00
Chris Robinson
f4a55cc8c2
Don't leave the negative frequencies as 0 for inverse FFT
2020-09-08 23:20:06 -07:00
Chris Robinson
29566b995c
Avoid an extraneous ConvolutionFilter sub-object
2020-09-06 00:16:50 -07:00
Chris Robinson
c52bf8c401
Rework effect slot buffer setting
...
Rather than creating an effect-specific buffer that gets passed along as a
property, the buffer is set the effect state when the effect state is created,
the device is updated, or the buffer is changed. The buffer can only be set
while the effect slot isn't playing, so it won't be changed or updated while
the mixer is processing the effect state.
2020-09-05 20:48:56 -07:00
Chris Robinson
af97a92952
Move more processing to the ConvolutionFilter struct
2020-08-31 06:43:42 -07:00
Chris Robinson
88425becb2
Remove a couple unnecessary pointers
2020-08-30 04:41:19 -07:00
Chris Robinson
82873486b7
Dynamically allocate the convolution channel mixing data
2020-08-30 04:28:01 -07:00
Chris Robinson
ebe0765ce3
Reorganize some convolution fields
2020-08-30 03:42:44 -07:00
Chris Robinson
3fdee6c814
Calculate the correct number of convolution segments
2020-08-28 23:08:44 -07:00
Chris Robinson
ecfb0d4f5b
Limit convolution processing to the output ambisonic order
2020-08-28 06:47:21 -07:00