Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Remove CalcXYZCoeffs and inline CalcAngleCoeffs | Chris Robinson | 2017-02-23 | 1 | -11/+1 |
| | |||||
* | Alter how panpot/pair-wise panning works | Chris Robinson | 2017-02-23 | 1 | -4/+12 |
| | | | | | | | | | | | | | | | | | | | This change allows pair-wise panning to mostly go through the normal ambisonic panning methods, with one special-case. First, a term is added to the stereo decoder matrix's X coefficient so that a centered sound is reduced by -3dB on each output channel. Panning in front creates a similar gain response to the typical L = sqrt(1-pan) R = sqrt(pan) for pan = [0,1]. Panning behind the listener can reduce (up to) an additional -10dB, creating a audible difference between front and back sounds as if simulating head obstruction. Secondly, as a special-case, the source positions are warped when calculating the ambisonic coefficients so that full left panning is reached at -30 degrees and full right at +30 degrees. This is to retain the expected 60-degree stereo width. This warping does not apply to B-Format buffer input, although it otherwise has the same gain responses. | ||||
* | Rename stereo-panning option to stereo-encoding | Chris Robinson | 2017-02-22 | 1 | -7/+7 |
| | | | | Also rename the 'paired' value to 'panpot', and make it the default. | ||||
* | Avoid duplicating device buffer layout logic | Chris Robinson | 2017-02-20 | 1 | -2/+24 |
| | |||||
* | Allow distance compensation for non-HQ rendering as well | Chris Robinson | 2017-02-20 | 1 | -37/+44 |
| | | | | | It still requires a custom configuration to specify appropriate speaker distances. | ||||
* | Remove the separate surround51rear decoder option | Chris Robinson | 2017-02-19 | 1 | -2/+2 |
| | | | | | | Both 5.1 Side and Rear configurations use 'surround51' to look up the appropriate decoder file. The decoder loader already handles mapping between rear and side channels, so there's no need for separate options. | ||||
* | Apply distance compensation when writing to the output | Chris Robinson | 2017-02-19 | 1 | -5/+43 |
| | |||||
* | Don't use periphonic FOA when the HOA decoder is not periphonic | Chris Robinson | 2017-02-19 | 1 | -3/+13 |
| | |||||
* | Replace more ALuint with ALsizei | Chris Robinson | 2017-01-29 | 1 | -4/+4 |
| | |||||
* | Improve the ambisonic upscaling methods | Chris Robinson | 2017-01-24 | 1 | -29/+40 |
| | | | | | | | | This now takes advantage of the differences seen in generated decoder matrices for first-order compared to second- and third-order, such that with the appropriate frequency-dependent scaling applied to first-order content, the result is identical with a higher-order decoder matrix compared to a first- order matrix for the same layout. | ||||
* | Fix coefficient counts for the built-in B-Format decoders | Chris Robinson | 2017-01-21 | 1 | -2/+2 |
| | |||||
* | Use a flat sqrt(2) scale for non-directional ambient gains | Chris Robinson | 2017-01-21 | 1 | -8/+3 |
| | |||||
* | Update the default basic B-Format decoders | Chris Robinson | 2017-01-21 | 1 | -47/+36 |
| | | | | This also converts them to ACN/N3D format. | ||||
* | Move the B-Format HRTF virtual speaker stuff to InitHrtfPanning | Chris Robinson | 2017-01-18 | 1 | -7/+55 |
| | | | | | This keeps the decoder matrices and coefficient mapping together for if it changes in the future. | ||||
* | Use ALsizei in more places | Chris Robinson | 2017-01-18 | 1 | -14/+14 |
| | |||||
* | More ALsizei, with the B-Format decoder | Chris Robinson | 2017-01-16 | 1 | -2/+2 |
| | |||||
* | Use ALsizei for sizes and offsets with the mixer | Chris Robinson | 2017-01-16 | 1 | -24/+24 |
| | | | | | | Unsigned 32-bit offsets actually have some potential overhead on 64-bit targets for pointer/array accesses due to rules on integer wrapping. No idea how much impact it has in practice, but it's nice to be correct about it. | ||||
* | Use second-order ambisonics for basic HRTF rendering | Chris Robinson | 2017-01-15 | 1 | -9/+48 |
| | | | | | | This should improve positional quality for relatively low cost. Full HRTF rendering still only uses first-order since the only use of the dry buffer there is for first-order content (B-Format buffers, effects). | ||||
* | Be clearer about whether full or basic HRTF rendering is used | Chris Robinson | 2016-11-02 | 1 | -1/+4 |
| | |||||
* | Remove use of DECL_CONST | Chris Robinson | 2016-09-06 | 1 | -1/+1 |
| | | | | | No idea if it was really gaining us anything, but removing it fixes a crash I was getting with libs built with Clang. | ||||
* | Combine related members into a struct | Chris Robinson | 2016-08-24 | 1 | -25/+26 |
| | |||||
* | Use a more specialized mixer function for B-Format to HRTF | Chris Robinson | 2016-08-12 | 1 | -14/+4 |
| | |||||
* | Decode directly from B-Format to HRTF instead of a cube | Chris Robinson | 2016-08-11 | 1 | -39/+22 |
| | | | | | | | | | | | | | | | | | | | | | Last time this attempted to average the HRIRs according to their contribution to a given B-Format channel as if they were loudspeakers, as well as averaging the HRIR delays. The latter part resulted in the loss of the ITD (inter-aural time delay), a key component of HRTF. This time, the HRIRs are averaged similar to above, except instead of averaging the delays, they're applied to the resulting coefficients (for example, a delay of 8 would apply the HRIR starting at the 8th sample of the target HRIR). This does roughly double the IR length, as the largest delay is about 35 samples while the filter is normally 32 samples. However, this is still smaller the original data set IR (which was 256 samples), it also only needs to be applied to 4 channels for first-order ambisonics, rather than the 8-channel cube. So it's doing twice as much work per sample, but only working on half the number of samples. Additionally, since the resulting HRIRs no longer rely on an extra delay line, a more efficient HRTF mixing function can be made that doesn't use one. Such a function can also avoid the per-sample stepping parameters the original uses. | ||||
* | Use the ACN and N3D map and scale lookup tables in SetChannelMap | Chris Robinson | 2016-08-02 | 1 | -16/+9 |
| | |||||
* | Remove DevFmtBFormat3D, which is covered by DevFmtAmbi1 | Chris Robinson | 2016-07-31 | 1 | -18/+1 |
| | |||||
* | Add an option to specify the ambisonic output configuration | Chris Robinson | 2016-07-31 | 1 | -26/+31 |
| | |||||
* | Add a stand-alone upsampler for higher-order ambisonic oputput | Chris Robinson | 2016-07-30 | 1 | -0/+19 |
| | |||||
* | Add a config to output first-, second-, or third-order ambisonics | Chris Robinson | 2016-07-29 | 1 | -1/+41 |
| | | | | | | | | | Currently incomplete, as second- and third-order output will not correctly handle B-Format input buffers. A standalone up-sampler will be needed, similar to the high-quality decoder. Also, output is ACN ordering with SN3D normalization. A config option will eventually be provided to change this if desired. | ||||
* | Update the default quad decoder matrix | Chris Robinson | 2016-07-18 | 1 | -4/+4 |
| | |||||
* | Constify and use the correct size for an array | Chris Robinson | 2016-07-17 | 1 | -1/+1 |
| | |||||
* | Update comment about the source radius calculations | Chris Robinson | 2016-07-10 | 1 | -9/+18 |
| | |||||
* | Avoid function calls to get the HRTF sample rate and IR size | Chris Robinson | 2016-07-07 | 1 | -2/+2 |
| | |||||
* | Avoid using memcpy to copy a single struct | Chris Robinson | 2016-07-06 | 1 | -4/+4 |
| | |||||
* | Use a macro to specify the ambisonic periphonic channel mask | Chris Robinson | 2016-06-01 | 1 | -2/+2 |
| | |||||
* | Recognize AUX0...AUX15 for decoder speaker labels | Chris Robinson | 2016-05-12 | 1 | -3/+11 |
| | |||||
* | Improve radius behavior with scaling of ambisonic coefficients | Chris Robinson | 2016-04-24 | 1 | -5/+52 |
| | |||||
* | Increase max output channels to 16 | Chris Robinson | 2016-04-19 | 1 | -11/+14 |
| | | | | This also enables fully periphonic 3rd order HQ decoding. | ||||
* | Combine two if checks into one | Chris Robinson | 2016-04-19 | 1 | -5/+3 |
| | |||||
* | Remove unneeded ChannelMaps for BFormat formats | Chris Robinson | 2016-04-17 | 1 | -14/+2 |
| | |||||
* | Avoid storing channel names for the dry buffer | Chris Robinson | 2016-04-16 | 1 | -22/+10 |
| | |||||
* | Reorganize a bit of aluInitRenderer code | Chris Robinson | 2016-04-16 | 1 | -46/+30 |
| | |||||
* | Silence possible out-of-bounds warning again | Chris Robinson | 2016-04-16 | 1 | -1/+1 |
| | |||||
* | More directly map coefficients for ambisonic mixing buffers | Chris Robinson | 2016-04-15 | 1 | -71/+95 |
| | | | | | | Instead of looping over all the coefficients for each channel with multiplies, when we know only one will have a non-0 factor for ambisonic mixing buffers, just index the one with a non-0 factor. | ||||
* | Update some comments | Chris Robinson | 2016-04-15 | 1 | -3/+3 |
| | |||||
* | Avoid mixing all coefficients together when only some are used | Chris Robinson | 2016-04-15 | 1 | -34/+38 |
| | |||||
* | Fix possible out-of-bounds warning | Chris Robinson | 2016-04-15 | 1 | -2/+2 |
| | |||||
* | Avoid unnecessary loops for setting up effect slot b-format buffer mixing | Chris Robinson | 2016-04-14 | 1 | -12/+28 |
| | |||||
* | Prepare the custom decoder in aluInitRenderer | Chris Robinson | 2016-04-14 | 1 | -200/+193 |
| | |||||
* | Move the InitRenderer method to panning.c | Chris Robinson | 2016-04-14 | 1 | -3/+168 |
| | |||||
* | Split aluInitPanning into separate functions for HRTF or UHJ | Chris Robinson | 2016-04-14 | 1 | -245/+234 |
| |