librosa.feature.chroma_cens(y=None, sr=22050, C=None, hop_length=512, fmin=None, tuning=None, n_chroma=12, n_octaves=7, bins_per_octave=None, cqt_mode='full', window=None, norm=2, win_len_smooth=41)[source]

Computes the chroma variant “Chroma Energy Normalized” (CENS), following [R7777].

[R7777]Meinard Müller and Sebastian Ewert Chroma Toolbox: MATLAB implementations for extracting variants of chroma-based audio features In Proceedings of the International Conference on Music Information Retrieval (ISMIR), 2011.

y : np.ndarray [shape=(n,)]

audio time series

sr : number > 0

sampling rate of y

C : np.ndarray [shape=(d, t)] [Optional]

a pre-computed constant-Q spectrogram

hop_length : int > 0

number of samples between successive chroma frames

fmin : float > 0

minimum frequency to analyze in the CQT. Default: ‘C1’ ~= 32.7 Hz

norm : int > 0, +-np.inf, or None

Column-wise normalization of the chromagram.

tuning : float

Deviation (in cents) from A440 tuning

n_chroma : int > 0

Number of chroma bins to produce

n_octaves : int > 0

Number of octaves to analyze above fmin

window : None or np.ndarray

Optional window parameter to filters.cq_to_chroma

bins_per_octave : int > 0

Number of bins per octave in the CQT. Default: matches n_chroma

cqt_mode : [‘full’, ‘hybrid’]

Constant-Q transform mode

win_len_smooth : int > 0

Length of temporal smoothing window. Default: 41


chroma_cens : np.ndarray [shape=(n_chroma, t)]

The output cens-chromagram

See also

Compute a chromagram from a constant-Q transform.
Compute a chromagram from an STFT spectrogram or waveform.


Compare standard cqt chroma to CENS.

>>> y, sr = librosa.load(librosa.util.example_audio_file(),
...                      offset=10, duration=15)
>>> chroma_cens = librosa.feature.chroma_cens(y=y, sr=sr)
>>> chroma_cq = librosa.feature.chroma_cqt(y=y, sr=sr)
>>> import matplotlib.pyplot as plt
>>> plt.figure()
>>> plt.subplot(2,1,1)
>>> librosa.display.specshow(chroma_cq, y_axis='chroma')
>>> plt.title('chroma_cq')
>>> plt.colorbar()
>>> plt.subplot(2,1,2)
>>> librosa.display.specshow(chroma_cens, y_axis='chroma', x_axis='time')
>>> plt.title('chroma_cens')
>>> plt.colorbar()
>>> plt.tight_layout()

(Source code)