aboutsummaryrefslogtreecommitdiffstats
path: root/core/voice.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Revert "Don't apply the HF scaling for "upsampling" ambisonics"Chris Robinson2022-09-021-12/+44
| | | | This reverts commit bf3f63fb4c5faa45784d7433d68b7013e29ee2c1.
* Don't apply the HF scaling for "upsampling" ambisonicsChris Robinson2022-08-311-44/+12
| | | | | | | | | | | | Not sure if this is best, but it fixes the issue of upsampling lower orders to higher orders multiple times (mixing lower order to higher order, cutting back to lower order by dropping the extra channels, then upsampling again, applying the HF scale multiple times and messing up the high frequencies/energy vector), as well as having too-strong high frequencies of upsampled content in general. As it is, with the new upsampling method, the lower order signal contributes to some higher order channels, which helps offset the high frequency scaling difference (except first- to second-order, which adds nothing).
* Create and use 2D upsampling matricesChris Robinson2022-08-251-4/+6
|
* Inline a function and remove an unnecessary parameterChris Robinson2022-08-161-1/+1
|
* Add an option for higher quality UHJ filtersChris Robinson2022-08-081-4/+20
|
* Parameterize the UHJ filter lengthChris Robinson2022-08-071-10/+10
|
* Use a proper literal typeChris Robinson2022-06-071-1/+1
|
* Use a member variable to specify the decoder paddingChris Robinson2022-05-171-2/+10
|
* Avoid magic numbersChris Robinson2022-05-161-6/+6
|
* Use virtual functions for the decoderChris Robinson2022-05-141-10/+5
|
* Rename lerp to avoid conflicts with C++20's std::lerpChris Robinson2022-04-061-2/+2
|
* Remove the reversed all-pass trick in MixDirectHrtfBaseChris Robinson2022-03-301-4/+1
| | | | Given the minimum phase HRTF, it's not going to stay linear phase anyway.
* Slightly improve handling of stopping voicesChris Robinson2022-01-081-19/+27
|
* Don't mix higher orders of B-Format than the device is doingChris Robinson2022-01-021-2/+2
|
* Use an span of pointers instead of arrays for mixingChris Robinson2022-01-011-93/+94
|
* Pass a span of pointers to the UHJ/SuperStereo decoderChris Robinson2022-01-011-1/+6
|
* Use a bitset instead of a plain uint for flagsChris Robinson2021-12-231-16/+16
|
* Don't swallow up buffer callback samples when pausingChris Robinson2021-12-181-11/+17
|
* Don't update voice sample histories when stopping/pausingChris Robinson2021-12-181-24/+25
| | | | | Since a voice pausing is on a fade-out, and will replay the same samples again when restarting and fading in.
* Rename Voice::mNumChannels for clarityChris Robinson2021-12-151-4/+4
|
* Add source properties for Super StereoChris Robinson2021-12-151-0/+21
| | | | | When playing a stereo format, enabling Super Stereo causes the source to behave as a B-Format source, with a variable width control.
* Make an inline function to check for 2D ambisonic formatsChris Robinson2021-12-121-3/+1
|
* Avoid initializing the NFC filter for every voice channelChris Robinson2021-12-111-8/+3
| | | | | | It can be initialized once with the device's speaker distance since it won't change in between resets, then copied into the voice where it can be adjusted as needed.
* Add an internal Super Stereo formatChris Robinson2021-12-111-10/+18
| | | | | | | It's not available as an AL buffer format (yet) since I'm not sure how to expose it. Internally it seems fine as a separate channel configuration, but because OpenAL combines the channel configuration and sample type, a flag may work better there.
* Improve the 2-channel UHJ responseChris Robinson2021-12-091-3/+41
| | | | | | This attempts to correct for the differences needed for 2-channel UHJ's shelf filters given the output shelf filters. It's far from ideal, but better than nothing.
* Avoid manually prefixing EventType_ enumsChris Robinson2021-10-101-4/+4
| | | | And use a better fitting type that matches how it's used
* Make a construct_at method amd use itChris Robinson2021-10-081-2/+4
|
* Use the 2D channel orders for 2- and 3-channel UHJChris Robinson2021-07-131-1/+2
|
* Don't allocate full buffer lines in each voiceChris Robinson2021-06-211-22/+36
| | | | | | There's now effectively a 16-channel limit for buffers (as determined by the number of elements in DeviceBase::mSampleData). Any more than that are ignored when mixing.
* Avoid mixing extraneous channelsChris Robinson2021-06-211-18/+18
|
* Avoid altering SrcBufferSize in each channelChris Robinson2021-06-141-1/+1
|
* Combine some checksChris Robinson2021-06-141-22/+23
|
* Move BufferStorage and Voice to coreChris Robinson2021-04-271-0/+849