From 054c4ba9eebd693b02c7cc114cbf5e303f66b9ed Mon Sep 17 00:00:00 2001 From: Sergio Aguirre Date: Sat, 31 Oct 2026 19:14:27 +0100 Subject: [PATCH 1/3] [FIX] index the AC slice of the spectrum in SignalObj._ifft For signalType 'power', _ifft multiplied the whole half spectrum into the AC slice [1:, :], one row short, so building a SignalObj from a spectrum (domain='freq') raised a broadcast error. Index [1:, :] on both sides; the round trip time -> freq -> time closes at the float32 floor. Co-Authored-By: Claude Fable 5.1 --- pytta/classes/signal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pytta/classes/signal.py b/pytta/classes/signal.py index 79151c3..802b751 100644 --- a/pytta/classes/signal.py +++ b/pytta/classes/signal.py @@ -1147,7 +1147,7 @@ def _ifft(self): adjustedFreqSignal = np.zeros(self._freqSignal.shape, dtype=np.complex_) # * N/2 for AC adjustedFreqSignal[1:, :] = \ - self._freqSignal * len(self._freqSignal) + self._freqSignal[1:, :] * len(self._freqSignal) # * N for DC adjustedFreqSignal[0, :] = \ self._freqSignal[0, :] * self.numSamples From 5299e2c057d01594b3500cf7d1d3ba24f56ff547 Mon Sep 17 00:00:00 2001 From: Sergio Aguirre Date: Sat, 31 Oct 2026 19:14:27 +0100 Subject: [PATCH 2/3] [FEATURE] add smooth_frequency for SignalObj Smooth the magnitude spectrum over 1 / nthOct octave and keep the phase. The magnitude is interpolated onto a 1 cent logarithmic grid spanning the 20 octaves below Nyquist, box averaged over 1200 / nthOct cents (made odd, shrinking at the ends of the grid) and interpolated back onto the bins with a not-a-knot cubic spline. The DC bin is copied. Follows the LogFreqOctave1 smoothing of ita_smooth in the ITA-Toolbox (RWTH Aachen). Tests pin each rule on spectra built bin by bin and compare 1, 1/3 and 1/12 octave with the ITA-Toolbox output stored in tests/golden/smooth_frequency_ita.mat, which tests/golden/make_smooth_frequency_ita.m regenerates with MATLAB. Co-Authored-By: Claude Fable 5.1 --- pytta/__init__.py | 3 +- pytta/functions.py | 64 ++++++++++ tests/golden/make_smooth_frequency_ita.m | 40 +++++++ tests/golden/smooth_frequency_ita.mat | Bin 0 -> 157892 bytes tests/test_smooth_frequency.py | 144 +++++++++++++++++++++++ 5 files changed, 250 insertions(+), 1 deletion(-) create mode 100644 tests/golden/make_smooth_frequency_ita.m create mode 100644 tests/golden/smooth_frequency_ita.mat create mode 100644 tests/test_smooth_frequency.py diff --git a/pytta/__init__.py b/pytta/__init__.py index d8740aa..eeef72c 100644 --- a/pytta/__init__.py +++ b/pytta/__init__.py @@ -113,7 +113,7 @@ list_devices, print_devices, get_device_from_user,\ fft_convolve, find_delay, corr_coef, resample,\ peak_time, save, load, plot_time, plot_time_dB, plot_freq,\ - plot_bars, plot_spectrogram, plot_waterfall, SPL + plot_bars, plot_spectrogram, plot_waterfall, SPL, smooth_frequency # Must go on v0.1.0 (DEPRECATED) from .functions import fft_degree @@ -146,6 +146,7 @@ 'resample', 'corr_coef', 'peak_time', + 'smooth_frequency', 'save', 'load', 'weighting', diff --git a/pytta/functions.py b/pytta/functions.py index 9b39239..0dbe21f 100644 --- a/pytta/functions.py +++ b/pytta/functions.py @@ -17,6 +17,7 @@ >>> pytta.corr_coef(signalObj1, signalObj2) >>> pytta.resample(signalObj, newSamplingRate) >>> pytta.peak_time(signalObj1, signalObj2, ..., signalObjN) + >>> pytta.smooth_frequency(signalObj, nthOct) >>> pytta.plot_time(signalObj1, signalObj2, ..., signalObjN) >>> pytta.plot_time_dB(signalObj1, signalObj2, ..., signalObjN) >>> pytta.plot_freq(signalObj1, signalObj2, ..., signalObjN) @@ -37,6 +38,7 @@ import sounddevice as sd import scipy.signal as ss import scipy.fftpack as sfft +from scipy.interpolate import CubicSpline import zipfile as zf import h5py from typing import Union, List @@ -274,6 +276,68 @@ def peak_time(signal): else: return peaks_time[0] +def smooth_frequency(signalObj, nthOct=3): + """ + Smooth the magnitude spectrum of a SignalObj over fractions of an octave + and return a new SignalObj. The phase is kept. + + The magnitude of freqSignal is interpolated linearly onto a logarithmic + frequency grid of 1 cent that spans the 20 octaves below Nyquist, box + averaged over 1200 / nthOct cents (made odd; the box shrinks + symmetrically at both ends of the grid), and interpolated back onto the + frequency bins with a cubic spline. The DC bin is copied unchanged. + + Parameters (default), (type): + ----------------------------- + * signalObj (), (SignalObj): + signal whose spectrum is smoothed. It is not modified; + * nthOct (3), (int or float): + smoothing width of 1 / nthOct octave: 1 for one octave, 3 for a + third, 12 for a twelfth. + + The smoothing acts on freqSignal as stored, so the DC and Nyquist bins, + which PyTTa scales differently from the others, take part with that + scale. This is the 'LogFreqOctave1' smoothing of ita_smooth in the + ITA-Toolbox (RWTH Aachen). + + >>> smoothed = pytta.smooth_frequency(ir, nthOct=3) + """ + if not isinstance(signalObj, SignalObj): + raise TypeError('signalObj must be a SignalObj.') + if isinstance(nthOct, bool) or not isinstance(nthOct, (int, float)) \ + or nthOct <= 0: + raise ValueError('nthOct must be a positive number.') + samplingRate = signalObj.samplingRate + freq = signalObj.freqVector + spectrum = np.array(signalObj.freqSignal, dtype=complex, ndmin=2) + # logarithmic grid: 1 cent steps over the 20 octaves below Nyquist + gridFreq = (samplingRate / 2) * 2 ** (np.arange(24001) / 1200 - 20) + span = int(np.floor(1200 / nthOct + 0.5)) + width = min(span - 1 + span % 2, gridFreq.size) + halfWidth = (width - 1) // 2 + index = np.arange(gridFreq.size) + reach = np.minimum(halfWidth, np.minimum(index, index[::-1])) + smoothed = np.empty_like(spectrum) + for ch in range(spectrum.shape[1]): + magnitude = np.interp(gridFreq, freq, np.abs(spectrum[:, ch])) + summed = np.concatenate(([0.], np.cumsum(magnitude))) + average = (summed[index + reach + 1] - summed[index - reach]) \ + / (2 * reach + 1) + spline = CubicSpline(gridFreq[1:], average[1:], bc_type='not-a-knot') + smoothed[0, ch] = spectrum[0, ch] + smoothed[1:, ch] = spline(freq[1:]) \ + * np.exp(1j * np.angle(spectrum[1:, ch])) + newSignal = SignalObj(smoothed, 'freq', + samplingRate=samplingRate, + numSamples=signalObj.numSamples, + signalType=signalObj.signalType, + freqMin=signalObj.freqMin, + freqMax=signalObj.freqMax, + comment=signalObj.comment) + newSignal.channels = cp.deepcopy(signalObj.channels) + return newSignal + + def fft_degree(*args,**kwargs): """ DEPRECATED diff --git a/tests/golden/make_smooth_frequency_ita.m b/tests/golden/make_smooth_frequency_ita.m new file mode 100644 index 0000000..8bf226c --- /dev/null +++ b/tests/golden/make_smooth_frequency_ita.m @@ -0,0 +1,40 @@ +function make_smooth_frequency_ita(itaRoot) +% MAKE_SMOOTH_FREQUENCY_ITA Golden data for tests/test_smooth_frequency.py. +% +% make_smooth_frequency_ita(itaRoot) runs ita_smooth_frequency from the +% ITA-Toolbox (RWTH Aachen, https://git.rwth-aachen.de/ita/toolbox) on a +% fixed random signal and writes smooth_frequency_ita.mat next to this +% file: the time signal, the ITA input spectrum and one output spectrum +% per bandwidth (1, 1/3 and 1/12 octave). +% +% The DC and Nyquist bins of the signal are set to zero. PyTTa and the +% ITA-Toolbox scale these two bins differently from the others, so with +% them at zero the two spectra differ by one constant factor and the +% comparison pins the smoothing alone. +% +% Usage: matlab -batch "make_smooth_frequency_ita('/path/to/ITA-Toolbox')" + +addpath(genpath(itaRoot)); + +fs = 48000; +n = 2048; +rng(0, 'twister'); +x = randn(n, 2); +alt = (-1) .^ (0:n-1)'; +x = x - mean(x, 1); % DC bin to zero +x = x - alt .* mean(x .* alt, 1); % Nyquist bin to zero +a = itaAudio(x, fs, 'time'); + +nthOct = [1 3 12]; +cases = struct('nthOct', {}, 'freqData', {}); +for k = 1:numel(nthOct) + r = ita_smooth_frequency(a, 'bandwidth', 1 / nthOct(k)); + cases(k).nthOct = nthOct(k); + cases(k).freqData = r.freqData; +end +freqDataIn = a.freqData; + +out = fullfile(fileparts(mfilename('fullpath')), 'smooth_frequency_ita.mat'); +save(out, 'x', 'fs', 'freqDataIn', 'cases', '-v7'); +fprintf('wrote %s (%d cases)\n', out, numel(cases)); +end diff --git a/tests/golden/smooth_frequency_ita.mat b/tests/golden/smooth_frequency_ita.mat new file mode 100644 index 0000000000000000000000000000000000000000..5b8a80dec2e9bd22e1a0ef173b6820714893e28c GIT binary patch literal 157892 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 UbPC}RRX)R0HXHrY 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 N&9Y~J0sy9sG9i$DD(wIO literal 0 HcmV?d00001 diff --git a/tests/test_smooth_frequency.py b/tests/test_smooth_frequency.py new file mode 100644 index 0000000..60842f8 --- /dev/null +++ b/tests/test_smooth_frequency.py @@ -0,0 +1,144 @@ +""" +Tests for pytta.smooth_frequency. + +Each test pins one rule. The spectra are built directly in the frequency +domain, so the input magnitude is known bin by bin. The last test compares +the whole thing with the ITA-Toolbox (RWTH Aachen) on data generated by +golden/make_smooth_frequency_ita.m. + +The smoothing is a moving average over a logarithmic frequency grid of +1 cent, 1200 / nthOct cents wide, applied to the magnitude of freqSignal; +the phase is kept. The grid runs 20 octaves below Nyquist, so the first +bins take part through linear interpolation from DC. +""" +import os +import unittest + +import numpy as np +import scipy.io as sio + +import pytta + +GOLDEN = os.path.join(os.path.dirname(__file__), 'golden', + 'smooth_frequency_ita.mat') +FS = 48000 +N = 2048 +K = N // 2 + 1 +TOL32 = 1e-6 # rounding of the complex64 freqSignal storage + + +# SignalObj built from a half spectrum of K rows. Built inline in each test: +# SignalObj inspects the caller's frame (classes/_instanceinfo.py) and fails +# when the caller's first local variable is an array. +FREQ = dict(samplingRate=FS, numSamples=N, signalType='power') + + +def cents(k, k0): + """Distance in cents from bin k0 to bin k.""" + return 1200 * np.log2(k / k0) + + +class TestSmoothFrequency(unittest.TestCase): + + def test_constant_magnitude_keeps_spectrum_and_phase(self): + # A flat magnitude is its own moving average on any grid, and the + # phase is not touched: the output equals the input, bin by bin. + rng = np.random.default_rng(1) + phase = rng.uniform(-np.pi, np.pi, K) + phase[0] = phase[-1] = 0 + spec = 0.3 * np.exp(1j * phase) + out = pytta.smooth_frequency(pytta.SignalObj(spec, 'freq', **FREQ), nthOct=3) + worst = np.max(np.abs(out.freqSignal[:, 0] - spec)) / 0.3 + print(f'\n flat spectrum, worst rel change = {worst:.2e}') + self.assertLess(worst, TOL32) + + def test_single_bin_spreads_into_a_flat_band_of_the_given_width(self): + # One bin at k0 = 100 is, on the cent grid, a triangle of base + # 1200 log2(101/99) ~ 34.6 cents and height 1. A box average of + # w cents turns it into a plateau of height area / w wherever the + # box holds the whole triangle: inside +-(h - 18) cents of k0, with + # h = (w - 1) / 2, and zero beyond +-(h + 18) cents. w is + # round(1200 / nthOct) made odd: 1199, 399 and 99 cents. + k0 = 100 + spec = np.zeros(K, dtype=complex) + spec[k0] = 1j # phase pi/2: the magnitude is read back below + area = 600 * np.log2((k0 + 1) / (k0 - 1)) + k = np.arange(1, K) + for nthOct, w in [(1, 1199), (3, 399), (12, 99)]: + out = pytta.smooth_frequency(pytta.SignalObj(spec, 'freq', **FREQ), + nthOct=nthOct) + y = np.abs(out.freqSignal[1:, 0]) + h = (w - 1) / 2 + inside = np.abs(cents(k, k0)) <= h - 40 + outside = np.abs(cents(k, k0)) >= h + 40 + plateau = y[inside] + flat = np.ptp(plateau) / plateau.mean() + err = plateau.mean() / (area / w) - 1 + leak = np.max(np.abs(y[outside])) / plateau.mean() + print(f'\n 1/{nthOct} oct: {inside.sum()} bins on plateau, ' + f'flatness {flat:.1e}, height err {err:+.3f}, leak {leak:.1e}') + self.assertLess(flat, 10 * TOL32) + self.assertLess(abs(err), 0.03) + self.assertLess(leak, TOL32) + self.assertEqual(out.freqSignal[0, 0], 0) + + def test_dc_and_nyquist_bins_are_kept(self): + # DC is copied through. At Nyquist the box shrinks to one grid + # point, so the magnitude there is also unchanged. + rng = np.random.default_rng(2) + spec = rng.standard_normal(K) + 1j * rng.standard_normal(K) + spec[0] = 2.0 + spec[-1] = -1.5 + out = pytta.smooth_frequency(pytta.SignalObj(spec, 'freq', **FREQ), nthOct=1) + self.assertAlmostEqual(out.freqSignal[0, 0], 2.0, delta=TOL32) + self.assertAlmostEqual(out.freqSignal[-1, 0], -1.5, delta=TOL32) + + def test_returns_new_object_and_smooths_channels_independently(self): + rng = np.random.default_rng(3) + sig = pytta.SignalObj(rng.standard_normal((N, 2)), 'time', FS) + before = sig.freqSignal.copy() + out = pytta.smooth_frequency(sig, nthOct=3) + self.assertTrue(np.array_equal(sig.freqSignal, before)) + self.assertIsNot(out, sig) + self.assertEqual(out.samplingRate, FS) + self.assertEqual(out.numSamples, N) + self.assertEqual(out.numChannels, 2) + single = pytta.smooth_frequency( + pytta.SignalObj(sig.timeSignal[:, 1], 'time', FS), nthOct=3) + worst = (np.max(np.abs(out.freqSignal[:, 1] - single.freqSignal[:, 0])) + / np.max(np.abs(single.freqSignal))) + self.assertLess(worst, TOL32) + + def test_rejects_invalid_arguments(self): + sig = pytta.SignalObj(np.ones(N), 'time', FS) + with self.assertRaises(ValueError): + pytta.smooth_frequency(sig, nthOct=0) + with self.assertRaises(ValueError): + pytta.smooth_frequency(sig, nthOct=-3) + with self.assertRaises(TypeError): + pytta.smooth_frequency(np.ones(N), nthOct=3) + + def test_matches_ita_toolbox(self): + # Sample by sample against ita_smooth_frequency on the stored + # signal, at 1, 1/3 and 1/12 octave. PyTTa and ITA scale the AC + # bins by different constants, measured here from the two input + # spectra (the signal has zero DC and Nyquist, see the generator). + self.assertTrue(os.path.exists(GOLDEN), + 'run golden/make_smooth_frequency_ita.m') + g = sio.loadmat(GOLDEN, squeeze_me=True, struct_as_record=False) + sig = pytta.SignalObj(g['x'], 'time', int(g['fs'])) + ratio = np.abs(g['freqDataIn'][1:-1]) / np.abs(sig.freqSignal[1:-1]) + self.assertLess(np.ptp(ratio) / ratio.mean(), TOL32, + 'input spectra are not one scale apart') + scale = ratio.mean() + for case in np.atleast_1d(g['cases']): + out = pytta.smooth_frequency(sig, nthOct=int(case.nthOct)) + peak = np.max(np.abs(case.freqData)) + diff = np.max(np.abs(out.freqSignal * scale - case.freqData)) / peak + print(f'\n 1/{int(case.nthOct):<2d} oct: rel peak diff vs ITA = ' + f'{diff:.2e} (tol {TOL32})') + self.assertLess(diff, TOL32) + + +if __name__ == '__main__': + unittest.main() From dbe103a3ca3fa1ed242d36e49748ff8aeb57e836 Mon Sep 17 00:00:00 2001 From: Sergio Aguirre Date: Sun, 1 Nov 2026 12:23:54 +0100 Subject: [PATCH 3/3] [FEATURE] add smooth_notches, the compare and squeeze of notches Co-Authored-By: Claude Fable 5.1 --- docs/pyttadoc/functions.rst | 2 +- pytta/__init__.py | 4 ++- pytta/functions.py | 45 ++++++++++++++++++++++++++++ tests/test_smooth_notches.py | 58 ++++++++++++++++++++++++++++++++++++ 4 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 tests/test_smooth_notches.py diff --git a/docs/pyttadoc/functions.rst b/docs/pyttadoc/functions.rst index add57c0..c142ebc 100644 --- a/docs/pyttadoc/functions.rst +++ b/docs/pyttadoc/functions.rst @@ -26,4 +26,4 @@ Functions .. autofunction:: pytta.plot_bars .. autofunction:: pytta.plot_spectrogram .. autofunction:: pytta.plot_waterfall - +.. autofunction:: pytta.smooth_notches diff --git a/pytta/__init__.py b/pytta/__init__.py index eeef72c..1c6ef8d 100644 --- a/pytta/__init__.py +++ b/pytta/__init__.py @@ -113,7 +113,8 @@ list_devices, print_devices, get_device_from_user,\ fft_convolve, find_delay, corr_coef, resample,\ peak_time, save, load, plot_time, plot_time_dB, plot_freq,\ - plot_bars, plot_spectrogram, plot_waterfall, SPL, smooth_frequency + plot_bars, plot_spectrogram, plot_waterfall, SPL, smooth_frequency,\ + smooth_notches # Must go on v0.1.0 (DEPRECATED) from .functions import fft_degree @@ -147,6 +148,7 @@ 'corr_coef', 'peak_time', 'smooth_frequency', + 'smooth_notches', 'save', 'load', 'weighting', diff --git a/pytta/functions.py b/pytta/functions.py index 0dbe21f..c1ad1c3 100644 --- a/pytta/functions.py +++ b/pytta/functions.py @@ -338,6 +338,51 @@ def smooth_frequency(signalObj, nthOct=3): return newSignal +def smooth_notches(signalObj, nthOct=3, threshold=3., squeeze=0.3): + """ + Spectrum with its notches made shallower, for loudspeaker equalization, + by the "compare and squeeze" of ita_smooth_notches (after S. Mueller): + the magnitude is compared with its smoothing over 1 / nthOct octave + (smooth_frequency), every notch deeper than threshold dB below it is + taken from where the magnitude last crossed the smoothed one to where + it crosses it again, and there the ratio r of the two is raised to + squeeze, so that the notch keeps squeeze times its depth in dB. With + threshold 0 every bin below the smoothed curve is squeezed. The phase + is kept. Returns a SignalObj. + """ + spectrum = np.array(signalObj.freqSignal, dtype=complex, ndmin=2) + smooth = np.array(smooth_frequency(signalObj, nthOct).freqSignal, dtype=complex, ndmin=2) + with np.errstate(divide='ignore', invalid='ignore'): + ratio = np.abs(spectrum) / np.abs(smooth) + window = np.ones_like(ratio) + for ch in range(ratio.shape[1]): + r = ratio[:, ch] + if not threshold: + window[:, ch] = np.minimum(r, 1) + continue + notch = r < 10 ** (-abs(threshold) / 20) + notch[0] = notch[1] + edges = np.diff(notch.astype(int)) + for s, e in zip(np.flatnonzero(edges == 1) + 1, np.flatnonzero(edges == -1)): + above = np.flatnonzero(r[:s] > 1) + start = above[-1] + 1 if above.size else 0 + above = np.flatnonzero(r[e:] > 1) + stop = e + above[0] if above.size else r.size + window[start:stop, ch] = r[start:stop] + with np.errstate(divide='ignore', invalid='ignore'): + window = window ** -(1 - squeeze) + window[~np.isfinite(window)] = 1 + newSignal = SignalObj(window * spectrum, 'freq', + samplingRate=signalObj.samplingRate, + numSamples=signalObj.numSamples, + signalType=signalObj.signalType, + freqMin=signalObj.freqMin, + freqMax=signalObj.freqMax, + comment=signalObj.comment) + newSignal.channels = cp.deepcopy(signalObj.channels) + return newSignal + + def fft_degree(*args,**kwargs): """ DEPRECATED diff --git a/tests/test_smooth_notches.py b/tests/test_smooth_notches.py new file mode 100644 index 0000000..2565608 --- /dev/null +++ b/tests/test_smooth_notches.py @@ -0,0 +1,58 @@ +""" +Tests for smooth_notches of pytta.functions, which follows +ita_smooth_notches of the ITA-Toolbox ("compare and squeeze"). Each test +pins one rule on the spectrum of a peaking filter. +""" +import os +import unittest + +import numpy as np +import scipy.signal as ss + +os.environ.setdefault('MPLBACKEND', 'Agg') + +import pytta + +FS = 48000 + + +def peaking(*gain): + # Impulse response of a peaking biquad at 1 kHz, Q 8 (Bristow-Johnson). + label = 'x' + A = 10 ** (gain[0] / 40) + w0 = 2 * np.pi * 1000 / FS + alpha = np.sin(w0) / 16 + b = [1 + alpha * A, -2 * np.cos(w0), 1 - alpha * A] + a = [1 + alpha / A, -2 * np.cos(w0), 1 - alpha / A] + return pytta.SignalObj(ss.lfilter(b, a, np.eye(1, 2 ** 15)[0]), 'time', FS) + + +def level(signal): + return 20 * np.log10(np.abs(np.asarray(signal.freqSignal)[:, 0])) + + +class TestSmoothNotches(unittest.TestCase): + + def test_deep_notch_keeps_squeeze_times_its_depth(self): + # In the notch the level becomes Ls + 0.3 (L - Ls), Ls the smoothed + # level; elsewhere the spectrum is untouched. + x = peaking(-20) + out = pytta.smooth_notches(x, 3, 3, 0.3) + L, Ls = level(x), level(pytta.smooth_frequency(x, 3)) + k = np.argmin(L) + expected = Ls[k] + 0.3 * (L[k] - Ls[k]) + print(f'\n notch: {L[k]:.2f} dB -> {level(out)[k]:.2f} dB, expected {expected:.2f} dB', end='') + self.assertAlmostEqual(level(out)[k], expected, places=4) # float32 spectrum + f = x.freqVector + far = (f > 3000) | ((f < 300) & (f > 0)) + np.testing.assert_allclose(level(out)[far], L[far], atol=1e-4) # float32 + + def test_shallow_dip_is_left_alone(self): + # A dip of 2 dB stays below the threshold of 3 dB. + x = peaking(-2) + out = pytta.smooth_notches(x, 3, 3, 0.3) + np.testing.assert_allclose(level(out), level(x), atol=1e-4) # float32 + + +if __name__ == '__main__': + unittest.main()