| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
|
|
|
|
| |
I don't know how different sound APIs handle 7.1.4 ("Atmos" or "Auro3D")
output, but currently it simply specifies the additional channels with the
height channel labels. This isn't likely how it works for a virtualized channel
bed, for playing over other with-height configurations (7.1.2, 5.1.4, etc), but
this should be an okay start.
|
|
|
|
|
|
|
|
| |
This starts a source at a particular device clock time, rounded to the nearest
sample (really, 4th sample for SIMD reasons), allowing to start a sound at a
particular point in the output instead of the next update.
Unlike using negative offsets, this is not affected by pitch/velocity.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This uses the reversed-allpass trick to maintain linear phase. with a 256-
sample look-ahead/delay to minimize distortion. This should better preserve low
frequencies while maintaining a proper phase response.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Make them first- and second-order respectively. They don't have enough speakers
to really be suitable for higher orders than that.
|
|
|
|
|
|
|
|
|
| |
Tne coefficients are placed as for full 3D ACN handling. The ChanMask just
indicates which have potentially useful values. This could be a bit more
agressive and clear ChanMask bits for channels that don't contribute to output,
so that a decoder the specifies height-related channel bits, but leaves their
coefficients all 0, can be handled as 2D. I don't expect many ambdec files to
be like that, though.
|
| |
|
|
|
|
| |
And use it to select the proper HF scales
|
|
|
|
|
| |
Not actually used yet, the device needs to track whether it's using 2D or 3D
mixing.
|
| |
|
|
|
|
| |
This reverts commit bf3f63fb4c5faa45784d7433d68b7013e29ee2c1.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
These were actually missing from the current check for fading. But the EFX
documentation suggests these (along with the early/late gain and panning) can
be adjusted often without invoking a full change, as dynamically modeling an
environment would continually change these properties as the listener moves
around (changing the direction and distance to the reflective surfaces). So
ensuring they're kept up-to-date would be the way to go.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Separate the core delay line into early and late input delay lines. This will
be necessary to allow a second late reverb processing loop to decay after a
change.
Also ensure the early reflection delay line is long enough to write in
MAX_UPDATE_SAMPLES first without interfering with the subsequent read. And
ensure the modulation delay doesn't cause an underflow on the feedback offset.
Finally, move the loop inside the processing functions to minimize loop
iterations.
|
| |
|
| |
|
|
|
|
| |
This will be necessary for 2D fourth-order sources with 3D fourth-order output.
|
|
|
|
|
| |
It can't be constexpr because it needs write access to an std::array, and
because of std::sqrt.
|
| |
|
|
|
|
|
|
| |
When upsampling certain ambisonic formats, the W channel may contribute to
other output channels even with full coverage. Make sure they're taken into
account.
|
| |
|
|
|
|
|
|
|
|
| |
Although this will necessitate applying a full device-order rotation for all
ambisonic sources, it should be slightly better since it's effectively rotated
after being mixed to higher order. This will also allow using more optimized
upsamplers for 2D ambisonic sources vs 3D (while still allowing the sources to
be rotated in 3D).
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
It doesn't seem as though AudioUnitRender likes being given two buffers to
render/capture samples into segmented memory.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
This should allow for clearer and less diffuse responses. While a cube is in
the blindspots for second-order, resulting in an identify transform for first-
to-second-order, they do start contributing to third-order channels, which
should make for sharper virtual points. The fixed HF scales should also play
nicer with larger order upmixes.
|
| |
|
| |
|
| |
|