Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Use the difference in HF scale for upsampling ambisonics | Chris Robinson | 2022-09-03 | 5 | -34/+32 |
| | |||||
* | Update the second-order upsampler HF scale | Chris Robinson | 2022-09-02 | 1 | -1/+1 |
| | |||||
* | Revert "Don't apply the HF scaling for "upsampling" ambisonics" | Chris Robinson | 2022-09-02 | 5 | -16/+119 |
| | | | | This reverts commit bf3f63fb4c5faa45784d7433d68b7013e29ee2c1. | ||||
* | Use an icosahedron for 3D second-order | Chris Robinson | 2022-09-01 | 4 | -66/+62 |
| | |||||
* | Don't apply the HF scaling for "upsampling" ambisonics | Chris Robinson | 2022-08-31 | 5 | -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 decoder | Chris Robinson | 2022-08-30 | 2 | -26/+26 |
| | |||||
* | Use predefined variables to handle 1/sqrt(3) | Chris Robinson | 2022-08-30 | 1 | -44/+45 |
| | |||||
* | Do a simplified update for reverb when not fading | Chris Robinson | 2022-08-29 | 1 | -49/+48 |
| | |||||
* | Always fade the main early and late delay taps | Chris Robinson | 2022-08-29 | 1 | -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 processing | Chris Robinson | 2022-08-29 | 1 | -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 lambda | Chris Robinson | 2022-08-29 | 1 | -2/+4 |
| | |||||
* | Allow the remix tables to be variable length | Chris Robinson | 2022-08-28 | 2 | -10/+10 |
| | |||||
* | More updates for making an OSX framework | Chris Robinson | 2022-08-28 | 1 | -2/+3 |
| | |||||
* | Fix OSX framework versions | Chris Robinson | 2022-08-28 | 1 | -2/+2 |
| | |||||
* | Upsample the reverb output as needed | Chris Robinson | 2022-08-27 | 1 | -35/+94 |
| | |||||
* | Add a 2D fourth-order upsampler | Chris Robinson | 2022-08-27 | 3 | -1/+56 |
| | | | | This will be necessary for 2D fourth-order sources with 3D fourth-order output. | ||||
* | Fix variable name | Chris Robinson | 2022-08-26 | 2 | -3/+3 |
| | |||||
* | Don't mark a non-constexpr-able function as constexpr | Chris Robinson | 2022-08-26 | 1 | -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 coefficients | Chris Robinson | 2022-08-26 | 1 | -34/+33 |
| | |||||
* | Fix W input mixing when non-0 coverage | Chris Robinson | 2022-08-26 | 1 | -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 matrices | Chris Robinson | 2022-08-25 | 6 | -20/+185 |
| | |||||
* | Apply the upsampler before rotation | Chris Robinson | 2022-08-25 | 1 | -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 link | Chris Robinson | 2022-08-21 | 1 | -4/+7 |
| | |||||
* | Update alffplay to support newer ffmpeg versions | Chris Robinson | 2022-08-20 | 3 | -141/+150 |
| | |||||
* | Create a proper third-order upsampler matrix | Chris Robinson | 2022-08-19 | 1 | -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 Channels | Chris Robinson | 2022-08-18 | 1 | -0/+4 |
| | |||||
* | Fix the channel spread for aux send gains with full HRTF | Chris Robinson | 2022-08-18 | 1 | -1/+1 |
| | |||||
* | Inline and precompute some CalcDirectionCoeffs calls | Chris Robinson | 2022-08-18 | 7 | -8/+20 |
| | |||||
* | Avoid duplicate code | Chris Robinson | 2022-08-18 | 3 | -77/+56 |
| | |||||
* | rtkit: match includes with code (#752) | Rosen Penev | 2022-08-18 | 1 | -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 size | Chris Robinson | 2022-08-18 | 1 | -1/+1 |
| | |||||
* | Use an intermediate buffer for writing to the ringbuffer | Chris Robinson | 2022-08-18 | 1 | -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 callback | Chris Robinson | 2022-08-17 | 1 | -3/+2 |
| | |||||
* | Inline a function and remove an unnecessary parameter | Chris Robinson | 2022-08-16 | 5 | -32/+23 |
| | |||||
* | Pass the bus number to AudioUnitRender from the callback | Chris Robinson | 2022-08-16 | 1 | -2/+2 |
| | |||||
* | Use proper array sizes for more gains | Chris Robinson | 2022-08-15 | 15 | -26/+30 |
| | |||||
* | Use amplitude-matching HF scaling for non-FOA HRTF output | Chris Robinson | 2022-08-15 | 1 | -4/+4 |
| | |||||
* | Use the proper type for a global definition | Chris Robinson | 2022-08-15 | 1 | -9/+11 |
| | | | | | Some compilers don't seem to like auto deduction for defining a declared variable. | ||||
* | Update in incorrect comment | Chris Robinson | 2022-08-15 | 1 | -1/+1 |
| | |||||
* | Use a decode-encode method for ambisonic upsampling | Chris Robinson | 2022-08-15 | 3 | -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 parameters | Chris Robinson | 2022-08-14 | 1 | -1/+1 |
| | |||||
* | Update some arrays in preparation for fourth order support | Chris Robinson | 2022-08-14 | 2 | -6/+11 |
| | |||||
* | Update the default HRTF | Chris Robinson | 2022-08-13 | 3 | -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 needed | Chris Robinson | 2022-08-09 | 1 | -2/+2 |
| | |||||
* | Rename the UHJ filter config option | Chris Robinson | 2022-08-09 | 2 | -7/+7 |
| | |||||
* | Add an option for higher quality UHJ filters | Chris Robinson | 2022-08-08 | 6 | -19/+67 |
| | |||||
* | Parameterize the UHJ filter length | Chris Robinson | 2022-08-07 | 7 | -40/+101 |
| | |||||
* | Clear the buffer from X-RAM before updating its size | Chris Robinson | 2022-08-05 | 1 | -0/+3 |
| | |||||
* | Avoid putting a 1KB array on the stack | Chris Robinson | 2022-08-02 | 2 | -7/+10 |
| | |||||
* | Rework multi-channel source radius handling | Chris Robinson | 2022-08-02 | 1 | -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. |