aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Don't combine both early reflection taps for the late reverbChris Robinson2023-11-211-2/+3
| | | | | | | | | | | | | | | | | | | It doesn't make much sense to include both early reflections to feed the late reverb, since it increases the total energy in the reverb decay. This better fits with the design described in papers for this type of reverb, and seems to better match volume levels of hardware EAX/EFX reverb (though there are still some apparent differences). Note that this adds a bit more delay to the late reverb, specifically EARLY_LINE_LENGTHS[0] * density_mult. This can be compensated for somewhat by reducing the late reverb delay by that amount (clamping to a minimum of 0). Alternatively, adjust the delay lines for the second early tap to have a zero- delay pass-through line with 3 delay lines (as opposed to the current 4 delay lines), as suggested by the paper "ADAPTING ARTIFICIAL REVERBERATION ARCHITECTURES FOR B-FORMAT SIGNAL PROCESSING". Although doing so may require additional adjustments to the delay lengths and gains to avoid the 0-length lines accumulating unattenuated copies of the signal for the early reflection output.
* Handle systems that don't support std::cyl_bessel_iChris Robinson2023-11-182-4/+89
|
* Fix definition typesChris Robinson2023-11-181-7/+7
|
* Start a 32-bit sample format extensionChris Robinson2023-11-184-119/+181
| | | | | This ultimately is to properly distinguish and clarify formats being 32-bit integer and 32-bit float.
* Support 32-bit int sample storageChris Robinson2023-11-156-0/+14
|
* Make a couple global values/variables inlineChris Robinson2023-11-112-8/+6
|
* Remove some explicit template parametersChris Robinson2023-11-102-125/+124
|
* Use the C++ standard's regular modified Bessel functionChris Robinson2023-11-082-62/+6
|
* Precompute a value used multiple timesChris Robinson2023-11-071-19/+9
|
* Remove an unnecessary struct memberChris Robinson2023-11-042-5/+7
|
* Don't apply the UHJ all-pass's first segment in the time domainChris Robinson2023-10-282-57/+33
| | | | | Increases the delay by 128 samples, but replaces a time-domain convolution with a frequency-domain one.
* Remove unnecessary extra macrosChris Robinson2023-10-261-55/+37
|
* Slightly simplify calculating the minimum phase outputChris Robinson2023-10-261-4/+1
|
* Don't make a float version of complex_fftChris Robinson2023-10-252-26/+19
|
* Use PFFFT for the pitch shifterChris Robinson2023-10-251-13/+36
|
* Print the HRTF used in openal-infoChris Robinson2023-10-231-2/+17
|
* Don't inline a destructorChris Robinson2023-10-222-0/+6
|
* Use a byte for the channel indexChris Robinson2023-10-224-21/+21
|
* Update the downmix tablesChris Robinson2023-10-211-66/+53
|
* Use a dynamically resizing spa_pod_builderChris Robinson2023-10-211-14/+47
| | | | Rather than relying on a fixed-size buffer
* Remove an outdated commentChris Robinson2023-10-201-3/+0
|
* Don't keep setting and reloading a struct member in a loopChris Robinson2023-10-201-2/+3
|
* Don't log failed config option lookupsChris Robinson2023-10-191-5/+2
|
* Use a more appropriate type trait to remove a pointerChris Robinson2023-10-191-1/+1
|
* Remove the output delay on the UHJ and SuperStereo IIR decodersChris Robinson2023-10-182-38/+53
|
* Remove an unnecessary getterChris Robinson2023-10-171-11/+3
|
* Combine some more VADD(VMUL(... into VMADD(...Chris Robinson2023-10-171-48/+44
|
* Mark some output buffer pointers as RESTRICTChris Robinson2023-10-161-15/+17
|
* Fix WFX channel matching in uhjencoderChris Robinson2023-10-161-1/+1
|
* Replace some function-like macros with real functionsChris Robinson2023-10-161-117/+136
|
* Avoid some macros that use inputs multiple timesChris Robinson2023-10-161-25/+57
|
* Constify some parametersChris Robinson2023-10-162-19/+24
|
* Remove an unnecessary c_str() callChris Robinson2023-10-161-1/+1
|
* Properly align a buffer given to PFFFTChris Robinson2023-10-151-4/+5
|
* Avoid some unique and wrapper typesChris Robinson2023-10-151-58/+33
|
* Use the same stereo angles in convolution as normal mixingChris Robinson2023-10-151-19/+15
|
* Use a span for a known array length instead of a raw pointerChris Robinson2023-10-1511-36/+35
|
* Ensure some variables are the sameChris Robinson2023-10-152-41/+46
| | | | And clean up some comments
* Avoid an extra copy to calculate the convolution FFTChris Robinson2023-10-141-6/+5
|
* Don't use an iterator where a pointer is expectedChris Robinson2023-10-141-1/+1
|
* Use a split filter for the FIR-based UHJ encodersChris Robinson2023-10-143-13/+204
| | | | | | | | This applies the all-pass filter in two steps, first as a relatively short time-domain FIR filter, then as a series of frequency domain convolutions (using complex multiplies). Time-domain convolution scales poorly, so larger convolutions benefit from being done in the frequency domain (though the first part is still done in the time domain, to avoid longer delays).
* Read the correct half-frequency binChris Robinson2023-10-141-1/+1
|
* Add missing includeChris Robinson2023-10-121-0/+2
|
* Rename the convolution reverb effect to just convolutionChris Robinson2023-10-127-27/+27
| | | | | While the common use case, convolution can do more than just reverb, and it nicely shortens the name.
* Add an orientation property for convolution reverbChris Robinson2023-10-122-5/+28
| | | | Only affects ambisonic (B-Format and UHJ) formats
* Add convolution effect properties to rotate ambisonic responsesChris Robinson2023-10-123-3/+31
|
* Don't use al::vector where not neededChris Robinson2023-10-121-5/+3
|
* Remove an unnecessary deque with a custom allocatorChris Robinson2023-10-114-22/+4
|
* Attenuate the convolution filter instead of the filter resultChris Robinson2023-10-111-9/+8
|
* Make and use a separate zconvolve method without scalingChris Robinson2023-10-113-14/+96
| | | | | | When you're doing hundreds or thousands of separate zconvolve calls into the same buffer, it's more efficient to do the multiply once at the end instead of in each call.