Commit Graph

7284 Commits

Author SHA1 Message Date
Chris Robinson 8e09ae8ee6 Finalize AL_SOFT_effect_target 2020-10-16 06:36:43 -07:00
Chris Robinson 2beb095eb1 Finalize ALC_SOFT_loopback_bformat 2020-10-16 06:35:23 -07:00
Chris Robinson 5f8fe0e5bb Enable standard stdio methods with MinGW
This unfortunately doesn't fix the %z warnings for whatever reason, but it
should help guarantee correct function behavior by not relying on msvcrt's
stdio functions.
2020-10-13 05:59:35 -07:00
Chris Robinson 7b43cb8266 Declare variables closer to where they're used 2020-10-13 05:54:05 -07:00
Chris Robinson b0e025946e Don't check for the app path if one was already retrieved 2020-10-13 01:57:53 -07:00
Chris Robinson 303ca3af72 Use inline functions for popcnt and ctz instead of macros 2020-10-13 01:21:44 -07:00
Chris Robinson 45ff10fb4d Use a span instead of a pointer and count parameters 2020-10-12 23:58:54 -07:00
Chris Robinson 0dc9ae0998 Update event enum values
To keep them less spread out from other OpenAL Soft extensions.
2020-10-07 20:13:52 -07:00
Chris Robinson af9c990277 Print the number of used measurements in sofa-info 2020-10-07 01:04:42 -07:00
Chris Robinson 5fbd02e60e Update ChangeLog 2020-10-06 00:38:37 -07:00
Chris Robinson 7fb6d64ca8 Be more robust with to-mono channel conversions 2020-10-05 22:30:23 -07:00
Chris Robinson e7a44d3b70 Cast the ringbuffer size to the correct type 2020-10-05 00:43:06 -07:00
Chris Robinson 7361e108a3 Fix a variable name 2020-10-05 00:17:13 -07:00
Chris Robinson e0097c18b8 Simplify some DSound capture math 2020-10-03 16:17:34 -07:00
Chris Robinson b5eccf424b Remove the unused Ref logging level 2020-09-28 16:14:20 -07:00
Chris Robinson f02bc1354d Rework logging a little
Use OutputDebugStringW on Windows in addition to the log file

Avoid duplicate formatter parsing with Android
2020-09-28 11:34:24 -07:00
Chris Robinson da29489ead Use an enum class for the log level 2020-09-28 00:40:30 -07:00
Chris Robinson 39f4ea61c5 Add missing linear resampler to the option setting list 2020-09-24 14:21:57 -07:00
Chris Robinson cef82153b6 Use a smaller buffer for the phase-shift filter 2020-09-24 13:26:01 -07:00
Chris Robinson 04fd50bcdf Support B-Format sounds in the examples 2020-09-22 11:36:43 -07:00
Chris Robinson d2970443dd Recognize B-Format format names in the examples 2020-09-22 10:43:27 -07:00
Chris Robinson c993ade9bf Support B-Format amb file IRs in alconvolve
Be aware this requires proper header data (a WAVE_FORMAT_EXTENSIBLE format with
the proper integer or float B-Format sub-format GUID). A normal 4-channel wave
file will not be recognized, since it's indistinguishable from quadrophonic.
2020-09-22 10:18:43 -07:00
Chris Robinson 844e6c881b Add an alconvolve option to silence the dry signal 2020-09-22 08:30:04 -07:00
Chris Robinson d912b92a60 Support all buffer layouts for convolution 2020-09-22 08:09:42 -07:00
Chris Robinson 191150d9a8 Remove deprecated, performance, and error event types
These would be better served with a proper debug API, rather than a general
audio event API.
2020-09-20 04:11:52 -07:00
Chris Robinson 8ef242bce0 Don't use direct channels with convolution
It may come back as an effect property, but it's probably better to not try
forcing it by default.
2020-09-18 10:12:58 -07:00
Chris Robinson 07989a34dc Allow higher-order B-Format buffers for convolution
Only the first-order channels will be used, but higher-order buffers will be
allowed.
2020-09-18 00:06:10 -07:00
Chris Robinson e7d8e7eb3f Avoid extraneous buffers and buffer clears 2020-09-17 21:34:26 -07:00
Chris Robinson d86d882d8b Fix an invalid unicode character in a comment 2020-09-14 02:52:16 -07:00
Chris Robinson 0974b6b47c Use inline wrappers to clarify forward/inverse FFTs 2020-09-13 04:18:40 -07:00
Chris Robinson 9a883f5046 Partly simplify FFT bit-reversal
This can almost certainly be improved further, as less than half of the indices
really need their reversed bit-pattern calculated and elements swapped (any
symetrical bit pattern would just swap with itself, and indices whose reversed
bit-pattern has already been traversed is already swapped).

It may also prove beneficial to provide the base-2 log of the fft buffer size
(number of bits to represent the indices), as that could help make the reversal
more efficient with a known bit/loop count.
2020-09-13 03:33:52 -07:00
Chris Robinson 1d4b355622 Use standard sin and sqrt 2020-09-12 19:06:06 -07:00
Chris Robinson bb90bfd9b3 Accumulate delays as samples before calculating nanoseconds 2020-09-12 01:52:45 -07:00
Chris Robinson cf298075b5 Round (and clamp) the reftime instead of ceiling it 2020-09-12 00:47:04 -07:00
Chris Robinson 33d91ceeec Avoid repeating string literals 2020-09-11 01:40:36 -07:00
Chris Robinson a4bfba4cb5 Recognize GUID name strings with the DSound backend 2020-09-10 22:05:25 -07:00
Chris Robinson 21162cf5fc Allow JACK to enumerate custom devices
Each device being associated with a port name pattern it'll try connecting to.
2020-09-10 21:09:06 -07:00
Chris Robinson bb63d5aab3 Simplify clearing an array 2020-09-09 23:21:46 -07:00
Chris Robinson ce0a45cbc7 Don't assume iterators are pointers 2020-09-09 14:02:02 -07:00
Chris Robinson 68a099ba35 Apply the first convolution segment in the time domain
This avoids an inherent delay from the effect, at the cost of higher CPU use.
Having a customizable user-specified delay (with said user ensuring a properly
trimmed impulse response) could help alleviate the cost since once the delay
exceeds the segment size, the initial FIR filter could be skipped.
2020-09-09 02:23:38 -07:00
Chris Robinson f4a55cc8c2 Don't leave the negative frequencies as 0 for inverse FFT 2020-09-08 23:20:06 -07:00
Chris Robinson 29566b995c Avoid an extraneous ConvolutionFilter sub-object 2020-09-06 00:16:50 -07:00
Chris Robinson 7eb5dfb3f8 Allow querying the new enums and functions 2020-09-05 23:53:53 -07:00
Chris Robinson f5163ca988 Print the name and format for alconvole's impulse response 2020-09-05 23:48:19 -07:00
Chris Robinson 800e2b6125 Cleanup and fix alAuxiliaryEffectSlotPlayv/StopvSOFT 2020-09-05 21:39:31 -07:00
Chris Robinson 13710b474e Ensure effect slot properties are updated when playing 2020-09-05 21:04:41 -07:00
Chris Robinson c52bf8c401 Rework effect slot buffer setting
Rather than creating an effect-specific buffer that gets passed along as a
property, the buffer is set the effect state when the effect state is created,
the device is updated, or the buffer is changed. The buffer can only be set
while the effect slot isn't playing, so it won't be changed or updated while
the mixer is processing the effect state.
2020-09-05 20:48:56 -07:00
Chris Robinson 9975aeb37f Add methods to start and stop effect slot processing
A newly-created effect slot is in an AL_INITIAL state, in which processing is
stopped but will automatically become AL_PLAYING after successfully setting an
AL_EFFECTSLOT_EFFECT value (including AL_EFFECT_NULL or 0). Calling Play[v] or
Stop[v] will set the effect slot to AL_PLAYING or AL_STOPPED respectively.
While stopped, the effect won't produce audio and will not be processed.
2020-09-05 19:11:57 -07:00
Chris Robinson 7851f7d4ce Don't add effect slots to the active list until an effect is set 2020-09-05 18:13:08 -07:00
Chris Robinson c1ad5d6055 Avoid confusing */*...*/ syntax
MSVC warns about */ being outside of a comment.
2020-09-05 14:28:08 -07:00