Releases: Yellow-Dog-Man/SharpPipe
1.4.2
1.4.1 - Fixed zita range constants
This is a quick hotfix for zita parameter validation to ensure that the RT60Low and RT60Mid aren't allowed to cause the audio buffer to die.
-
Tweak minimum value for RT60Low and RT60Mid on zita parameter validation to 0.05 (up from zero)
- 0.05 should be safe and not cause the audio buffer to nuke itself
-
Tweak maximum level ranges for EQ1, EQ2 and Level parameters on ZitaReverb to 45 decibels (up from 20)
- This should allow more leeway when tuning certain types of effects (e.g. cutting lows and boosting highs for radio-like effects)
- This should also allow more fun :)
Enjoy!
1.4.0 - New pitch shift filter
What's changed
-
Converted Zita reverb filter to a fully managed implementation.
- This is fully analagous to the unmanaged
sp_zitarevimplementation, but is much easier to manage.
- This is fully analagous to the unmanaged
-
Sealed Zita reverb until the API is more hardened since things are still in flux right now.
-
Add new time-domain-based pitch shift filter
- This is fully analagous to the unmanaged
sp_pshiftimplementation, but again, is much easier to manage.
- This is fully analagous to the unmanaged
-
Updated example program to be more robust and include outputs for the currently-implemented filters.
Full Changelog: 1.3.3...1.4.0
1.3.3 - Fix issues with Mono
Helpful constants - 1.3.2
Included now are useful constants which define the default, min and max values for valid ZitaReverb inputs.
- Add
ZITA_*_DEFAULT/MIN/MAXconstants which define the default, min and max values for ZitaReverb - Important! Change an internal inline _clamp method to be static so that unnecessary memory allocations are avoided on .NET Framework
- If you're experiencing higher-than-normal memory pressure on version 1.3.1, please update!
Parameter validation - 1.3.1
This release includes some changes to how parameters are copied with FromOther() and allows you to now validate parameters to make sure users don't explode their ears.
- Changed
FromOther<T>(T zita, IZitaFilter other)toFromOther<TFrom, TTo>(TFrom zita, TTo other) instead of always requiring an object of typeIZitaFilter`.- This allows you to avoid boxing should you decide to use something like the
ZitaParametersstruct with it now.
- This allows you to avoid boxing should you decide to use something like the
- Added
EnsureValidParameters()extension method so that you can validate input parameters given to anIZitaFiltertype.- Also adds
EnsureValidNum()extension method to validate floats with an optional fallback value.
- Also adds
Enjoy!
Less hassle for zitarev compute - 1.3.0
This release of SharpPipe includes changes that fix a crash in unity and remove a lot of hassle from processing samples.
- Change function signature of ZitaReverb.Compute to now process input samples in chunks.
- This now means you can pass arbitrarily-sized input data and define how big the chunk size is for processing.
- More careful handling of reorientation of interleaved stereo samples on the stack
- Use spans and properly fix buffers in place whilst calling into P/Invoke
- This appears to fix a crash on Unity 2019.4.19f1, where a null pointer would seemingly be passed regardless of the validity of input data.
Enjoy!
Bulk sample processing - 1.2.2
This release includes the ability to process samples in bulk rather than one at a time, vastly increasing the throughput potential for realtime audio processing.
- Added overload to
Compute()that takes two spans of floats indicating an input and an output span of interlaced stereo samples.- The input and output can be the same destination if the goal is to compute samples in-place.
Helper hotfix - 1.2.1
- Quick change to ensure that 'FromOther' returns the filter that was modified in case the filter is implemented as a value type
- Change 'FromOther' to be a generic T of IZitaFilter for better type clarity
Parameters and example updates - 1.2.0
This release includes the addition of the ZitaParameters struct, which also implements the IZitaFilter interface. This can be used to easily pass parameters to/from existing objects that implement them. The example program has also been updated to showcase how to use it and now also references the SharpPipe project directly.
- Add ZitaParameters struct for easily passing parameters around
- Update example to use direct project reference instead of nuget package