Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Don't combine both early reflection taps for the late reverb | Chris Robinson | 2023-11-21 | 1 | -2/+3 |
| | | | | | | | | | | | | | | | | | | | It doesn't make much sense to include both early reflections to feed the late reverb, since it increases the total energy in the reverb decay. This better fits with the design described in papers for this type of reverb, and seems to better match volume levels of hardware EAX/EFX reverb (though there are still some apparent differences). Note that this adds a bit more delay to the late reverb, specifically EARLY_LINE_LENGTHS[0] * density_mult. This can be compensated for somewhat by reducing the late reverb delay by that amount (clamping to a minimum of 0). Alternatively, adjust the delay lines for the second early tap to have a zero- delay pass-through line with 3 delay lines (as opposed to the current 4 delay lines), as suggested by the paper "ADAPTING ARTIFICIAL REVERBERATION ARCHITECTURES FOR B-FORMAT SIGNAL PROCESSING". Although doing so may require additional adjustments to the delay lengths and gains to avoid the 0-length lines accumulating unattenuated copies of the signal for the early reflection output. | ||||
* | Support 32-bit int sample storage | Chris Robinson | 2023-11-15 | 1 | -0/+1 |
| | |||||
* | Use PFFFT for the pitch shifter | Chris Robinson | 2023-10-25 | 1 | -13/+36 |
| | |||||
* | Use a byte for the channel index | Chris Robinson | 2023-10-22 | 1 | -2/+2 |
| | |||||
* | Remove an outdated comment | Chris Robinson | 2023-10-20 | 1 | -3/+0 |
| | |||||
* | Avoid some unique and wrapper types | Chris Robinson | 2023-10-15 | 1 | -58/+33 |
| | |||||
* | Use the same stereo angles in convolution as normal mixing | Chris Robinson | 2023-10-15 | 1 | -19/+15 |
| | |||||
* | Use a span for a known array length instead of a raw pointer | Chris Robinson | 2023-10-15 | 8 | -16/+16 |
| | |||||
* | Ensure some variables are the same | Chris Robinson | 2023-10-15 | 1 | -21/+21 |
| | | | | And clean up some comments | ||||
* | Avoid an extra copy to calculate the convolution FFT | Chris Robinson | 2023-10-14 | 1 | -6/+5 |
| | |||||
* | Read the correct half-frequency bin | Chris Robinson | 2023-10-14 | 1 | -1/+1 |
| | |||||
* | Add convolution effect properties to rotate ambisonic responses | Chris Robinson | 2023-10-12 | 1 | -3/+23 |
| | |||||
* | Attenuate the convolution filter instead of the filter result | Chris Robinson | 2023-10-11 | 1 | -9/+8 |
| | |||||
* | Make and use a separate zconvolve method without scaling | Chris Robinson | 2023-10-11 | 1 | -8/+7 |
| | | | | | | When you're doing hundreds or thousands of separate zconvolve calls into the same buffer, it's more efficient to do the multiply once at the end instead of in each call. | ||||
* | Use PFFFT for the convolution effect | Chris Robinson | 2023-10-06 | 1 | -40/+92 |
| | |||||
* | Replace some more unnecessary angles with vectors | Chris Robinson | 2023-09-18 | 1 | -47/+77 |
| | |||||
* | Store channel positions as vectors instead of angles | Chris Robinson | 2023-09-14 | 5 | -11/+11 |
| | | | | To avoid extraneous conversions between angles and vectors | ||||
* | Approximate sin for the reverb modulator LFO | Chris Robinson | 2023-09-11 | 1 | -2/+7 |
| | | | | | | | Reverb needs to prioritize efficiency since it's expected that an app may use multiple reverb effects simultaneously, and each individual effect may process twice during a pipeline transition. Approximating sin helps by replacing a per- sample libc call that we don't need to be perfectly accurate. | ||||
* | Combine multiple divisions into one | Chris Robinson | 2023-09-10 | 1 | -8/+11 |
| | |||||
* | Include the early and late reverb gain for the decay fade timer | Chris Robinson | 2023-09-05 | 1 | -3/+30 |
| | |||||
* | Use a more accurate ring modulator waveform generator | Chris Robinson | 2023-08-29 | 1 | -37/+76 |
| | | | | | | This restricts available frequencies to fit an integer number of samples per cycle, but ensures no unintended harmonics from misaligned samples w.r.t. sawtooth and square waveforms. | ||||
* | Avoid some large stack buffers | Chris Robinson | 2023-08-28 | 1 | -27/+18 |
| | |||||
* | Fix some typos (#872) | Dirk Stolle | 2023-07-04 | 1 | -2/+2 |
| | |||||
* | Use inline variables instead of functions with static variables | Chris Robinson | 2023-06-14 | 1 | -12/+12 |
| | |||||
* | Avoid using al::vector unnecessarily | Chris Robinson | 2023-05-12 | 2 | -5/+5 |
| | |||||
* | Use deduction guides instead of helper functions for spans | Chris Robinson | 2023-05-05 | 2 | -5/+5 |
| | |||||
* | Use std::byte instead of a custom al::byte | Chris Robinson | 2023-05-04 | 1 | -2/+1 |
| | |||||
* | Simplify effect state buffer handling some | Chris Robinson | 2023-04-04 | 14 | -49/+47 |
| | |||||
* | Use macros for the likely/unlikely attributes | Chris Robinson | 2023-03-01 | 1 | -2/+2 |
| | | | | | The syntax parser for GCC 8 (and earlier?) fails when these attributes are in certain places. | ||||
* | Support MSADPCM samples in the mixer | Chris Robinson | 2023-02-14 | 1 | -0/+1 |
| | |||||
* | Support IMA4 ADPCM as a mixing voice format | Chris Robinson | 2023-02-14 | 1 | -0/+4 |
| | |||||
* | Use better panning positions for the frequency shifter effect | Chris Robinson | 2023-02-08 | 1 | -2/+7 |
| | |||||
* | Use better panning positions for the chorus effect | Chris Robinson | 2023-02-08 | 1 | -56/+61 |
| | | | | Also avoid putting larger buffers on the stack. | ||||
* | Make a table constexpr | Chris Robinson | 2023-02-07 | 1 | -6/+5 |
| | |||||
* | Improve performance calculating reverb panning | Chris Robinson | 2023-02-05 | 1 | -10/+11 |
| | |||||
* | Use a cubic resampler for the reverb modulator offset | Chris Robinson | 2023-02-05 | 1 | -17/+61 |
| | |||||
* | Increase the pitch shifter oversample factor to 8 | Chris Robinson | 2023-01-19 | 1 | -38/+37 |
| | | | | | | And use 32-bit float processing. Float precision doesn't seem to be detrimental to the overall quality, while 8x oversampling seems to help against the harmonics. | ||||
* | Minor code refactor for the frequency shifter effect | Chris Robinson | 2023-01-19 | 1 | -47/+50 |
| | |||||
* | Improve the output scaling of the pitch shifter | Chris Robinson | 2023-01-19 | 1 | -1/+1 |
| | | | | | | For tones than land exactly on a frequency bin, which are subject to the least amount of error when not adjusted, this produces a level that more closely matches the original input. | ||||
* | Don't return a large-ish array on the stack | Chris Robinson | 2023-01-19 | 1 | -15/+17 |
| | |||||
* | Slightly improve phase wrapping in the pitch shifter | Chris Robinson | 2023-01-19 | 1 | -10/+11 |
| | |||||
* | Limit pitch shifter pitch between 0.5 and 2. | Chris Robinson | 2023-01-18 | 1 | -1/+1 |
| | | | | | | The current algorithm isn't designed to go beyond that. The course tuning property is limited to that range as well, though the fine tuning property could potentially extend it out by half a semitone. | ||||
* | Use constexpr variables instead of macros | Chris Robinson | 2023-01-18 | 1 | -51/+57 |
| | |||||
* | Use a variable to handle a long value definition | Chris Robinson | 2023-01-18 | 1 | -2/+3 |
| | |||||
* | Make a variable for a reused value | Chris Robinson | 2023-01-17 | 2 | -3/+3 |
| | |||||
* | Use a better frequency bin target for pitch shifting | Chris Robinson | 2023-01-17 | 2 | -23/+47 |
| | | | | And slightly adjust the Hann window. | ||||
* | Change a couple macros to constexpr variables | Chris Robinson | 2023-01-16 | 6 | -18/+18 |
| | |||||
* | Rename some members for clarity | Chris Robinson | 2023-01-12 | 1 | -22/+22 |
| | |||||
* | Rename some lambda parameters to avoid shadowing warnings | Chris Robinson | 2023-01-05 | 5 | -15/+15 |
| | |||||
* | Add and use mixers that process one input and output channel | Chris Robinson | 2023-01-05 | 4 | -8/+8 |
| |