Chris Robinson
df9faba689
Use more accurate elevations for virtual HRTF speaker positions
2018-05-14 05:28:06 -07:00
Chris Robinson
5272caf7f4
More accurately convert between degrees and radians
2018-05-14 00:20:31 -07:00
Chris Robinson
1e04c4c689
Make a faster float2int method for x87 targets
2018-05-12 22:34:15 -07:00
Chris Robinson
dd055fc858
Use fastf2i instead of manually rounding with float2int
2018-05-12 21:36:23 -07:00
Chris Robinson
5c0673049c
Fix MSVC
2018-05-12 03:31:58 -07:00
Chris Robinson
f240952bcc
Fix non-SEE (32-bit) GCC builds
2018-05-12 00:58:27 -07:00
Chris Robinson
e787a241c0
Add and use a method for fast float rounding
...
Unlike fastf2i, this keeps the result as a float instead of converting to
integer.
2018-05-12 00:52:09 -07:00
Chris Robinson
3867cad94d
Simplify calculating the HRTF B-Format IR length
2018-05-04 06:48:20 -07:00
Chris Robinson
be30e6bf8f
Don't assume the FPU is round-to-zero in the pitch shifter
2018-05-04 04:53:50 -07:00
Chris Robinson
1fb6428ffa
Another fix attempt for 32-bit MSVC
2018-05-04 04:02:57 -07:00
Chris Robinson
b31a54e972
Try to fix 32-bit MSVC builds
2018-05-04 02:56:01 -07:00
Chris Robinson
75e2cb97f7
Don't assume round-to-zero for fastf2i
2018-05-04 02:09:32 -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
d8a659c6f2
Avoid fastf2i in the converter init
2018-05-03 17:27:30 -07:00
Chris Robinson
af90d89b6b
Use a fixed-point scale for the pitch shifter frequency index
2018-05-03 17:06:55 -07:00
Chris Robinson
a19296e3cf
Avoid excessive if block depths
2018-05-02 21:06:57 -07:00
Chris Robinson
85c03925fb
Avoid duplication for getting the cpuid
2018-05-02 20:59:53 -07:00
Chris Robinson
22413b82ca
Pass in the number of channels per order to InitNearFieldCtrl
2018-05-01 20:21:24 -07:00
Chris Robinson
e8aaa9cb13
An output device buffer is likely
2018-04-29 18:03:33 -07:00
Chris Robinson
2385ab700c
Avoid potentially calling log10f(0)
2018-04-29 14:02:33 -07:00
Chris Robinson
242ed45f65
Rename some struct members for clarity
2018-04-28 22:10:22 -07:00
Chris Robinson
e420752e82
Fix a comment about a float's mantissa
2018-04-28 18:52:40 -07:00
Chris Robinson
54109043b8
Remove some unnecessary floor calls
2018-04-28 01:14:17 -07:00
Chris Robinson
ddd4751f87
Increase the band-split IR for decoding ambisonics to HRTF
2018-04-27 18:42:26 -07:00
Chris Robinson
492c75cb7b
Rename some variables for clarity
2018-04-27 00:41:02 -07:00
Chris Robinson
1e0728af64
Transpose the band-splitter all-pass section
2018-04-26 23:26:11 -07:00
Chris Robinson
1cc6983b96
Use doubles for the pitch shifter's FFTs and processing
2018-04-24 21:40:41 -07:00
Chris Robinson
8311b57ca6
Update ChangeLog
2018-04-24 00:18:02 -07:00
Chris Robinson
510efae066
Don't specialize biquad processing for a single sample
2018-04-24 00:17:07 -07:00
Chris Robinson
b3ba90f5fa
Use transposed direct form 2 for the UHJ all-pass filters
...
This has one extra multiply, but avoids two moves and uses almost half as much
memory for the encoder state.
2018-04-22 03:34:29 -07:00
Chris Robinson
e10595df31
Pre-calculate the squares of the UHJ filter coefficients
2018-04-22 02:39:14 -07:00
Chris Robinson
b51d30f84d
Change some if checks to asserts since they must be true
2018-04-22 02:38:09 -07:00
Chris Robinson
ea8b52ee2c
Include header files in CMake's source lists
2018-04-21 23:42:04 -07:00
Chris Robinson
9575eebac4
Move the bnad-splitter filters to a separate source
2018-04-21 23:23:46 -07:00
Chris Robinson
ace8e64850
Only use fast float-to-int workarounds for x87
...
At least SSE and ARM have opcodes that handle float-to-int conversions well
enough. Also, Clang doesn't inline lrintf, incurring function call overhead for
what should be a single opcode.
2018-04-21 21:07:20 -07:00
Chris Robinson
4ee26f4ca3
Add some more ASSUME statements
2018-04-21 02:44:01 -07:00
Chris Robinson
a55c93e1f5
Improve ASSUME for Clang
...
For some reason, the { if(!x)__builtin_unreachable(); } construct does not
provide the same optimization opportunity for Clang (even though the condition
being false would trigger undefined behavior by reaching unreachable code, it
still performs checks and such for the condition potentially being false).
Using __builtin_assume seems to work better.
2018-04-21 01:54:43 -07:00
Chris Robinson
400ab8766c
Adjust the stereo panning front gain
...
This gives it a (more) precise -4.5dB gain drop for front-center panned sounds.
2018-04-19 21:55:20 -07:00
Chris Robinson
90b8d639f1
Remove unnecessary undefs
2018-04-19 18:24:27 -07:00
Chris Robinson
525b6fe168
Clear ALSA's PCM handle after closing it
2018-04-19 12:22:39 -07:00
Chris Robinson
f96a8fe369
Add some ASSUME statements that ensure mixing at least 1 sample
2018-04-18 20:39:52 -07:00
Chris Robinson
150586d7fe
Add an ASSUME macro that requires a true condition
2018-04-17 22:50:50 -07:00
Chris Robinson
09194fd488
Accumulate the B-Format HRTF responses using doubles
...
The final result is still truncated to single-precision float, but this should
keep the responses more stable as it accumulates the various inputs.
2018-04-17 21:27:47 -07:00
Chris Robinson
e619b64175
Don't minimize the HRTF per-response delay
...
The reverts both fa9ab9af7c and
79604c3c0e . As helpful as it was for the high
frequencies, the overall response's gain suffered.
2018-04-16 18:54:41 -07:00
Chris Robinson
795ed65797
Preliminary ChangeLog update
2018-04-15 19:01:38 -07:00
Chris Robinson
5b82dd8733
Update .gitignore
2018-04-14 13:02:21 -07:00
Chris Robinson
9c5307a48a
Rename BiquadState to BiquadFilter
2018-04-04 18:07:46 -07:00
Chris Robinson
b1fe405861
Improve ordering of channel processing in makehrtf
2018-04-03 11:21:15 -07:00
Chris Robinson
869637af2e
Apply biquad and T60 filters using transposed direct form II
2018-04-03 10:15:35 -07:00
Chris Robinson
414b56edec
Initialize COM using the multithreaded apartment
...
I honestly have no idea which is the correct (or better) mode to use given the
confusing mess COM is, but CoInitialize uses single-threaded apartments which
seems to be a problem for with at least a couple games in the STALKER series
(the call fails, which causes us to drop back to the DSound backend).
2018-04-01 16:39:20 -07:00