aboutsummaryrefslogtreecommitdiffstats
path: root/alc/alu.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Improve ambisonic rotator coefficient accuracyChris Robinson2023-10-021-17/+38
|
* Avoid casting an integer literalChris Robinson2023-09-221-1/+1
|
* Store channel positions as vectors instead of anglesChris Robinson2023-09-141-117/+162
| | | | To avoid extraneous conversions between angles and vectors
* Use a span instead of an auto&& to arrayChris Robinson2023-09-131-7/+7
|
* Fix some typos (#872)Dirk Stolle2023-07-041-1/+1
|
* Use inline variables instead of functions with static variablesChris Robinson2023-06-141-12/+12
|
* Rename threads.cpp/h to alsem.cpp/hChris Robinson2023-06-011-1/+0
|
* Be a bit more safe with type manglingChris Robinson2023-05-241-4/+2
|
* Use a variant for AsyncEventChris Robinson2023-05-081-15/+16
|
* Send a debug message when disconnectingChris Robinson2023-05-081-9/+6
|
* Replace al::optional with std::optionalChris Robinson2023-05-041-0/+1
|
* Scale B-Format panning coefficients only when neededChris Robinson2023-04-061-7/+7
|
* Use macros for the likely/unlikely attributesChris Robinson2023-03-011-6/+6
| | | | | The syntax parser for GCC 8 (and earlier?) fails when these attributes are in certain places.
* Separate decoding and mixing from resamplingChris Robinson2023-02-121-6/+0
|
* Use a span to hold the cubic table referenceChris Robinson2023-02-101-1/+1
|
* Rename the bsinc table variablesChris Robinson2023-02-071-2/+2
|
* Use an interpolated FIR filter for cubic resamplingChris Robinson2023-02-061-0/+11
| | | | | | Similar to how the bsinc filters work, but optimized for 4-point filtering. At least the SSE version is notably faster than calculating the coefficients in real time.
* Avoid using auto for lambda parametersChris Robinson2023-02-061-1/+1
|
* Transpose the ambisonic rotation matrix and helper coefficientsChris Robinson2023-01-261-39/+32
|
* Transpose the ambisonic voice mixing matrixChris Robinson2023-01-251-34/+41
| | | | | To more efficiently prepare the panning coefficients. Also avoid making a stack copy of the matrix to reuse as the target.
* Change a couple macros to constexpr variablesChris Robinson2023-01-161-4/+4
|
* Precalculate reused scale factorsChris Robinson2023-01-151-1/+1
|
* clang-tidy cleanups (#800)Rosen Penev2023-01-151-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * clang-tidy: use bool literals Found with modernize-use-bool-literals Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: replace std::bind with lambdas Found with modernize-avoid-bind Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: use data() instead of pointer stuff Found with readability-container-data-pointe Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: use empty() Found with readability-container-size-empty Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: remove static in anon namespace Found with readability-static-definition-in-anonymous-namespace Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: remove const return Found with readability-const-return-type Signed-off-by: Rosen Penev <[email protected]> Signed-off-by: Rosen Penev <[email protected]>
* Don't use doubles for upsampling B-Format transformsChris Robinson2023-01-131-3/+3
|
* Rename some struct membersChris Robinson2023-01-101-3/+3
| | | | And make a related function a member function
* Use a bitset for the enabled event flagsChris Robinson2022-12-161-4/+3
|
* Implement an al::unreachable wrapper/helperChris Robinson2022-12-131-1/+1
|
* Avoid using a macro to wrap standard attributesChris Robinson2022-12-061-6/+6
|
* Avoid LIKELY/UNLIKELY macrosChris Robinson2022-12-051-5/+5
|
* Use standard likely/unlikely attributes when availableChris Robinson2022-12-051-1/+1
|
* Add the ability to start a voice at a particular timeChris Robinson2022-11-031-1/+5
|
* Track if doing 2D mixing onlyChris Robinson2022-09-041-3/+6
| | | | And use it to select the proper HF scales
* Add a 2D fourth-order upsamplerChris Robinson2022-08-271-0/+3
| | | | This will be necessary for 2D fourth-order sources with 3D fourth-order output.
* Don't mark a non-constexpr-able function as constexprChris Robinson2022-08-261-1/+1
| | | | | It can't be constexpr because it needs write access to an std::array, and because of std::sqrt.
* Simplify calculating the ambisonic rotator coefficientsChris Robinson2022-08-261-34/+33
|
* Fix W input mixing when non-0 coverageChris Robinson2022-08-261-15/+25
| | | | | | 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.
* Create and use 2D upsampling matricesChris Robinson2022-08-251-7/+27
|
* Apply the upsampler before rotationChris Robinson2022-08-251-84/+23
| | | | | | | | 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).
* Skip LFE for aux send gains with Direct ChannelsChris Robinson2022-08-181-0/+4
|
* Fix the channel spread for aux send gains with full HRTFChris Robinson2022-08-181-1/+1
|
* Inline and precompute some CalcDirectionCoeffs callsChris Robinson2022-08-181-1/+1
|
* Use a decode-encode method for ambisonic upsamplingChris Robinson2022-08-151-6/+107
| | | | | | | | 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.
* Avoid putting a 1KB array on the stackChris Robinson2022-08-021-6/+6
|
* Rework multi-channel source radius handlingChris Robinson2022-08-021-50/+118
| | | | | | | | 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.
* Change an inline function to a class methodChris Robinson2022-08-021-4/+4
|
* Use an intrusive_ptr to hold on to the EffectStateChris Robinson2022-07-291-3/+3
|
* Use the reverb air absorption for the send pathsChris Robinson2022-07-191-9/+7
|
* Add a config compat option for NFC distance scalingChris Robinson2022-07-071-6/+10
| | | | | | | | | | | | Currently there's no way for an application to specify the "real world" scale for in-game units. If the game doesn't use one unit to represent what should be perceived as one meter to the user, the NFC filter's effect will be too near or too far sounding. This allows adjusting the unit scale as applied to the NFC filters only, correcting the misalignment. This also removes the influence of EFX's MetersPerUnit from the NFC filters, since many games don't use it, and those that do won't know it also influences the perceived wave curvature along with the air absorption strength.
* Don't apply effect auto send adjustments for non-reverb effectsChris Robinson2022-06-161-1/+1
|
* Avoid a virtual function call to set the decoder widthChris Robinson2022-05-171-1/+1
|