kopia lustrzana https://github.com/erdewit/HiFiScan
Correction
rodzic
7b41e81d3e
commit
423cbbddd2
|
@ -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.
|
impulse response. It's also possible to create a minimum-phase response.
|
||||||
Even everything in between is possible. This is done with the **Causality**
|
Even everything in between is possible. This is done with the **Causality**
|
||||||
parameter, where 0% is phase-neutral and 100% is minimum-phase.
|
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
|
.. image:: images/causality-waveform.png
|
||||||
|
|
||||||
The latency decreases proportional to the causality.
|
The latency decreases proportional to the causality.
|
||||||
At 100% the response becomes zero-latency and purely causal, where only the current
|
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.
|
twice the post-echo.
|
||||||
Note that despite the name of "minimum-phase"
|
Note that despite the name of "minimum-phase"
|
||||||
this setting actually incurs the most phase distortion, which can get severe with
|
this setting actually incurs the most phase distortion, which can get severe with
|
||||||
|
|
|
@ -153,7 +153,8 @@ class Analyzer:
|
||||||
"""Interpolated target curve."""
|
"""Interpolated target curve."""
|
||||||
return self.interpolateCorrection(self._target)
|
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.
|
Logarithmically interpolate the correction to a full-sized array.
|
||||||
"""
|
"""
|
||||||
|
@ -244,7 +245,7 @@ class Analyzer:
|
||||||
dbRange: Maximum attenuation in dB (power).
|
dbRange: Maximum attenuation in dB (power).
|
||||||
kaiserBeta: Shape parameter of the Kaiser tapering window.
|
kaiserBeta: Shape parameter of the Kaiser tapering window.
|
||||||
smoothing: Strength of frequency-dependent smoothing.
|
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)
|
freq, H2 = self.H2(smoothing)
|
||||||
# Apply target curve.
|
# Apply target curve.
|
||||||
|
@ -411,7 +412,7 @@ def transform_causality(x: np.ndarray, causality: float = 1) -> np.ndarray:
|
||||||
the given impulse.
|
the given impulse.
|
||||||
|
|
||||||
Params:
|
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.
|
in-between values smoothly transition between these two.
|
||||||
|
|
||||||
https://www.rle.mit.edu/dspg/documents/AVOHomoorphic75.pdf
|
https://www.rle.mit.edu/dspg/documents/AVOHomoorphic75.pdf
|
||||||
|
|
Ładowanie…
Reference in New Issue