diff --git a/README.rst b/README.rst index f398b48..40abbef 100644 --- a/README.rst +++ b/README.rst @@ -284,13 +284,13 @@ The default is to create a phase-neutral (aka linear-phase) impulse response. It's also possible to create a minimum-phase response. Even everything in between is possible. This is done with the **Causality** parameter, where 0% is phase-neutral and 100% is minimum-phase. -Varying the causality smoothly transitions between the extremes: +By varying the causality a smooth transition between the extremes is made: .. image:: images/causality-waveform.png The latency decreases proportional to the causality. At 100% the response becomes zero-latency and purely causal, where only the current -and later sound samples are used. The pre-echo is eliminated at the price of +and past sound samples are used. The pre-echo is eliminated at the price of twice the post-echo. Note that despite the name of "minimum-phase" this setting actually incurs the most phase distortion, which can get severe with diff --git a/hifiscan/analyzer.py b/hifiscan/analyzer.py index 7f90b42..a7b21d4 100644 --- a/hifiscan/analyzer.py +++ b/hifiscan/analyzer.py @@ -153,7 +153,8 @@ class Analyzer: """Interpolated target curve.""" return self.interpolateCorrection(self._target) - def interpolateCorrection(self, corr: Correction) -> Optional[np.ndarray]: + def interpolateCorrection( + self, corr: Optional[Correction]) -> Optional[np.ndarray]: """ Logarithmically interpolate the correction to a full-sized array. """ @@ -244,7 +245,7 @@ class Analyzer: dbRange: Maximum attenuation in dB (power). kaiserBeta: Shape parameter of the Kaiser tapering window. smoothing: Strength of frequency-dependent smoothing. - causality: 0 = linear-phase a-causal, 1 = minimal-phase causal. + causality: 0 = linear-phase a-causal, 1 = minimum-phase causal. """ freq, H2 = self.H2(smoothing) # Apply target curve. @@ -411,7 +412,7 @@ def transform_causality(x: np.ndarray, causality: float = 1) -> np.ndarray: the given impulse. Params: - causality: 0 = linear-phase, 1 = minimal-phase and + causality: 0 = linear-phase, 1 = minimum-phase and in-between values smoothly transition between these two. https://www.rle.mit.edu/dspg/documents/AVOHomoorphic75.pdf