Commit Graph

7117 Commits

Author SHA1 Message Date
Chris Robinson b4a52321c4 Use a safer layout if sndio changes the channel count 2020-06-07 11:45:06 -07:00
Chris Robinson c8f67cffc5 Use a more appropriate size value for copying 2020-06-07 11:00:19 -07:00
Chris Robinson 03eb6a01b9 Use a better type for array access 2020-06-07 11:00:19 -07:00
kcat 4acfbfc37a Merge pull request #435 from DanielGibson/sndio-more-channels
sndio: Support more than 2 channels
2020-06-07 10:59:54 -07:00
Daniel Gibson 5cffe7e50a sndio: Support more than 2 channels
So far the sndio backend only supports Mono and Stereo, but sndio
supports up to 16 channels (64 in their current git code).
This adds support for all the openal-soft formats (DevFmt*).
I tested this on Linux with 5.1 surround speakers.
2020-06-07 17:22:51 +02:00
Chris Robinson 70d345bbf2 Avoid convolving an always-0 sample 2020-05-30 16:29:23 -07:00
Chris Robinson 7a95a870be Clarify some changelog entries 2020-05-27 15:46:25 -07:00
Chris Robinson f1612ce228 Use dual-biquad processing for the equalizer effect 2020-05-26 18:08:57 -07:00
Chris Robinson 9b63e2460c Update the Changelog 2020-05-26 14:13:02 -07:00
Chris Robinson 7b642330c5 Simplify UHJ delay handling 2020-05-26 12:19:19 -07:00
Chris Robinson 8d77c59da4 Fade over more of the update with HRTF 2020-05-25 16:57:38 -07:00
Chris Robinson 4e82feffef Only apply non-silent inputs for blended HRIR 2020-05-25 16:37:31 -07:00
Chris Robinson 5eb1ae5a14 Simplify the HRTF blending fade out gain scaling 2020-05-25 13:18:10 -07:00
Chris Robinson 4d9d406966 Clarify an error message 2020-05-25 02:02:50 -07:00
kcat 070ed0d5ac Merge pull request #429 from jbeich/ci
Add FreeBSD to CI
2020-05-24 11:31:06 -07:00
Jan Beich c262d0146e CI: add FreeBSD job 2020-05-24 13:12:18 +00:00
Chris Robinson 1a287f434a Round the pitch shifter frequency bin targets 2020-05-22 16:36:41 -07:00
Chris Robinson 978f32acf7 Round the scaled HRTF delays 2020-05-21 17:59:15 -07:00
Chris Robinson 109875942c Slightly increase the HRTF direct delay
To help improve the phase-corrected HF scaler.
2020-05-21 15:25:03 -07:00
Chris Robinson 94105409f8 Print why a sofa file couldn't be opened 2020-05-21 13:51:48 -07:00
Chris Robinson da3dfa2fb0 Simplify handling the stablizer side channel delay 2020-05-21 13:48:50 -07:00
Chris Robinson e98017b475 Avoid a log10 constant call 2020-05-21 09:46:39 -07:00
Chris Robinson 5bbbe8341e Use an enum class for SpatializeMode 2020-05-21 09:10:32 -07:00
Chris Robinson e880c04f32 Clarify a comment about the band-splitter 2020-05-20 11:22:53 -07:00
Chris Robinson 200c164d78 Improve HRTF delay handling
Ensures source-level HRTF, the dry mix, and direct output all align properly,
and simplifies adding the delay in the direct mix output.
2020-05-20 11:13:06 -07:00
Chris Robinson f38b813ba8 Fix some comments 2020-05-19 18:22:38 -07:00
Chris Robinson 19baf646d2 Rename applyHfScale to processHfScale 2020-05-19 13:58:55 -07:00
Chris Robinson c5e90ed6c7 Use an enum for FamCount 2020-05-19 12:15:57 -07:00
Chris Robinson 825206bfa2 Apply the ambisonic HF scaling in real-time with HRTF
Rather than applying the HF scale to the IRs necessitating them to be truncated
along with increasing the IR size, it can be applied to the input signal for
the same results. Consequently, the IR size can be notably shortened while
avoiding the extra truncation. In its place, the delayed reversed all-pass
technique can still be used on the input for maintaining phase when applying
the bandsplit/hfscalar filter to the input signal.
2020-05-19 10:27:52 -07:00
Chris Robinson a512eae7bb Move BUFFERSIZE and FloatBufferLine to a separate header 2020-05-19 10:21:19 -07:00
Chris Robinson 463591663c Check that aligned_alloc is available with cmake
Some compilers support C++17 even on targets that lack required functions.
Projects that want to force C++17 will then run into a problem with
std::aligned_alloc not existing on those targets, so it needs to be explicitly
checked for. The alternative is to simply never use it even when it would be
available.
2020-05-19 08:13:13 -07:00
Chris Robinson 400a108ead Also search for asimd for Neon 2020-05-17 16:23:24 -07:00
Chris Robinson c75c96ce2d Assume Neon support if cpu_caps.cpp is compiled with it 2020-05-17 14:14:29 -07:00
Chris Robinson 36aebbb6ae Include the existing direct signal in the UHJ delay
So any direct_channels sources and normal panned sources remain aligned, and
the reported latency is accurate.
2020-05-16 11:35:55 -07:00
Chris Robinson 0f81fafc62 Fix some standard calls 2020-05-16 01:21:09 -07:00
Chris Robinson d086e78a38 Fix the all-pass's shuffle order 2020-05-14 21:16:21 -07:00
Chris Robinson 91b8387c0a Give names to parameter value constants 2020-05-13 00:57:03 -07:00
Chris Robinson f5bf7dc76e Do two samples at once with the SSE UHJ all-pass 2020-05-12 05:51:48 -07:00
Chris Robinson ad95cb6312 Clear the whole buffer 2020-05-12 04:46:15 -07:00
Chris Robinson 2f8f829772 Properly count the last number of samples to mix 2020-05-12 04:45:25 -07:00
Chris Robinson 3ce8a9914c Fix applying the UHJ phase-shift filter 2020-05-11 23:49:39 -07:00
Chris Robinson 2574b98f8a Move the bsinc tables out of common 2020-05-11 02:24:08 -07:00
Chris Robinson 0406e3bef7 Change a couple functions into member functions 2020-05-10 20:16:43 -07:00
Chris Robinson 2fb4ac1621 Revert "Fix the FFT half point for the shifter effects"
This reverts commit 12bb5a47cd.
2020-05-09 16:44:29 -07:00
Chris Robinson 52a5dc23a3 Fix the UHJ filter generator
The half point needs to be included in the frequency response.
2020-05-09 16:42:43 -07:00
Chris Robinson 73569dfeca Avoid a reference on a constexpr variable 2020-05-08 20:11:30 -07:00
Chris Robinson 1c320c3532 Use a FIR filter for the UHJ all-pass 2020-05-08 15:38:14 -07:00
Chris Robinson 12bb5a47cd Fix the FFT half point for the shifter effects 2020-05-08 01:39:48 -07:00
Chris Robinson 48fbad9836 Slightly improve the Hann windows
There's no need to include the 0 terms on the ends since they'll never
contribute a sample. So extend the width to have the 0 terms just outside the
window where it wouldn't contribute anyway.
2020-05-08 01:25:32 -07:00
Chris Robinson 301f8f5db5 Use std::arrays for the UHJ filters 2020-05-08 01:24:14 -07:00