Skip to content
/ Response Public

Your handy frequency and impulse response processing object

License

Notifications You must be signed in to change notification settings

fhchl/Response

Repository files navigation

Response

travis-ci codecov

The response module defines the Response class as an abstraction of frequency and impulse responses.

import numpy as np
from response import Response

fs = 48000  # sampling rate
T = 0.5     # length of signal
# a sine at 100 Hz
t = np.arange(int(T * fs)) / fs
x = np.sin(2 * np.pi * 100 * t)
# Do chain of processing
r = (
    Response.from_time(fs, x)
    # time window at the end and beginning
    .time_window((0, 0.1), (-0.1, None), window="hann")  # equivalent to Tukey window
    # zeropad to one second length
    .zeropad_to_length(fs * 1)
    # circular shift to center
    .circdelay(T / 2)
    # resample with polyphase filter, keep gain of filter
    .resample_poly(500, window=("kaiser", 0.5), normalize="same_amplitude")
    # cut 0.2s at beginning and end
    .timecrop(0.2, -0.2)
    # apply frequency domain window
    .freq_window((0, 90), (110, 500))
)
# plot result
r.plot(show=True)
# real impulse response
r.in_time
# complex frequency response
r.in_freq
# and much more ...

Testing

Run tests in base directory with

pytest

Always run tests before pushing code.

Developing

Install for development with pip install -e . .

Comments should comply with the Numpy/Scipy documentation style. An example can also be found here. Code should comply to the pep8 coding style. You can check if the code complies by executing

pycodestyle
pydocstyle

Git commit messages follow Angular style. Uses python-semantic-release for versioning on travis-ci for pushs to master branch.

About

Your handy frequency and impulse response processing object

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages