Chris Robinson
dea880dbf4
Better handle duplicate HRTF names in alsoft-config
2016-02-23 07:29:07 -08:00
Chris Robinson
ae1a2fa9c0
Allow selecting a preferred HRTF in alsoft-config
...
This currently only checks the default paths when they're being used.
2016-02-23 06:52:13 -08:00
Chris Robinson
6512dcb233
Don't bother with a maximum size for the window
2016-02-23 01:46:38 -08:00
Chris Robinson
2c6e59c4ca
Fix when ESTRPIPE and EPIPE are the same
2016-02-22 08:12:09 -08:00
Chris Robinson
840fa1b5e8
Add a warning if closing alsoft-config with unsaved changes
2016-02-22 07:56:05 -08:00
Chris Robinson
9d94f792de
Restructure alsoft-config UI
...
The HRTF stuff is moved to its own tab, and a Preferred HRTF combo box is added
for future use. The resampler option is moved to the main Playback tab, and
some options are moved to an Advanced Settings section on the tab.
2016-02-22 03:05:13 -08:00
Chris Robinson
bd233c8cdb
Avoid enumerating the same HRTF file twice
2016-02-21 04:46:14 -08:00
Chris Robinson
e6f120df23
Add a config option to specify the preferred HRTF
2016-02-21 02:44:02 -08:00
Chris Robinson
c2dd681940
Remove an unused declaration
2016-02-20 21:01:24 -08:00
Chris Robinson
e2bbee653e
Include the HRTF filename in the HRTF memory chunk
2016-02-20 05:32:42 -08:00
Chris Robinson
e1ce7f9180
Use an 8-channel cube for HRTF's virtual format.
...
There were phase issues caused by applying HRTF directly to the B-Format
channels, since the HRIR delays were all averaged which removed the inter-aural
time-delay, which in turn removed significant spatial information.
2016-02-20 00:53:01 -08:00
Chris Robinson
e90cdbcf98
Reorganize makehrtf's File I/O functions
2016-02-19 22:23:37 -08:00
Chris Robinson
e1c653b571
Reorganize and reformat makehrtf code
2016-02-18 22:55:03 -08:00
Chris Robinson
8575ecf3cb
Cleanup makehrtf type definitions
2016-02-18 16:40:57 -08:00
Chris Robinson
670aeec59a
Fix default makehrtf output name
...
And clean up the parameter processing.
2016-02-18 06:11:54 -08:00
Chris Robinson
7ff5cf7820
Allocate each HRTF as a single chunk
2016-02-16 19:56:44 -08:00
Chris Robinson
ee9917fe96
Remove a dead assignment
2016-02-16 02:42:43 -08:00
Chris Robinson
6b1f322220
Only calculate steps for the used coefficients
2016-02-14 13:30:03 -08:00
Chris Robinson
ecdc93f3ca
Calculate HRTF stepping params right before mixing
...
This means we track the current params and the target params, rather than the
target params and the stepping. This closer matches the non-HRTF mixers.
2016-02-14 03:23:06 -08:00
Chris Robinson
25732d0895
Calculate channel gain stepping just before mixing
2016-02-14 01:22:01 -08:00
Chris Robinson
a9135ec39d
Don't pass the channel count to GetBFormatHrtfCoeffs
...
Since it's hard-coded anyway, there's no need to specify it.
2016-02-09 21:42:24 -08:00
Chris Robinson
000ced3795
Avoid underflow in alcnd_timedwait if the time point is already passed
2016-02-07 17:47:52 -08:00
Chris Robinson
f4fa41487c
Replace some CreateEvent calls with CreateEventW
2016-02-07 16:14:27 -08:00
Chris Robinson
6105d36fd7
Add special HRTF handling for reverb
...
This is pretty hacky. Since HRTF normally renders to B-Format with two "extra"
channels for the real stereo output, the panning interpolates between a panned
reverb channel on B-Format, and two non-panned reverb channels on stereo
output, given the panning vector length.
2016-02-06 23:00:07 -08:00
Chris Robinson
fd54f4f03d
Only apply the +3dB reverb gain boost to the ambient response.
2016-02-06 18:05:27 -08:00
Chris Robinson
3ee42d9826
Avoid an extra sample of delay in the reverb modulator
2016-02-05 15:39:31 -08:00
Chris Robinson
c533060875
Remove an unnecessary variable and move duplicate code to a common spot
2016-02-05 14:21:02 -08:00
Chris Robinson
127c7e3b8c
Don't explicitly check for LFE
...
It's going to be set to 0 gain anyway
2016-02-05 11:06:10 -08:00
Chris Robinson
3cac4dff95
Boost the direct-pan reverb to better match the expected volume
...
Hopefully. Would be nice to have a reference implementation for this style of
reverb to compare with.
2016-02-05 09:55:08 -08:00
Chris Robinson
301d4c158b
Update a couple outdated comments
2016-02-05 09:42:43 -08:00
Chris Robinson
538f2839d1
Apply the early and late reverb gains with the panning gains
2016-02-05 08:43:51 -08:00
Chris Robinson
8627a92ea8
Better organize the reverb code into separate labeled sections
2016-02-05 08:14:41 -08:00
Chris Robinson
b8e74c88cf
Separate early and late reverb output for standard reverb too
2016-02-05 07:46:33 -08:00
Chris Robinson
305ef3215d
Modify how the four output reverb points are calculated
...
For HRTF and B-Format output, the points no longer move but instead scale based
on the desired panning direction.
2016-02-05 07:34:31 -08:00
Chris Robinson
d315ca4139
Try to map reverb outputs directly to output channels
...
HRTF and B-Format output still need to use virtual panning directions, but the
reverb works better when it outputs directly to an output channel. Ambient and
directional panning is used to properly mask and attenuate each output channel.
Note that currently the "direct panning" output is quieter than it should be.
Work is underway to attenuate the early reflections and late reverb better.
2016-02-01 22:24:40 -08:00
Chris Robinson
b4a9b40d68
Apply the main reverb gain with the panning
2016-02-01 01:45:16 -08:00
Chris Robinson
46cae36ef9
Fix an out of date comment
2016-01-31 09:39:07 -08:00
Chris Robinson
7f908d90af
Rename ComputeBFormatGains to ComputeFirstOrderGains
2016-01-31 09:00:23 -08:00
Chris Robinson
d69dd6dc7a
Make the source's buffer queue a singly-linked list
2016-01-31 00:42:58 -08:00
Chris Robinson
063ef9c2fc
Properly silence the LFE input channel gain on the source sends
2016-01-30 07:13:07 -08:00
Chris Robinson
729f213c09
Fix scaling for effect sends of B-Format sources
2016-01-30 07:10:36 -08:00
Chris Robinson
7111322526
Make the modulator effect multichannel
2016-01-29 23:44:43 -08:00
Chris Robinson
a046a951e9
Use separate modulator functions only for the waveform
2016-01-29 23:28:38 -08:00
Chris Robinson
3ac786c6af
Convert the equalizer effect to multichannel
2016-01-29 07:26:19 -08:00
Chris Robinson
210b4c1fcd
Make the compressor effect multichannel
2016-01-28 02:49:40 -08:00
Chris Robinson
c1f87414c5
Mix to multichannel for effects
...
This mixes to a 4-channel first-order ambisonics buffer. With ACN ordering and
N3D scaling, this makes it easy to remain compatible with effects that only
care about mono input since channel 0 is an unattenuated mono signal.
2016-01-28 00:02:46 -08:00
Chris Robinson
2fa3ae85c9
Pass a pointer to the input samples array for effect processing
2016-01-27 08:16:47 -08:00
Chris Robinson
fd387beda1
Avoid passing the device to SetChannelMap
2016-01-27 04:44:21 -08:00
Chris Robinson
f547ef6d39
Separate calculating ambisonic coefficients from the panning gains
2016-01-25 06:11:51 -08:00
Chris Robinson
79e0f3e747
Don't write one byte at a time for the wave writer on big endian
2016-01-25 01:49:28 -08:00