Response
Your handy frequency and impulse response processing object!

This module supplies the Response
class: an abstraction of frequency and
impulse responses and a set of handy methods for their processing. It implements a
fluent interface for chaining the processing commands.
Find the documentation here and the source code on GitHub.
import numpy as np
from response import Response
fs = 48000
T = 0.5
t = np.arange(int(T * fs)) / fs
x = np.sin(2 * np.pi * 100 * t)
r = (
Response.from_time(fs, x)
.time_window((0, 0.1), (-0.1, None), window="hann")
.zeropad_to_length(fs * 1)
.circdelay(T / 2)
.resample_poly(500, window=("kaiser", 0.5), normalize="same_amplitude")
.timecrop(0.2, -0.2)
.freq_window((0, 90), (110, 500))
)
r.plot(show=True)
r.in_time
r.in_freq