aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/panning.c
Commit message (Collapse)AuthorAgeFilesLines
...
* Use the same option for decoder configsChris Robinson2016-03-261-1/+5
|
* Don't use custom decoder configurations with mono or stereoChris Robinson2016-03-261-0/+13
| | | | | | | | | | By default, stereo outputs using UHJ, which renders to a B-Format buffer that gets run through a UHJ encoder for output. It may also output using pair-wise panning, which pans between -30 and +30 degrees with the speakers at the two ends. In both cases, the stereo coefficients are ignored. Mono, having only one output channel, can realistically only attenuate its channel. Turning the volume up and down accomplishes the same result.
* Add a config option for distance compensationChris Robinson2016-03-261-2/+8
|
* Allow up to third-order for horizontal-only renderingChris Robinson2016-03-261-16/+26
|
* Include any first-order scaling in the FOAOut coefficientsChris Robinson2016-03-251-15/+32
|
* Skip height-related ambisonic channels for 2D renderingChris Robinson2016-03-251-2/+16
|
* Use the "decoder" config section instead of "ambisonics"Chris Robinson2016-03-251-1/+1
|
* Trace the HQ decoder orderChris Robinson2016-03-231-1/+4
|
* Simplify setting a custom channel map configurationChris Robinson2016-03-231-17/+7
|
* Up-sample first-order content when using a higher order HQ decoderChris Robinson2016-03-231-2/+0
|
* Allow second-order HQ decodingChris Robinson2016-03-231-9/+21
| | | | | | | | Could really do with some optimizations to the mixing gain calculations. For ambisonic targets, the coefficients will only have 1 non-0 entry for each output, so the double loop in unnecessarily wasteful. Similarly, most uses won't need a full height encoding either, so a horizontal-only or mixed-order target could reduce the number of channels.
* Add a specific output for first-order sourcesChris Robinson2016-03-221-0/+10
|
* Rename the BFormat channels to AuxChris Robinson2016-03-161-20/+20
|
* Add config options to enable the hq ambisonic decoderChris Robinson2016-03-161-36/+46
|
* Properly handle negative matrix values and fix decoder initializationChris Robinson2016-03-151-1/+1
|
* Replace the custom layout options with an ambdec loaderChris Robinson2016-03-151-129/+87
| | | | | The ambisonic layout options were never very good for clarity or flexibility. Hopefully using ambdec files will prove to be better.
* Add a dual-band ambisonic decoderChris Robinson2016-03-151-1/+130
| | | | | | | | | | This uses a virtual B-Format buffer for mixing, and then uses a dual-band decoder for improved positional quality. This currently only works with first- order output since first-order input (from the AL_EXT_BFROMAT extension) would not sound correct when fed through a second- or third-order decoder. This also does not currently implement near-field compensation since near-field rendering effects are not implemented.
* Use second-order coefficients for 5.1Chris Robinson2016-03-131-16/+16
| | | | | Since the panning only drives 5 speakers, it shouldn't use more than 5 ambisonic channels (9 total in second order, minus 4 for unused height).
* Generalize GetChannelIdxByNameChris Robinson2016-03-101-1/+1
|
* Keep track of the real output's channel namesChris Robinson2016-03-101-0/+3
|
* Organize the dry buffer properties into a structChris Robinson2016-03-091-20/+20
|
* Use 2-channel UHJ for stereo outputChris Robinson2016-02-261-1/+21
|
* Use an 8-channel cube for HRTF's virtual format.Chris Robinson2016-02-201-12/+39
| | | | | | 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.
* Don't pass the channel count to GetBFormatHrtfCoeffsChris Robinson2016-02-091-1/+1
| | | | Since it's hard-coded anyway, there's no need to specify it.
* Rename ComputeBFormatGains to ComputeFirstOrderGainsChris Robinson2016-01-311-1/+1
|
* Mix to multichannel for effectsChris Robinson2016-01-281-2/+20
| | | | | | 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.
* Avoid passing the device to SetChannelMapChris Robinson2016-01-271-24/+31
|
* Separate calculating ambisonic coefficients from the panning gainsChris Robinson2016-01-251-33/+40
|
* Use more accurate floating point literalsChris Robinson2015-11-061-34/+34
|
* Use ALuint instead of size_t for a loop iteratorChris Robinson2015-11-061-2/+3
|
* Remove unused channel labelsChris Robinson2015-10-181-9/+0
|
* Loop over the gain values only onceChris Robinson2015-09-241-8/+9
|
* Fix B-Format HRTF decodingChris Robinson2015-09-231-1/+1
|
* Use N3D scaling instead of FuMaChris Robinson2015-09-231-88/+96
|
* Allow for device-specific config valuesChris Robinson2015-08-281-2/+2
|
* Use ACN ordering for ambisonics coefficients arraysChris Robinson2015-08-281-82/+154
| | | | | | Note that it still uses FuMa scalings internally. Coefficients loaded from config files specify if they're FuMa (in both ordering and scaling) or N3D, and will get reordered or rescaled as needed.
* Minor reformatingChris Robinson2015-08-221-31/+32
|
* Don't explicitly store first-order coefficientsChris Robinson2015-08-181-60/+114
| | | | | | | It seems a simple scaling on the coefficients will allow first-order content to work with second- and third-order coefficients, although obviously not with any improved locality. That may be something to look into for the future, but this is good enough for now.
* Cheange some more unnecessarily small coefficients to 0Chris Robinson2015-02-111-6/+6
|
* Calculate HRTF coefficients for all B-Format channels at onceChris Robinson2015-02-101-4/+10
| | | | | | It's possible to calculate HRTF coefficients for full third-order ambisonics now, but it's still not possible to use them here without upmixing first-order content.
* Pass the (FuMa) channel number to GetBFormatHrtfCoeffsChris Robinson2015-02-101-3/+2
|
* Use B-Format for HRTF's virtual output formatChris Robinson2015-02-091-28/+9
| | | | | | | | This adds the ability to directly decode B-Format with HRTF, though only first- order (WXYZ) for now. Second- and third-order would be easilly doable, however we'd need to be able to up-mix first-order content (from the BFORMAT2D and BFORMAT3D buffer formats) since it would be inappropriate to decode lower-order content with a higher-order decoder.
* Improve ambient gain calculationsChris Robinson2014-11-251-1/+1
|
* Support B-Format output with the wave file writerChris Robinson2014-11-251-1/+18
|
* Halve the gain of the Cube8 coefficientsChris Robinson2014-11-251-8/+8
|
* Remove unused channel enumsChris Robinson2014-11-231-2/+0
|
* Remove the cube+diamond virtual layoutChris Robinson2014-11-231-51/+7
|
* Add an option for a simpler virtual channel setupChris Robinson2014-11-231-21/+53
| | | | | | With HRTF mixing, certain things are mixed to virtual channels to be filtered with HRTF later. This allows for using an 8-channel cube instead of a 14- channel cube+diamond.
* Partially revert "Use a different method for HRTF mixing"Chris Robinson2014-11-231-2/+4
| | | | | | | | | | | | The sound localization with virtual channel mixing was just too poor, so while it's more costly to do per-source HRTF mixing, it's unavoidable if you want good localization. This is only partially reverted because having the virtual channel is still beneficial, particularly with B-Format rendering and effect mixing which otherwise skip HRTF processing. As before, the number of virtual channels can potentially be customized, specifying more or less channels depending on the system's needs.
* Use a different method for HRTF mixingChris Robinson2014-11-221-0/+64
| | | | | | | | | | | | | | | | | | | | | | | This new method mixes sources normally into a 14-channel buffer with the channels placed all around the listener. HRTF is then applied to the channels given their positions and written to a 2-channel buffer, which gets written out to the device. This method has the benefit that HRTF processing becomes more scalable. The costly HRTF filters are applied to the 14-channel buffer after the mix is done, turning it into a post-process with a fixed overhead. Mixing sources is done with normal non-HRTF methods, so increasing the number of playing sources only incurs normal mixing costs. Another benefit is that it improves B-Format playback since the soundfield gets mixed into speakers covering all three dimensions, which then get filtered based on their locations. The main downside to this is that the spatial resolution of the HRTF dataset does not play a big role anymore. However, the hope is that with ambisonics- based panning, the perceptual position of panned sounds will still be good. It is also an option to increase the number of virtual channels for systems that can handle it, or maybe even decrease it for weaker systems.