Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | 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 |
| | |||||
* | Allow dual-band decoders for basic rendering | Chris Robinson | 2016-03-30 | 1 | -8/+2 |
| | | | | | Since the basic renderer does not do frequency-dependent processing, the high- frequency matrix is used for panning. | ||||
* | Use the same option for decoder configs | Chris Robinson | 2016-03-26 | 1 | -1/+5 |
| | |||||
* | Don't use custom decoder configurations with mono or stereo | Chris Robinson | 2016-03-26 | 1 | -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 compensation | Chris Robinson | 2016-03-26 | 1 | -2/+8 |
| | |||||
* | Allow up to third-order for horizontal-only rendering | Chris Robinson | 2016-03-26 | 1 | -16/+26 |
| | |||||
* | Include any first-order scaling in the FOAOut coefficients | Chris Robinson | 2016-03-25 | 1 | -15/+32 |
| | |||||
* | Skip height-related ambisonic channels for 2D rendering | Chris Robinson | 2016-03-25 | 1 | -2/+16 |
| | |||||
* | Use the "decoder" config section instead of "ambisonics" | Chris Robinson | 2016-03-25 | 1 | -1/+1 |
| | |||||
* | Trace the HQ decoder order | Chris Robinson | 2016-03-23 | 1 | -1/+4 |
| | |||||
* | Simplify setting a custom channel map configuration | Chris Robinson | 2016-03-23 | 1 | -17/+7 |
| | |||||
* | Up-sample first-order content when using a higher order HQ decoder | Chris Robinson | 2016-03-23 | 1 | -2/+0 |
| | |||||
* | Allow second-order HQ decoding | Chris Robinson | 2016-03-23 | 1 | -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 sources | Chris Robinson | 2016-03-22 | 1 | -0/+10 |
| | |||||
* | Rename the BFormat channels to Aux | Chris Robinson | 2016-03-16 | 1 | -20/+20 |
| | |||||
* | Add config options to enable the hq ambisonic decoder | Chris Robinson | 2016-03-16 | 1 | -36/+46 |
| | |||||
* | Properly handle negative matrix values and fix decoder initialization | Chris Robinson | 2016-03-15 | 1 | -1/+1 |
| | |||||
* | Replace the custom layout options with an ambdec loader | Chris Robinson | 2016-03-15 | 1 | -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 decoder | Chris Robinson | 2016-03-15 | 1 | -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.1 | Chris Robinson | 2016-03-13 | 1 | -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). |