aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Use the difference in HF scale for upsampling ambisonicsChris Robinson2022-09-035-34/+32
|
* Update the second-order upsampler HF scaleChris Robinson2022-09-021-1/+1
|
* Revert "Don't apply the HF scaling for "upsampling" ambisonics"Chris Robinson2022-09-025-16/+119
| | | | This reverts commit bf3f63fb4c5faa45784d7433d68b7013e29ee2c1.
* Use an icosahedron for 3D second-orderChris Robinson2022-09-014-66/+62
|
* Don't apply the HF scaling for "upsampling" ambisonicsChris Robinson2022-08-315-119/+16
| | | | | | | | | | | | Not sure if this is best, but it fixes the issue of upsampling lower orders to higher orders multiple times (mixing lower order to higher order, cutting back to lower order by dropping the extra channels, then upsampling again, applying the HF scale multiple times and messing up the high frequencies/energy vector), as well as having too-strong high frequencies of upsampled content in general. As it is, with the new upsampling method, the lower order signal contributes to some higher order channels, which helps offset the high frequency scaling difference (except first- to second-order, which adds nothing).
* Use a more precise 3D7.1 decoderChris Robinson2022-08-302-26/+26
|
* Use predefined variables to handle 1/sqrt(3)Chris Robinson2022-08-301-44/+45
|
* Do a simplified update for reverb when not fadingChris Robinson2022-08-291-49/+48
|
* Always fade the main early and late delay tapsChris Robinson2022-08-291-8/+33
| | | | | | | | | These were actually missing from the current check for fading. But the EFX documentation suggests these (along with the early/late gain and panning) can be adjusted often without invoking a full change, as dynamically modeling an environment would continually change these properties as the listener moves around (changing the direction and distance to the reflective surfaces). So ensuring they're kept up-to-date would be the way to go.
* Update reverb processingChris Robinson2022-08-291-285/+290
| | | | | | | | | | | | | Separate the core delay line into early and late input delay lines. This will be necessary to allow a second late reverb processing loop to decay after a change. Also ensure the early reflection delay line is long enough to write in MAX_UPDATE_SAMPLES first without interfering with the subsequent read. And ensure the modulation delay doesn't cause an underflow on the feedback offset. Finally, move the loop inside the processing functions to minimize loop iterations.
* Use a bind statement instead of a lambdaChris Robinson2022-08-291-2/+4
|
* Allow the remix tables to be variable lengthChris Robinson2022-08-282-10/+10
|
* More updates for making an OSX frameworkChris Robinson2022-08-281-2/+3
|
* Fix OSX framework versionsChris Robinson2022-08-281-2/+2
|
* Upsample the reverb output as neededChris Robinson2022-08-271-35/+94
|
* Add a 2D fourth-order upsamplerChris Robinson2022-08-273-1/+56
| | | | This will be necessary for 2D fourth-order sources with 3D fourth-order output.
* Fix variable nameChris Robinson2022-08-262-3/+3
|
* 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-256-20/+185
|
* 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).
* Don't include the full path for frameworks to linkChris Robinson2022-08-211-4/+7
|
* Update alffplay to support newer ffmpeg versionsChris Robinson2022-08-203-141/+150
|
* Create a proper third-order upsampler matrixChris Robinson2022-08-191-5/+63
| | | | | This is just an identity matrix for now, since with third-order mixing, it results in a matrix being multiplied with it's inverse.
* 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-187-8/+20
|
* Avoid duplicate codeChris Robinson2022-08-183-77/+56
|
* rtkit: match includes with code (#752)Rosen Penev2022-08-181-1/+2
| | | | | | | | | These headers are used for __gettid. Match the if with the code. Fixes compilation under MinGW. Signed-off-by: Rosen Penev <[email protected]> Signed-off-by: Rosen Penev <[email protected]>
* Fix the ringbuffer write sizeChris Robinson2022-08-181-1/+1
|
* Use an intermediate buffer for writing to the ringbufferChris Robinson2022-08-181-26/+11
| | | | | It doesn't seem as though AudioUnitRender likes being given two buffers to render/capture samples into segmented memory.
* Pass the action flags to AudioUnitRender from the callbackChris Robinson2022-08-171-3/+2
|
* Inline a function and remove an unnecessary parameterChris Robinson2022-08-165-32/+23
|
* Pass the bus number to AudioUnitRender from the callbackChris Robinson2022-08-161-2/+2
|
* Use proper array sizes for more gainsChris Robinson2022-08-1515-26/+30
|
* Use amplitude-matching HF scaling for non-FOA HRTF outputChris Robinson2022-08-151-4/+4
|
* Use the proper type for a global definitionChris Robinson2022-08-151-9/+11
| | | | | Some compilers don't seem to like auto deduction for defining a declared variable.
* Update in incorrect commentChris Robinson2022-08-151-1/+1
|
* Use a decode-encode method for ambisonic upsamplingChris Robinson2022-08-153-22/+283
| | | | | | | | 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.
* Use the right array size for the mixing parametersChris Robinson2022-08-141-1/+1
|
* Update some arrays in preparation for fourth order supportChris Robinson2022-08-142-6/+11
|
* Update the default HRTFChris Robinson2022-08-133-4/+2
| | | | | The sample rate is now 48khz to match the library's default sample rate, and increased the FIR length to 64 points from 32.
* Move a member variable to the struct it's neededChris Robinson2022-08-091-2/+2
|
* Rename the UHJ filter config optionChris Robinson2022-08-092-7/+7
|
* Add an option for higher quality UHJ filtersChris Robinson2022-08-086-19/+67
|
* Parameterize the UHJ filter lengthChris Robinson2022-08-077-40/+101
|
* Clear the buffer from X-RAM before updating its sizeChris Robinson2022-08-051-0/+3
|
* Avoid putting a 1KB array on the stackChris Robinson2022-08-022-7/+10
|
* 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.