aboutsummaryrefslogtreecommitdiffstats
path: root/alc
Commit message (Collapse)AuthorAgeFilesLines
...
* Improve the room rolloff factor hanldingChris Robinson2023-12-071-79/+100
| | | | | | | | | | Testing with Generic Software shows that the reverb room rolloff factor applies to the currently selected distance model, not necessarily an inverse distance model as described in the EFX docs. Though it should be noted, Generic Software completely ignores AL_EFFECTSLOT_AUXILIARY_SEND_AUTO, never applies the cones to the wet gain, and doesn't clamp to AL_MIX_GAIN and AL_MAX_GAIN for the wet gains. It's unclear if the reverb or source room rolloff factors, or the initial decay, should be imfluenced by the min or max gain properties.
* Don't apply the reverb room rolloff with a 0 ref distanceChris Robinson2023-12-061-2/+3
|
* Don't throw from the pipewire backend stop methodChris Robinson2023-12-061-4/+2
|
* Use RAII to handle writing under the mixer seqlockChris Robinson2023-12-044-27/+13
|
* Remove some unnecessary atomic wrappersChris Robinson2023-12-033-3/+4
|
* Replace a global function with a member functionChris Robinson2023-12-038-16/+10
|
* Make the device clock members atomicChris Robinson2023-12-033-23/+36
| | | | | | Even though they're protected by a SeqLock of sorts, it's still UB to read and write non-atomic vars from different threads. It's fine to do relaxed reads and writes given the lock though, to help alleviate the cost.
* fix printf format for MinGW (#942)Rosen Penev2023-12-032-4/+4
| | | | | | With gcc, mingw uses gnu_printf. With clang, printf is used as it does not support gnu_printf. Use the internal header to match this properly. Signed-off-by: Rosen Penev <[email protected]>
* Adjust the secondary early reflectionsChris Robinson2023-12-021-6/+7
| | | | | | | | | | | | | | This reduces the delay to provide a direct (no delay) line from the early reflections to the late reverb delay buffer. This also reduces the early reflection output gain by half. The reasoning here is that EFX seems to expect only one set of initial reflections, while we use two. And being close enough in time, nearly doubles the amount of output energy. This does seem to improve the "harshness" of certain reverbs, smoothing the difference between reverbs, and makes it more like other implementations (still some work to do on late reverb, though).
* Avoid extra multipliesChris Robinson2023-12-011-3/+3
|
* Rename the extension for 32-bit buffer formatsChris Robinson2023-12-011-15/+15
|
* Update some in-progress format enumsChris Robinson2023-11-251-15/+15
|
* Fix some unused parameter and unhandled enum warningsChris Robinson2023-11-256-59/+62
|
* Fix some commentsChris Robinson2023-11-251-3/+2
|
* Add query fonction in ALC_SOFT_system_events unreleased extension (#938)MathiusD2023-11-2613-18/+129
| | | | | | | | | | | | | | | | | | | * feat(ALC_SOFT_system_events): Add alcEventIsSupportedSOFT method in ALC_SOFT_system_events unreleased extension The purpose of this addition (to my collection) are allow to retrieve which events are supported and if events are fully supported or if some case isn't managed for some reason For exemple only some backends provide system events: * pipewire -> Full support of extension * wasapi -> Full support of extension * pulseaudio -> Support of add and remove devices events only * coreaudio -> Support of default device change only * feat(ALC_SOFT_system_events): Fix typo in alext.h Cf following review : https://github.com/kcat/openal-soft/pull/938#discussion_r1404509828 * feat(ALC_SOFT_system_events): Remove ALC_EVENT_NOT_SUPPORTED_SOFT token Cf following discussions between this comment : https://github.com/kcat/openal-soft/pull/938#issuecomment-1825876452 to this comment : https://github.com/kcat/openal-soft/pull/938#issuecomment-1826419406
* Do proper spatial reflection in reverbChris Robinson2023-11-221-16/+55
| | | | | | Instead of "bouncing" the lines by indexing backwards for a not-quite-spatial- opposite, do a proper mix that moves each line response to its true spatial opposite position.
* Compensate the late delay tap by the early delay bufferChris Robinson2023-11-221-1/+5
|
* 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.
* Start a 32-bit sample format extensionChris Robinson2023-11-183-42/+89
| | | | | 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-151-0/+1
|
* Remove some explicit template parametersChris Robinson2023-11-101-8/+7
|
* Use PFFFT for the pitch shifterChris Robinson2023-10-251-13/+36
|
* Use a byte for the channel indexChris Robinson2023-10-223-12/+12
|
* 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 log failed config option lookupsChris Robinson2023-10-191-5/+2
|
* 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-159-30/+30
|
* Ensure some variables are the sameChris Robinson2023-10-151-21/+21
| | | | And clean up some comments
* Avoid an extra copy to calculate the convolution FFTChris Robinson2023-10-141-6/+5
|
* Read the correct half-frequency binChris Robinson2023-10-141-1/+1
|
* Rename the convolution reverb effect to just convolutionChris Robinson2023-10-123-6/+6
| | | | | 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-121-1/+2
| | | | Only affects ambisonic (B-Format and UHJ) formats
* Add convolution effect properties to rotate ambisonic responsesChris Robinson2023-10-121-3/+23
|
* 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-111-8/+7
| | | | | | 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.
* Use PFFFT for the convolution effectChris Robinson2023-10-061-40/+92
|
* Improve ambisonic rotator coefficient accuracyChris Robinson2023-10-021-17/+38
|
* Declare a missing variableChris Robinson2023-10-011-1/+1
|
* Get the default WASAPI device on UWPChris Robinson2023-10-011-25/+14
|
* Add a wrapper for COM initializationChris Robinson2023-09-292-34/+24
| | | | | This helps ensure COM is initialized and deinitialized in order relative to other objects (e.g. ComPtr).
* Ensure the WASAPI resample buffer is cleared when mixing startsChris Robinson2023-09-291-9/+6
| | | | | Otherwise, stopping and restarting without resetting could leave it with invalid pointers.
* Set the appropriate padding sizeChris Robinson2023-09-261-1/+1
| | | | It's based on the original/stream size, not the ALCdevice's.
* Constify some pointers to indicate they won't changeChris Robinson2023-09-251-1/+1
|
* Honor the wasapi allow-resampler option with spatial sound outputChris Robinson2023-09-241-0/+4
|
* Match the output sample rate if not requesting oneChris Robinson2023-09-241-0/+4
|
* Support resampling with WASAPI spatial audio outputChris Robinson2023-09-241-14/+67
|
* Fix cppwinrt exception type capture (#918)Deal2023-09-231-1/+1
|