Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Use a span to hold the cubic table reference | Chris Robinson | 2023-02-10 | 1 | -1/+1 |
| | |||||
* | 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 |
| | |||||
* | Rename the bsinc table variables | Chris Robinson | 2023-02-07 | 1 | -2/+2 |
| | |||||
* | Use an interpolated FIR filter for cubic resampling | Chris Robinson | 2023-02-06 | 1 | -0/+11 |
| | | | | | | Similar to how the bsinc filters work, but optimized for 4-point filtering. At least the SSE version is notably faster than calculating the coefficients in real time. | ||||
* | Avoid using auto for lambda parameters | Chris Robinson | 2023-02-06 | 2 | -2/+2 |
| | |||||
* | 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 |
| | |||||
* | Don't set an EAX version by default for sources | Chris Robinson | 2023-02-05 | 1 | -9/+0 |
| | | | | | | | | | Presuming sources start in a neutral state for EAX effects, that is they're not affected by EAX by default, there's no need to set an active EAX state for one until the app sets an EAX property on it. Since the deferred and immediate properties are stored independently per-version, they can always be set to defaults, and simply not have a particular version committed as active until the app sets an EAX property, which will inherently set the active version. | ||||
* | Distinguish a couple log messages | Chris Robinson | 2023-01-30 | 1 | -3/+3 |
| | | | | And downgrade an ERR to a WARN | ||||
* | Transpose the ambisonic rotation matrix and helper coefficients | Chris Robinson | 2023-01-26 | 1 | -39/+32 |
| | |||||
* | Transpose the ambisonic voice mixing matrix | Chris Robinson | 2023-01-25 | 1 | -34/+41 |
| | | | | | To more efficiently prepare the panning coefficients. Also avoid making a stack copy of the matrix to reuse as the target. | ||||
* | Use explicit arrays for the remix table target mixes | Chris Robinson | 2023-01-24 | 1 | -16/+53 |
| | | | | Seems inline initializer lists become garbage when stored in a span. | ||||
* | Use the object serial ID from PipeWire when available | Chris Robinson | 2023-01-24 | 1 | -21/+47 |
| | | | | | | | | | | | Using the node ID as a target is deprecated in newer versions of PipeWire. The serial ID is a monotonic 64-bit integer ID, incremeneted for every object created, so is guaranteed to always refer to the same target (until it wraps around, which I suppose isn't expected/allowed to happen), compared to the 32-bit node ID which I guess allows reuse. We could instead use the target node's name instead of the serial ID, but an integer is nicer to manage than a string. | ||||
* | 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 | 10 | -33/+33 |
| | |||||
* | Precalculate reused scale factors | Chris Robinson | 2023-01-15 | 1 | -1/+1 |
| | |||||
* | clang-tidy cleanups (#800) | Rosen Penev | 2023-01-15 | 9 | -21/+21 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * clang-tidy: use bool literals Found with modernize-use-bool-literals Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: replace std::bind with lambdas Found with modernize-avoid-bind Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: use data() instead of pointer stuff Found with readability-container-data-pointe Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: use empty() Found with readability-container-size-empty Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: remove static in anon namespace Found with readability-static-definition-in-anonymous-namespace Signed-off-by: Rosen Penev <[email protected]> * clang-tidy: remove const return Found with readability-const-return-type Signed-off-by: Rosen Penev <[email protected]> Signed-off-by: Rosen Penev <[email protected]> | ||||
* | Don't explicitly try to spawn servers by default | Chris Robinson | 2023-01-14 | 2 | -2/+2 |
| | |||||
* | Don't use doubles for upsampling B-Format transforms | Chris Robinson | 2023-01-13 | 1 | -3/+3 |
| | |||||
* | Avoid using a non-0 span length over nullptr | Chris Robinson | 2023-01-13 | 1 | -17/+32 |
| | |||||
* | Write proper samples when starting the PulseAudio stream | Chris Robinson | 2023-01-13 | 1 | -17/+3 |
| | | | | | Instead of silence, to ensure the number of samples written to PulseAudio is the same as the number mixed/rendered. | ||||
* | Avoid a dead store | Chris Robinson | 2023-01-13 | 1 | -1/+0 |
| | |||||
* | Avoid single-use static class method wrappers | Chris Robinson | 2023-01-13 | 1 | -81/+46 |
| | |||||
* | Avoid unnecessary uses of make_optional | Chris Robinson | 2023-01-13 | 3 | -28/+30 |
| | |||||
* | Rename some members for clarity | Chris Robinson | 2023-01-12 | 1 | -22/+22 |
| | |||||
* | Fix RingBuffer crash in OpenSL backend (#807) | IamSN0WBALL | 2023-01-12 | 1 | -1/+1 |
| | | | Co-authored-by: IamSN0WBALL <[email protected]> | ||||
* | Use a span instead of a count+pointer | Chris Robinson | 2023-01-11 | 1 | -1/+1 |
| | |||||
* | Rename some struct members | Chris Robinson | 2023-01-10 | 2 | -5/+5 |
| | | | | And make a related function a member function | ||||
* | Don't rely on mRateMatch while waiting for PipeWire timing info | Chris Robinson | 2023-01-09 | 1 | -5/+2 |
| | |||||
* | Handle the stereo-encoding option for loopback devices too | Chris Robinson | 2023-01-09 | 1 | -12/+12 |
| | |||||
* | Fix handling the ALC_HRTF_SOFT attribute | Chris Robinson | 2023-01-09 | 1 | -1/+20 |
| | |||||
* | Add an option to mix on PipeWire's non-RT thread | Chris Robinson | 2023-01-08 | 1 | -14/+14 |
| | |||||
* | Better handle negative sample rate values | Chris Robinson | 2023-01-08 | 1 | -5/+5 |
| | |||||
* | Update some config comments | Chris Robinson | 2023-01-08 | 1 | -1/+1 |
| | |||||
* | Get device config options earlier in a device update | Chris Robinson | 2023-01-07 | 1 | -310/+275 |
| | |||||
* | Avoid using a reversed all-pass for the front stablizer | Chris Robinson | 2023-01-06 | 2 | -7/+2 |
| | | | | | | While a neat trick, it's been shown to be too volatile and add noise as the signal gets louder. It's better to just accept the phase shift and ensure everything stays aligned. | ||||
* | 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 |
| | |||||
* | Simplify handling effect output for spatial effects | Chris Robinson | 2023-01-04 | 5 | -83/+140 |
| | | | | | | | | | | | | 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. |