Skip to content

Releases: Yellow-Dog-Man/SharpPipe

1.4.2

24 Nov 01:38
0a8b80f

Choose a tag to compare

Full Changelog: 1.4.1...1.4.2

1.4.1 - Fixed zita range constants

08 May 00:10
3b867ea

Choose a tag to compare

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

05 May 23:25
903da0b

Choose a tag to compare

What's changed

  • Converted Zita reverb filter to a fully managed implementation.

    • This is fully analagous to the unmanaged sp_zitarev implementation, but is much easier to manage.
  • 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_pshift implementation, but again, is much easier to manage.
  • 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

28 Apr 17:56
32c8dce

Choose a tag to compare

What's Changed

  • Fix FromOther using "in" for the parameter which causes issues with mono runtime by @Frooxius in #1

New Contributors

Full Changelog: 1.3.2...1.3.3

Helpful constants - 1.3.2

25 Apr 23:42
66a2f92

Choose a tag to compare

Included now are useful constants which define the default, min and max values for valid ZitaReverb inputs.

  • Add ZITA_*_DEFAULT/MIN/MAX constants 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

25 Apr 05:35
159134d

Choose a tag to compare

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) to FromOther<TFrom, TTo>(TFrom zita, TTo other) instead of always requiring an object of type IZitaFilter`.
    • This allows you to avoid boxing should you decide to use something like the ZitaParameters struct with it now.
  • Added EnsureValidParameters() extension method so that you can validate input parameters given to an IZitaFilter type.
    • Also adds EnsureValidNum() extension method to validate floats with an optional fallback value.

Enjoy!

Less hassle for zitarev compute - 1.3.0

06 Dec 05:55

Choose a tag to compare

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

26 Nov 11:59

Choose a tag to compare

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

12 Sep 03:27

Choose a tag to compare

  • 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

11 Sep 23:18

Choose a tag to compare

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