68 Commits

Author SHA1 Message Date
Chris Robinson
e28937d1f6 Add options to reverse local X and Y coordinates
To go along with reverse-z on the other axii. This is only for games that have
position/orientation errors causing top-bottom (or left-right) inversion.
2022-03-10 22:37:02 -08:00
Chris Robinson
609ee74211 Add a config option for reverse-z
The same as the __ALSOFT_REVERSE_Z env var, but in the config file. Should only
be used for per-game config files (either along side the executable, or setting
the ALSOFT_CONF env var when launching the app).
2022-03-10 17:47:42 -08:00
Chris Robinson
3c9a705210 Handle AirAbsorptionGainHF as a native context property 2022-02-08 22:41:44 -08:00
Chris Robinson
49a36334bd Use a tri-state optional for the stereo output mode 2021-10-24 11:51:39 -07:00
Chris Robinson
096bed35fa Pass a parameter to aluInitRenderer to specify UHJ output 2021-10-23 11:37:46 -07:00
Chris Robinson
0a0849db99 Use an optional bool instead of two tri-state enums 2021-07-31 14:24:49 -07:00
Chris Robinson
99157f149f Move ContextBase and VoiceChange to core 2021-04-27 08:04:09 -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
9b65ca4556 More include cleanup 2021-04-24 15:52:53 -07:00
Chris Robinson
e20143fcc4 Move the WetBuffer reference to EffectSlot 2020-12-27 00:14:58 -08:00
Chris Robinson
1ad944555c Move some HRTF definitions to a separate header 2020-12-12 14:15:17 -08:00
Chris Robinson
191fe888b4 Move ambidefs.h to core 2020-12-12 10:38:24 -08:00
Chris Robinson
50e33ce8f4 Change some macros into constexpr variables 2020-12-04 13:53:56 -08:00
Chris Robinson
aa05feec4a Avoid a global MAX_PITCH macro 2020-12-04 11:15:50 -08:00
Chris Robinson
630a3b8cbd Move lerp/cubic to alnumeric.h 2020-12-04 11:15:50 -08:00
Chris Robinson
dbfdd35545 Move some declarations to more appropriate headers 2020-11-27 22:27:45 -08:00
Chris Robinson
03f9700071 Use BufferStorage for the buffer queue 2020-11-19 04:18:25 -08:00
Chris Robinson
52d58a4023 Store the wet buffers in the context
This is rather ugly, but we need the wet buffers to remain allocated after its
effect slot is deleted, because a voice can still use it for its final fade-out
mix.
2020-11-02 04:24:36 -08:00
Chris Robinson
7bb37deb51 Replace the mixer fraction macros with constexpr variables 2020-10-21 17:16:27 -07:00
Chris Robinson
3e62600ecc Replace some more macros with constexpr variables 2020-10-21 16:39:21 -07:00
Chris Robinson
e8b3e82f96 Change a couple functions into member functions 2020-08-07 06:22:39 -07:00
Chris Robinson
88ad84edf6 Reduce the MAX_PITCH to 10
255 is insanely overkill. The bsinc resamplers fade to silence after a few
octaves, and the others would be a mess.
2020-06-29 11:32:15 -07:00
Chris Robinson
fe7a74b09a Use a helper to set an identity ambisonic pan 2020-05-03 18:47:49 -07:00
Chris Robinson
2deb5e47d1 Avoid an unnecessary out parameter 2020-04-21 23:58:53 -07:00
Chris Robinson
3cb12da765 Move a type to where it's used 2020-04-16 02:05:07 -07:00
Chris Robinson
dc41f276d8 Get rid of the specialized MixRow_ methods 2020-04-16 01:47:33 -07:00
Chris Robinson
02d7fbfa0c Use standard attribute declarations 2020-04-13 23:27:56 -07:00
Chris Robinson
d67cba99bd Clean up some more unnecessary uses of AL types 2020-04-08 10:15:43 -07:00
Chris Robinson
8f47013e43 Some more ALfloat->float cleanup 2020-04-03 08:49:15 -07:00
Chris Robinson
af6584b8fc Reduce the maximum number of source sends to 6 2020-02-25 04:52:39 -08:00
Chris Robinson
2e6a55a87c Handle padding between device sample frames
The padding must be constant and sample type aligned (e.g. some fixed multiple
of two bytes between the start of two consecutive frames for 16-bit output).
The intent is to always have the ability for stereo output with WASAPI even if
the device has some other unsupported configuration, as long as front-left and
front-right exist.
2019-12-21 20:43:46 -08:00
Chris Robinson
eb89faf963 Use a span instead of a reference-to-array 2019-10-05 20:00:22 -07:00
Chris Robinson
58085f1c7b Clean up some unnecessary includes 2019-10-02 19:13:07 -07:00
Chris Robinson
64e2c377d8 Move ALvoice from alu.h to a separate header 2019-10-02 16:53:23 -07:00
Chris Robinson
d639935e19 Move a couple types to the source they're used in 2019-10-02 15:37:33 -07:00
Chris Robinson
fb56b02041 Modify the bsinc resampler
Readjusted the bsinc12 cutoff back to -60dB. Also increased the filter's phase
count.
2019-09-29 22:43:46 -07:00
Chris Robinson
7783fa738c Make the BSincTables constexpr in an anonymous namespace 2019-09-28 16:40:38 -07:00
Chris Robinson
4b746b8d37 Make MAX_RESAMPLER_PADDING specify the total padding 2019-09-28 14:35:42 -07:00
Chris Robinson
cbc00bcffe Combine two function calls into one 2019-09-28 03:42:17 -07:00
Chris Robinson
882b4acae8 Add "fast" variants for the bsinc resamplers
This simply omits the scale factor from the filter, similar to how up-sampling
does. The consequence of this is less smooth transitions when ramping the
pitch while down-sampling, but otherwise behaves fine.
2019-09-28 01:58:29 -07:00
Chris Robinson
9b64e5e0db Implement a "fast" bsinc path
This takes advantage of the fact than when increment <= 1 (when not down-
sampling), the scale factor is always 0. As a result, the scale and scale-phase
deltas never contribute to the filtered output. Removing those multiply+add
operations cuts half of the work done by the inner loop.

Sounds that do need to down-sample (when played with a high pitch, or is 48khz
on 44.1khz output, for example), still go through the normal bsinc process.
2019-09-26 19:24:29 -07:00
Chris Robinson
24db8a3f4b Make the resampler type an enum class 2019-09-22 21:19:19 -07:00
Chris Robinson
aca9f4e095 Make the bsinc l and m coefficients unsigned 2019-09-17 18:38:46 -07:00
Chris Robinson
f09734b707 Pass IrSize to the HRTF mixers as unsigned 2019-09-13 11:19:11 -07:00
Chris Robinson
c1690178ec Make the resampler increment unsigned 2019-09-13 03:25:13 -07:00
Chris Robinson
5f862a5b49 Clean up sample converter implicit conversions 2019-09-12 17:45:06 -07:00
Chris Robinson
2e010d29cb Clean up implicit conversions in source.cpp 2019-09-12 11:33:04 -07:00
Chris Robinson
ef2769af03 Use a normal vector for the voices array 2019-09-04 23:04:55 -07:00
Chris Robinson
3973334a64 Store the voice fraction offset as unsigned 2019-08-31 15:49:34 -07:00