| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Effects are given a 3D ambisonic buffer of the same order as the device, for
processing surround sound. Effects that pass input channels to matching output
channels as it processes them don't need to mix each input channel to all
output channels.
At most, an input channel may mix to a different output channel, if the target
buffer uses a different channel layout, and need a gain adjustment, if it uses
a different scaling. With a 2D output buffer, a number of channels can be
skipped altogether.
|
|
|
|
|
|
| |
It's now decoded to B-Format while being FFT'd, and processed as B-Format.
Again, not that UHJ should really ever be used for convolution, but it's a
valid format someone may want to use despite the overhead from converting it.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
And clean up some parameters
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
When non-simple properties are changed, the active reverb pipeline is switched
and the new parameters set on that one. The main process function will then be
set to fade out input on the old pipeline, fade in input on the new pipeline,
then process and mix both pipelines. After some number of samples (calculated
from its decay time), the old pipeline will stop processing.
This should improve the transition from a highly reverberant environment by not
harshly interpolating to the new environment, as well as better handle changes
to the all-pass and T60 filters.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
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 is a slightly reoriented tetrahedron, with responses on the front-left and
front-right, along with upper-back and lower-back. This is a alternative matrix
suggested for converting the A-Format late reverb lines back to B-Format.
Also alter the matrix scaling to be less destructive. x0.5 is just reducing the
floating-point exponent by 1, whereas the previous values would be more likely
to introduce rounding errors just from scaling.
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
Don't add alc/ to the include paths.
|
|
|
|
| |
Permission to relicense was granted via email.
|
| |
|