diff --git a/SharpPipe/Interfaces/IZitaFilter.cs b/SharpPipe/Interfaces/IZitaFilter.cs new file mode 100644 index 0000000..e73ebac --- /dev/null +++ b/SharpPipe/Interfaces/IZitaFilter.cs @@ -0,0 +1,62 @@ +namespace SharpPipe; + +/// +/// Represents the interface for Zita Reverb objects +/// +public interface IZitaFilter +{ + /// + /// The input delay (ms) before reverb is applied to the incoming signal (default: 60ms) + /// + float InDelay { get; } + + /// + /// The separation between 'high' and 'low' frequencies (default: 200hz) + /// + float Crossover { get; } + + /// + /// The time in seconds it takes for low frequencies to decrease by 60dB (default: 3 seconds) + /// + float RT60Low { get; } + + /// + /// The time in seconds it takes for mid frequencies to decrease by 60dB (default: 2 seconds) + /// + float RT60Mid { get; } + + /// + /// Frequencies (hz) above this one are heard half as long as as the mid-range frequencies - e.g. when their T60 is half of the middle-range's T60 (default: 6000hz) + /// + float HighFrequencyDamping { get; } + + /// + /// The center frequency (hz) of the Regalia Mitra peaking equalizer for the first section (default: 315hz) + /// + float EQ1Frequency { get; } + + /// + /// The peak level (dB) of equalizer 1 (default: 0dB) + /// + float EQ1Level { get; } + + /// + /// The center frequency (hz) of the Regalia Mitra peaking equalizer for the second section (default: 1500hz) + /// + float EQ2Frequency { get; } + + /// + /// The peak level (dB) of equalizer 2 (default: 0dB) + /// + float EQ2Level { get; } + + /// + /// Mixes the wet and dry signals - e.g. 0 is no reverb, 1 is only reverb (default: 1) + /// + float Mix { get; } + + /// + /// The factor (dB) to scale the output by (default: -20dB) + /// + float Level { get; } +} \ No newline at end of file diff --git a/SharpPipe/Managed wrapper classes/ZitaReverb.cs b/SharpPipe/Managed wrapper classes/ZitaReverb.cs index 2dc3f1b..9d7c509 100644 --- a/SharpPipe/Managed wrapper classes/ZitaReverb.cs +++ b/SharpPipe/Managed wrapper classes/ZitaReverb.cs @@ -7,14 +7,14 @@ namespace SharpPipe; /// /// Uses the 8 FDB zitareverb algorithm to provide reverb to processed samples ( see: https://paulbatchelor.github.io/res/soundpipe/docs/zitarev.html ) /// -public class ZitaReverb : IDisposable +public class ZitaReverb : IDisposable, IZitaFilter { internal IntPtr zitaRevObject; /// /// The soundpipe object used by this reverb /// - public SoundPipe Pipe; + public SoundPipe Pipe { get; } /// /// True if the object is disposed @@ -198,4 +198,4 @@ private void Dispose(bool disposing) { Dispose(false); } -} \ No newline at end of file +}