Chris Robinson
b9e192b78a
Implement a band-limited sinc resampler
...
This is essentially a 12-point sinc resampler, unless it's resampling to a rate
higher than the output, at which point it will vary between 12 and 24 points
and do anti-aliasing to avoid/reduce frequencies going over nyquist.
Code provided by Christopher Fitzgerald.
2015-11-05 09:42:08 -08:00
Chris Robinson
dce3d0c7bf
Change the Kaiser rippling limit to -60dB
...
This improves the transition cutoff, shortening its width and reducing the
amount of error.
2015-11-04 19:13:25 -08:00
Chris Robinson
bd0acf2843
Replace the Lanczos window with Kaiser for the sinc resampler
2015-11-04 06:40:54 -08:00
Chris Robinson
c57f571920
Pass in the Q parameter for setting the filter parameters
...
Also better handle the peaking filter gain.
2015-11-01 05:41:06 -08:00
Chris Robinson
0644ebbaa2
Use modff to split the modulation delay components
2015-10-31 01:35:01 -07:00
Chris Robinson
c3d58947c3
Mix reverb to output in the inner loop
2015-10-29 03:23:50 -07:00
Chris Robinson
79ad54f0c3
Include the echo's attenuation of the late reverb in the late reverb gain
2015-10-29 02:10:07 -07:00
Chris Robinson
62f1df77d7
Do up to 256 samples per reverb inner loop iteration
2015-10-29 01:40:23 -07:00
Chris Robinson
bd73cdab0d
Pass the appropriate BackendInfo explicitly to ProbeDevices
2015-10-28 18:10:12 -07:00
Chris Robinson
35c4aae3d6
Finalize ALC_SOFT_HRTF
2015-10-28 13:38:30 -07:00
Chris Robinson
9ce2b8f9a7
Always update all reverb properties
...
The EAX-only effect properties will be set to compatible defaults when standard
reverb is set, and the EAX-only effects will be skipped during sample
processing.
2015-10-28 02:36:48 -07:00
Chris Robinson
8f8bf1f605
Do multiple samples at once in each reverb component
2015-10-28 01:57:51 -07:00
Chris Robinson
e472cfcc53
Rename ALC_NUM_HRTF_SPECIFIER_SOFT to ALC_NUM_HRTF_SPECIFIERS_SOFT
2015-10-26 22:34:02 -07:00
Chris Robinson
6b627caf52
Add a comment about fegetenv possibly saving the SSE register for us
2015-10-26 01:49:56 -07:00
Chris Robinson
45f11d7b64
Set the current gain immediately if the target is close enough
2015-10-26 01:48:12 -07:00
Chris Robinson
90349b384f
Use the correct position in the SSE resamplers for left-over processing
2015-10-25 14:07:58 -07:00
Chris Robinson
fc03a955e9
Fix the SSE4.1 resamplers
...
Apparently the given _mm_extract_epi32 index obeys memory order, rather than
component order.
2015-10-24 17:37:53 -07:00
Chris Robinson
8d89c8be9e
Remove a couple unused parameters
2015-10-24 16:57:32 -07:00
Chris Robinson
a57fe89050
Lock the source queue for writing when updating the playback offset
2015-10-24 16:31:28 -07:00
Chris Robinson
2a62b38530
Update filter histories even when they're not used
...
If the filter properties are continually updated, and the HF or LF gain goes
from <1, to 1, and later back to <1, the history shouldn't hold stale values
from before it was at 1.
2015-10-24 00:47:58 -07:00
Chris Robinson
714354caee
Set XYZ channel gains for source sends to 0
...
It's cleaner to just set the gains to 0 rather than to special-case B-Format in
the mixer.
2015-10-23 20:16:11 -07:00
Chris Robinson
bca854baac
Use one send gain per buffer channel
2015-10-23 15:11:34 -07:00
Chris Robinson
4813125d31
Return the new vector result from aluMatrixVector
2015-10-22 23:39:56 -07:00
Chris Robinson
6fc8cd3b29
Convert the PortAudio backend to the new backend API
2015-10-22 10:46:36 -07:00
Chris Robinson
6689c61ff4
Remove the MIDI code
...
The extension's not going anywhere, and it can't do anything fluidsynth can't.
The code maintenance and bloat is not worth keeping around, and ideally the AL
API would be able to facilitate MIDI-like behavior anyway (envelopes, start-at-
time, etc).
2015-10-20 18:01:27 -07:00
Chris Robinson
d9a77a7edc
Use NEW_OBJ in a few more places
2015-10-20 11:20:15 -07:00
Chris Robinson
acb37edc4f
Make VerifyDevice and VerifyContext modify its parameter
2015-10-19 18:48:33 -07:00
Chris Robinson
9b6b084d60
Use the correct realignment size for post-stepping mixing
2015-10-18 13:46:52 -07:00
Chris Robinson
fa32093906
Remove unused channel labels
2015-10-18 10:25:56 -07:00
Chris Robinson
c4ba9d21dc
Use the correct array indices for SSE register components
...
SSE uses reverse ordering, such that component 0 is the last in memory.
_mm_load_* and _mm_loadu_*, and the corresponding stores, do not change the
memory ordering.
2015-10-17 09:59:26 -07:00
Chris Robinson
2730d8e76f
Round the calculated stepping value
2015-10-15 15:38:07 -07:00
Chris Robinson
2ff3bf5ab0
Use a constant value for the post-position padding
2015-10-15 15:13:19 -07:00
Chris Robinson
97f53d941c
Store the source's previous samples with the voice
...
This helps avoid different results when looping is toggled within a couple
samples of the loop point, or when a processed buffer is removed while the
source is only a couple samples into the next buffer.
2015-10-15 07:29:25 -07:00
Chris Robinson
3c54ba3901
Fix absolute path detection on Windows
2015-10-14 05:01:34 -07:00
Chris Robinson
67455c66a1
Replace the resample_fir6 declaration with resample_fir8
2015-10-12 06:34:55 -07:00
Chris Robinson
b4bc36c4a0
Reorganize the HRTF group box
...
The three radio buttons are moved to a combo box, which gives a bit more width
for the file list contents.
2015-10-12 05:52:34 -07:00
Chris Robinson
00e419e948
Replace the sinc6 resampler with sinc8, and make SSE versions
2015-10-11 07:37:22 -07:00
Chris Robinson
0211831858
Move the FIR4 from SSE2 to SSE3
...
SSE3 can avoid the slow _MM_TRANSPOSE_PS4 call thanks to the inclusion of
horizontal adds.
2015-10-11 06:38:00 -07:00
Chris Robinson
75d8e5989f
Slightly improve the FIR4 SSE resamplers
2015-10-11 05:31:14 -07:00
Chris Robinson
0149dded34
Use doubles to calculate the Lanczos coefficients
2015-10-09 08:30:33 -07:00
Chris Robinson
4f4cadd756
Allow apps to request a specific HRTF
2015-10-07 03:29:53 -07:00
Chris Robinson
0eef6d9d51
Use the enumerated HRTF list for selecting an HRTF
...
Also report the proper specifier of the one currently in use.
2015-10-06 06:48:53 -07:00
Chris Robinson
1b51ee8b87
Store the Hrtf struct with the corresponding HrtfEntry
...
Also store the filename with the Hrtf struct so it can be reused for multiple
HrtfEntry objects.
2015-10-06 04:01:53 -07:00
Chris Robinson
946b3d5746
Try to use the full path for the CWD instead of .
2015-10-06 01:26:15 -07:00
Chris Robinson
a4c378dd00
Enumerate and list HRTFs per-device
2015-10-06 00:23:11 -07:00
Chris Robinson
f590af510d
Skip empty data directory entries
2015-10-04 17:24:12 -07:00
Chris Robinson
074983b19c
Implement SearchDataFiles for Windows
2015-10-04 16:41:54 -07:00
Chris Robinson
70fbc2b1ff
Add a function to get a list of data files
...
The method takes a marked-up filename (e.g. may include %r for a sample rate,
%% for %, etc), and returns a vector of strings of found filenames that match.
It will search the CWD, the local, and global data directories, in that order.
2015-10-03 20:41:18 -07:00
Chris Robinson
aa10068ca2
Add methods to enumerate and query device HRTFs
...
Currently just returns a dummy entry.
2015-10-03 19:59:21 -07:00
Chris Robinson
0fcd497796
Combine two arrays
2015-10-01 01:05:08 -07:00