chroma#

class diffsptk.ChromaFilterBankAnalysis(n_channel, fft_length, sample_rate, norm=inf, use_power=True)[source]#

Chroma-filter bank analysis.

Parameters:
n_channelint >= 1

Number of chroma-filter banks, \(C\).

fft_lengthint >= 2

Number of FFT bins, \(L\).

sample_rateint >= 1

Sample rate in Hz.

normfloat

Normalization factor.

use_powerbool

If True, use power spectrum instead of amplitude spectrum.

forward(x)[source]#

Apply chroma-filter banks to STFT.

Parameters:
xTensor [shape=(…, L/2+1)]

Power spectrum.

Returns:
outTensor [shape=(…, C)]

Chroma-filter bank output.

Examples

>>> sr = 16000
>>> x = diffsptk.sin(500, period=sr/440)
>>> stft = diffsptk.STFT(frame_length=512, frame_period=512, fft_length=512)
>>> chroma = diffsptk.ChromaFilterBankAnalysis(12, 512, sr)
>>> y = chroma(stft(x))
>>> y
tensor([[0.1146, 0.0574, 0.0457, 0.0468, 0.0519, 0.0789, 0.1736, 0.4285, 0.7416,
         1.0000, 0.7806, 0.3505]])
diffsptk.functional.chroma(x, n_channel, sample_rate, norm=inf)[source]#

Apply chroma-filter banks to STFT.

Parameters:
xTensor [shape=(…, L/2+1)]

Power spectrum.

n_channelint >= 1

Number of chroma-filter banks, \(C\).

sample_rateint >= 1

Sample rate in Hz.

normfloat

Normalization factor.

Returns:
outTensor [shape=(…, C)]

Chroma-filter bank output.

See also

stft fbank