Chris Robinson
b8d73a226a
Add a 2D fourth-order upsampler
...
This will be necessary for 2D fourth-order sources with 3D fourth-order output.
2022-08-27 03:43:33 -07:00
Chris Robinson
0ae6955f1c
Fix variable name
2022-08-26 02:01:28 -07:00
Chris Robinson
35d7fca52c
Don't mark a non-constexpr-able function as constexpr
...
It can't be constexpr because it needs write access to an std::array, and
because of std::sqrt.
2022-08-26 01:34:04 -07:00
Chris Robinson
1a99ac48f6
Simplify calculating the ambisonic rotator coefficients
2022-08-26 00:49:25 -07:00
Chris Robinson
1ee81ab3f0
Fix W input mixing when non-0 coverage
...
When upsampling certain ambisonic formats, the W channel may contribute to
other output channels even with full coverage. Make sure they're taken into
account.
2022-08-26 00:11:50 -07:00
Chris Robinson
e48c294a69
Create and use 2D upsampling matrices
2022-08-25 23:22:45 -07:00
Chris Robinson
298318bd8a
Apply the upsampler before rotation
...
Although this will necessitate applying a full device-order rotation for all
ambisonic sources, it should be slightly better since it's effectively rotated
after being mixed to higher order. This will also allow using more optimized
upsamplers for 2D ambisonic sources vs 3D (while still allowing the sources to
be rotated in 3D).
2022-08-25 19:56:00 -07:00
Chris Robinson
415815cff7
Don't include the full path for frameworks to link
2022-08-21 17:47:56 -07:00
Chris Robinson
6815926cc5
Update alffplay to support newer ffmpeg versions
2022-08-20 20:59:15 -07:00
Chris Robinson
df33746571
Create a proper third-order upsampler matrix
...
This is just an identity matrix for now, since with third-order mixing, it
results in a matrix being multiplied with it's inverse.
2022-08-19 14:08:29 -07:00
Chris Robinson
1482f0b23d
Skip LFE for aux send gains with Direct Channels
2022-08-18 20:40:45 -07:00
Chris Robinson
dff86eb783
Fix the channel spread for aux send gains with full HRTF
2022-08-18 20:38:49 -07:00
Chris Robinson
ed9408e537
Inline and precompute some CalcDirectionCoeffs calls
2022-08-18 20:37:19 -07:00
Chris Robinson
4f75f9258c
Avoid duplicate code
2022-08-18 18:44:37 -07:00
Rosen Penev
2f3acdff4a
rtkit: match includes with code ( #752 )
...
These headers are used for __gettid. Match the if with the code.
Fixes compilation under MinGW.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2022-08-18 18:44:09 -07:00
Chris Robinson
07928fbb64
Fix the ringbuffer write size
2022-08-18 11:52:59 -07:00
Chris Robinson
19d35a45d7
Use an intermediate buffer for writing to the ringbuffer
...
It doesn't seem as though AudioUnitRender likes being given two buffers to
render/capture samples into segmented memory.
2022-08-18 10:32:59 -07:00
Chris Robinson
4115df49cf
Pass the action flags to AudioUnitRender from the callback
2022-08-17 03:56:53 -07:00
Chris Robinson
90f02176dd
Inline a function and remove an unnecessary parameter
2022-08-16 13:00:03 -07:00
Chris Robinson
832ccd7f48
Pass the bus number to AudioUnitRender from the callback
2022-08-16 12:57:21 -07:00
Chris Robinson
82c5b741e5
Use proper array sizes for more gains
2022-08-15 12:56:36 -07:00
Chris Robinson
f9e6fbaeff
Use amplitude-matching HF scaling for non-FOA HRTF output
2022-08-15 12:54:34 -07:00
Chris Robinson
e805c62152
Use the proper type for a global definition
...
Some compilers don't seem to like auto deduction for defining a declared
variable.
2022-08-15 09:39:45 -07:00
Chris Robinson
a8491ae513
Update in incorrect comment
2022-08-15 09:09:52 -07:00
Chris Robinson
6d5580805e
Use a decode-encode method for ambisonic upsampling
...
This should allow for clearer and less diffuse responses. While a cube is in
the blindspots for second-order, resulting in an identify transform for first-
to-second-order, they do start contributing to third-order channels, which
should make for sharper virtual points. The fixed HF scales should also play
nicer with larger order upmixes.
2022-08-15 09:01:03 -07:00
Chris Robinson
fbfa8a2686
Use the right array size for the mixing parameters
2022-08-14 10:07:32 -07:00
Chris Robinson
4f346caea3
Update some arrays in preparation for fourth order support
2022-08-14 00:56:38 -07:00
Chris Robinson
5f6b7f9166
Update the default HRTF
...
The sample rate is now 48khz to match the library's default sample rate, and
increased the FIR length to 64 points from 32.
2022-08-13 22:51:47 -07:00
Chris Robinson
dd3f03c148
Move a member variable to the struct it's needed
2022-08-09 22:19:11 -07:00
Chris Robinson
63a82feae6
Rename the UHJ filter config option
2022-08-09 04:01:31 -07:00
Chris Robinson
7e5dd41968
Add an option for higher quality UHJ filters
2022-08-08 03:44:25 -07:00
Chris Robinson
250f162496
Parameterize the UHJ filter length
2022-08-07 13:09:12 -07:00
Chris Robinson
b77a556d7b
Clear the buffer from X-RAM before updating its size
2022-08-05 12:11:02 -07:00
Chris Robinson
9d296a9c75
Avoid putting a 1KB array on the stack
2022-08-02 23:29:21 -07:00
Chris Robinson
b286e6497f
Rework multi-channel source radius handling
...
Rather than applying the calculated spread to each virtual channel, the spread
indicates how much the virtual channels surround the listener. At full spread,
the channels retain their virtual speaker positions, while at no spread, all
channels converge on the source position. This behavior is more consistent with
B-Format sources.
2022-08-02 18:26:49 -07:00
Chris Robinson
a1faa5d311
Change an inline function to a class method
2022-08-02 18:26:49 -07:00
Chris Robinson
810821a221
Simplify calculating nearest HRIR index
2022-08-02 18:26:49 -07:00
Chris Robinson
a700edc171
Check the channel count for a valid DecoderView
...
Ambisonic decoders can be zeroth order, but they need at least one output
channel.
2022-08-02 18:26:49 -07:00
Eir W
5bea47915a
Add media class for Audio/Source/Virtual as a valid node ( #747 )
2022-08-02 18:26:29 -07:00
Chris Robinson
b26ca6b65e
Add missing include for FreeBSD
2022-07-29 03:06:07 -07:00
Chris Robinson
81b739abc1
AllocEffectSlot can't fail
2022-07-29 02:59:10 -07:00
Chris Robinson
339465c91f
Use an intrusive_ptr to hold on to the EffectState
2022-07-29 01:49:30 -07:00
Chris Robinson
f35eb64619
Ensure some mixing buffers are aligned for SIMD
2022-07-26 02:21:47 -07:00
Chris Robinson
fdc0132f44
Mark the EffectSlot in use after getting one
2022-07-26 01:48:40 -07:00
Chris Robinson
7dcd2a86b8
Avoid __try on ARMv7 targets with MSVC
2022-07-24 17:09:50 -07:00
Chris Robinson
e5786ceb59
Fix a typo in a comment
2022-07-22 18:31:32 -07:00
Chris Robinson
1b28a24f6e
Don't assume rlim_t is unsigned
2022-07-22 17:29:50 -07:00
Chris Robinson
3f94e1c70a
Update a config comment about the default sample rate
2022-07-21 12:48:44 -07:00
Chris Robinson
a6ca55ca4e
Use the reverb air absorption for the send paths
2022-07-19 22:38:36 -07:00
Chris Robinson
10eca3e7c3
Silence an inline failure warning with GCC
2022-07-19 15:48:40 -07:00