diff --git a/corrscope/triggers.py b/corrscope/triggers.py index caa9aae..8767b12 100644 --- a/corrscope/triggers.py +++ b/corrscope/triggers.py @@ -603,7 +603,6 @@ class InterpolatedCorrelationResult: corr: np.ndarray -# TODO use parabolic() for added precision when trigger subsampling enabled def correlate_data( data: np.ndarray, prev_buffer: np.ndarray, radius: Optional[int] ) -> CorrelationResult: @@ -642,29 +641,16 @@ def correlate_data( def correlate_spectrum( data: np.ndarray, prev_buffer: np.ndarray, radius: Optional[int] -) -> InterpolatedCorrelationResult: - N = len(data) - corr = signal.correlate(data, prev_buffer) # returns double, not single/FLOAT - Ncorr = 2 * N - 1 - assert len(corr) == Ncorr - - # Find optimal offset - mid = N - 1 - - if radius is not None: - left = max(mid - radius, 0) - right = min(mid + radius + 1, Ncorr) - - corr = corr[left:right] - mid = mid - left - - # argmax(corr) == mid + peak_offset == (data >> peak_offset) - # peak_offset == argmax(corr) - mid - peak_offset = parabolic(corr, np.argmax(corr)) - mid # type: float - return InterpolatedCorrelationResult(peak_offset, corr) +) -> CorrelationResult: + """ + I used to use parabolic() on the return value, + but unfortunately it was unreliable and caused Plok Beach bass to jitter, + so I turned it off (resulting in the same code as correlate_data). + """ + return correlate_data(data, prev_buffer, radius) -def parabolic(ys: np.ndarray, xint: int) -> float: +def parabolic(xint: int, ys: np.ndarray) -> float: """ Quadratic interpolation for estimating the true position of an inter-sample maximum when nearby samples are known. diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 806ac37..1f9dd52 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -243,11 +243,10 @@ def test_correlate_offset(correlate): """ Catches bug where writing N instead of Ncorr prevented function from returning positive numbers. + + Right now, correlate_spectrum() is identical to correlate_data(). """ - if correlate == correlate_spectrum: - approx = lambda x: pytest.approx(x, rel=0.5) - else: - approx = lambda x: x + approx = lambda x: x np.random.seed(31337)