aboutsummaryrefslogtreecommitdiffstats
path: root/alc/effects
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Don't apply the HF scaling for "upsampling" ambisonics"Chris Robinson2022-09-022-4/+42
| | | | This reverts commit bf3f63fb4c5faa45784d7433d68b7013e29ee2c1.
* Don't apply the HF scaling for "upsampling" ambisonicsChris Robinson2022-08-312-42/+4
| | | | | | | | | | | | 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).
* 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.
* Upsample the reverb output as neededChris Robinson2022-08-271-35/+94
|
* Create and use 2D upsampling matricesChris Robinson2022-08-252-2/+2
|
* Inline and precompute some CalcDirectionCoeffs callsChris Robinson2022-08-185-7/+7
|
* Inline a function and remove an unnecessary parameterChris Robinson2022-08-162-2/+2
|
* Use proper array sizes for more gainsChris Robinson2022-08-1512-22/+26
|
* Change an inline function to a class methodChris Robinson2022-08-021-4/+3
|
* Ensure some mixing buffers are aligned for SIMDChris Robinson2022-07-262-2/+2
|
* Use a boolean check instead of a function pointerChris Robinson2022-05-241-7/+14
|
* Avoid dividing by a constantChris Robinson2022-05-241-4/+4
|
* Rename lerp to avoid conflicts with C++20's std::lerpChris Robinson2022-04-063-6/+6
|
* Rename Sqrt1_2 for consistencyChris Robinson2022-02-011-5/+5
|
* Remove math_defs.hChris Robinson2022-01-271-2/+5
|
* Get rid of MathDefsChris Robinson2022-01-278-28/+24
|
* Start and use a standard-like numbers headerChris Robinson2022-01-272-11/+12
|
* Use a different output matrix for late reverbChris Robinson2022-01-111-14/+22
| | | | | | | | | | This is a slightly reoriented tetrahedron, with responses on the front-left and front-right, along with upper-back and lower-back. This is a alternative matrix suggested for converting the A-Format late reverb lines back to B-Format. Also alter the matrix scaling to be less destructive. x0.5 is just reducing the floating-point exponent by 1, whereas the previous values would be more likely to introduce rounding errors just from scaling.
* Move the effects base and effectslot to coreChris Robinson2021-12-1714-213/+14
|
* Make an inline function to check for 2D ambisonic formatsChris Robinson2021-12-121-1/+1
|
* Add an internal Super Stereo formatChris Robinson2021-12-111-0/+1
| | | | | | | It's not available as an AL buffer format (yet) since I'm not sure how to expose it. Internally it seems fine as a separate channel configuration, but because OpenAL combines the channel configuration and sample type, a flag may work better there.
* Add a UHJ-specific coefficient scaling arrayChris Robinson2021-07-131-2/+7
|
* Update include headersChris Robinson2021-04-2715-30/+33
| | | | Don't add alc/ to the include paths.
* Update some license noticesChris Robinson2021-04-272-28/+52
| | | | Permission to relicense was granted via email.
* Update includesChris Robinson2021-04-2711-15/+18
|
* Move BufferStorage and Voice to coreChris Robinson2021-04-271-1/+1
|
* Move GetChannelIdxByName and clean up some more includesChris Robinson2021-04-262-2/+0
|
* Move some functions to coreChris Robinson2021-04-2514-88/+238
| | | | And clean up more includes
* More include cleanupChris Robinson2021-04-241-0/+3
|
* Move GetHFOrderScales to a more appropriate placeChris Robinson2021-04-242-4/+3
|
* Create a base the ALCdevice and ALCcontext structsChris Robinson2021-04-2415-69/+70
| | | | | A base that contains the API-agnostic data, with ALCdevice and ALCcontext being for AL-specific data.
* Add support for 4-channel UHJChris Robinson2021-03-311-1/+2
| | | | Also add the SOFT moniker to the new macros
* Handle 3-channel UHJ audio buffersChris Robinson2021-03-311-1/+2
|
* Start an interface for providing UHJ audioChris Robinson2021-03-311-1/+20
| | | | Currently only 2-channel UHJ, which gets treated as stereo.
* Avoid copying buffers for aligning overlapped windowsChris Robinson2021-01-302-33/+42
|
* Store buffer info in the queue entryChris Robinson2021-01-2415-47/+53
|
* Avoid global constexpr arraysChris Robinson2021-01-211-11/+11
|
* Add NEON-enhanced FIR loops for convolution and UHJChris Robinson2020-12-311-0/+15
|
* Return an intrusive_ptr from EffectStateFactory::createChris Robinson2020-12-2815-19/+34
|
* Avoid including voice.h in alcontext.hChris Robinson2020-12-274-0/+6
|
* Combine EffectState::deviceUpdate with setBufferChris Robinson2020-12-2615-35/+29
|
* Avoid AL enums for the EffectSlot typeChris Robinson2020-12-261-2/+2
|
* Add a crossover frequency field for the deviceChris Robinson2020-12-262-2/+2
| | | | | | Used when upsampling low-order ambisonic signals to higher order. Rather than a hardcoded 400hz, it ensures a consistent crossover point when an ambdec configuration is used. It can also allow for an alsoft config option.
* Update a comment and type used in the convolution effectChris Robinson2020-12-251-11/+11
|
* Rename From2D to FromACN2DChris Robinson2020-12-251-1/+1
|
* Avoid AL types and enums in the effect processorsChris Robinson2020-12-2412-142/+147
|
* Move logging to coreChris Robinson2020-12-171-1/+1
|
* Move fmt_traits to coreChris Robinson2020-12-131-1/+1
|