cutcutcodec.core.filter.audio.fir.FilterAudioFIR

class cutcutcodec.core.filter.audio.fir.FilterAudioFIR(in_streams: Iterable[StreamAudio], fir: Tensor, fir_rate: Integral)[source]

Invariant finite impulse response convolutional filter (FIR).

Attributes

firtorch.Tensor

The impulsional response (1d) (readonly).

fir_rateint

The sample rate of the impulsional response (readonly).

Examples

>>> import torch
>>> from cutcutcodec.core.filter.audio.fir import FilterAudioFIR
>>> from cutcutcodec.core.generation.audio.noise import GeneratorAudioNoise
>>> (stream_in,) = GeneratorAudioNoise(0).out_streams
>>> stream_in.snapshot(0, 48000, 4)
FrameAudio(0, 48000, 'stereo', [[ 0.44649088,  0.8031031 , -0.25397146,
                                 -0.1199106 ],
                                [-0.8036704 ,  0.72772765,  0.17409873,
                                  0.42185044]])
>>> (stream_out,) = FilterAudioFIR([stream_in], torch.tensor([1, 0, -.5]), 48000).out_streams
>>> stream_out.snapshot(0, 48000, 4).to(torch.float16)
FrameAudio(0, 48000, 'stereo', [[ 0.4465 ,  0.803  , -0.4773 , -0.5215 ],
                                [-0.8037 ,  0.7275 ,  0.576  ,  0.05798]],
                               dtype=torch.float16)
>>>

Initialise and create the class.

Parameters

in_streamstyping.Iterable[Stream]

Transmitted to cutcutcodec.core.classes.filter.Filter.

firtorch.Tensor

The impulsional response, 1d vector.

fir_rateint

The samplerate of the impulsional response.

static decode_fir(fir: str) Tensor[source]

Decode the encoded fir.

static encode_fir(fir: Tensor) str[source]

Encode the fir tensor into a jsonisable string.

property fir: Tensor

Return the impulsional response, 1d vector.

property fir_rate: int

Return the sample rate of the impulsional response.

resample_fir(rate: int) Tensor[source]

Resample the fir to the right rate.

It can be overwritten.