4403 Commits

Author SHA1 Message Date
Chris Robinson
f951f4a66b Implement getDefaultProps for effect state factories 2019-03-22 12:58:24 -07:00
Chris Robinson
935f386982 Use a separate EffectStateFactory for standard reverb 2019-03-22 11:57:32 -07:00
Chris Robinson
8a1b1f4204 Make sure the file is rewound before writing the wave header 2019-03-19 22:10:49 -07:00
Chris Robinson
7880540407 Use a sorted vector for looking up contexts
Note that the device still holds and uses a linked list of its contexts. The
sorted vector is used to verify handles given by callers.
2019-03-19 18:53:32 -07:00
Chris Robinson
90465e9124 Use a sorted vector for devices instead of a linked list 2019-03-19 15:56:30 -07:00
Chris Robinson
813976e58d Add some enum casts for the WASAPI backend 2019-03-19 01:33:36 -07:00
Chris Robinson
9695952c8d Rename DevProbe enum names 2019-03-19 00:24:54 -07:00
Chris Robinson
3e816de4fb Use SSE intrinsics in a few more places 2019-03-18 20:58:48 -07:00
Chris Robinson
73a43fb19c Don't bother trying _controlfp or __control87_2 2019-03-18 20:27:25 -07:00
Chris Robinson
2de1d17bc6 Use SSE intrinsics to set FTZ and DAZ 2019-03-18 20:14:40 -07:00
Chris Robinson
d802a5785e Fix indexing for basic B-Format decoding 2019-03-17 14:03:21 -07:00
Chris Robinson
f96c37120b Always reset all voices on disconnect 2019-03-16 17:01:04 -07:00
Chris Robinson
339a37b034 Include std::placeholders once in an anonymouse namespace 2019-03-16 15:15:59 -07:00
Chris Robinson
12999f9efe Simplify calculating azimuth and elevation indices for HRTF 2019-03-14 22:26:19 -07:00
Chris Robinson
9f5a7a7a50 Fix wrapping for the upper HRIR index 2019-03-14 13:17:07 -07:00
Chris Robinson
3a39a2c790 Set the correct target gain after a fade-out HRTF mix 2019-03-12 16:45:34 -07:00
Chris Robinson
24ae12f58e Check a value where its used 2019-03-12 09:56:02 -07:00
Chris Robinson
098c7ca6ea Fix not looping when the source offset is beyond the loop end 2019-03-11 22:09:30 -07:00
Chris Robinson
24b43fe852 Remove a couple redundant local variables 2019-03-11 22:00:28 -07:00
Chris Robinson
30a7c6d86f Pass the voice state as a parameter instead of reloading it 2019-03-11 20:00:14 -07:00
Chris Robinson
2c67ab0d2c Rename ALvoice fields for consistency 2019-03-10 16:29:06 -07:00
Chris Robinson
030b24a40d Improve handling of voice's AmbiScales for upsampling 2019-03-10 15:46:46 -07:00
Chris Robinson
663a6ce4e7 Use the correct value for MAX_AMBI2D_CHANNELS 2019-03-10 15:39:31 -07:00
Chris Robinson
d99d2a400a Don't copy old coeffs in MixHrtfBlendBase 2019-03-10 14:31:46 -07:00
Chris Robinson
80e55b87ed Avoid an extra level of indentation 2019-03-10 12:50:38 -07:00
Chris Robinson
0d295cf811 Don't directly use a buffer for updating source parameters 2019-03-10 11:52:39 -07:00
Chris Robinson
e5651c15dd Avoid excessive transformations of the source position 2019-03-10 11:33:08 -07:00
Chris Robinson
12721f94a7 Add a method to apply an HF scale without band-splitting 2019-03-10 10:30:33 -07:00
Chris Robinson
6a95189ef6 Fix for MSVC decaying arrays to pointers with ?: 2019-03-09 21:54:15 -08:00
Chris Robinson
106671d451 Fade out voices that end normally
Sometimes a sound may end with non-0 amplitude, particularly if a buffer queue
underruns. This helps avoid clicks and pops for sources that don't already end
in silence.
2019-03-09 21:32:14 -08:00
Chris Robinson
87479b4b32 Play dummy samples and force a fade out on stopping voices 2019-03-09 18:34:00 -08:00
Chris Robinson
ef0f335132 Add a Stopping state for voices
This currently doesn't do much, except have the mixer progress it to Stopped.
It's valid to have without a source or buffers, and in the future will allow
fading out when a source is paused or stopped.
2019-03-09 16:48:07 -08:00
Chris Robinson
d39cfcc7bb Clear the voice's buffer when detaching from source 2019-03-09 13:20:10 -08:00
Chris Robinson
90d1e1212b Pass a reference to function for a template parameter 2019-03-03 00:24:33 -08:00
Chris Robinson
2d14de3fb0 Use more specific names for temp buffer storage 2019-03-02 23:41:26 -08:00
Chris Robinson
e4b76d2627 Reverse the HRTF field array
Most often a sound's distance will be beyond the farthest field measurement, so
It's more efficient to have the farthest field first and avoid looping through
the whole field array for them.
2019-02-27 23:13:40 -08:00
Chris Robinson
86926f0998 Combine the reverb output mixes into a single call 2019-02-25 05:52:37 -08:00
Chris Robinson
81aa5af3b9 Make sure the reverb fading completes
The processing loop doesn't depend on being aligned anymore, so it won't get
stuck when only less than 4 samples can be done in a non-final update.
2019-02-25 01:08:11 -08:00
Chris Robinson
4d6b66163c Convert the device frequency to float just once 2019-02-24 19:07:21 -08:00
Chris Robinson
d6fb4d5f52 Make sure the voice's direct buffer is always set 2019-02-24 19:02:49 -08:00
Chris Robinson
d2664e2192 Remove a duplicate index array 2019-02-24 18:00:49 -08:00
Chris Robinson
cadff0f6c1 Reduce BUFFERSIZE to match the default period size
Also adds a bit more space to the temp source data buffer, to avoid needing to
loop on matching sample rates.
2019-02-24 16:13:51 -08:00
Chris Robinson
a2ba550ebf Rework reverb A/B-Format conversion mixing
This should help improve performance using the optimized mixers, and fewer
passes on the transforms, though at the cost of more memory.
2019-02-24 15:43:56 -08:00
Chris Robinson
4ec0aed286 Change some functions to proper methods 2019-02-23 03:18:12 -08:00
Chris Robinson
42934b09e5 Avoid multiple int-to-float conversions 2019-02-23 01:43:55 -08:00
Chris Robinson
3683e31662 Constify some parameters and remove an explicit loop 2019-02-23 00:01:38 -08:00
Chris Robinson
317206e8f3 Remove the FOAOut mixing buffer and associated post-processes 2019-02-22 22:35:37 -08:00
Chris Robinson
45378fe687 Remove the unused FOAOut EffectTarget 2019-02-22 22:03:04 -08:00
Chris Robinson
5b35e60a98 Apply ambisonic upsampling on reverb output as needed
This isn't the greatest thing since it splits the A-to-B-Format transform from
the panning transform. The A-to-B and HF scale mixes are also not as optimal as
they could be, since they can't use the main mixer functions (wrong buffer line
length).

It does, however, get rid of the final use of the FOAOut buffer, so the
upsampling post-process is no longer needed.
2019-02-22 21:53:45 -08:00
Chris Robinson
6a3c10d850 Ensure reverb fading doesn't end with less than 4 samples 2019-02-22 02:15:22 -08:00