# RhythmTransform¶

streaming mode | Rhythm category

## Inputs¶

`melBands`

(vector_real) - the energy in the melbands

## Outputs¶

`rhythm`

(matrix_real) - consecutive frames in the rhythm domain

## Parameters¶

`frameSize`

(integer ∈ (0, ∞), default = 256) :the frame size to compute the rhythm trasform

`hopSize`

(integer ∈ (0, ∞), default = 32) :the hop size to compute the rhythm transform

## Description¶

This algorithm implements the rhythm transform. It computes a tempogram, a representation of rhythmic periodicities in the input signal in the rhythm domain, by using FFT similarly to computation of spectrum in the frequency domain [1]. Additional features, including rhythmic centroid and a rhythmic counterpart of MFCCs, can be derived from this rhythmic representation.

The algorithm relies on a time sequence of frames of Mel bands energies as an input (see MelBands), but other types of frequency bands can be used as well (see BarkBands, ERBBands, FrequencyBands). For each band, the derivative of the frame to frame energy evolution is computed, and the periodicity of the resulting signal is computed: the signal is cut into frames of “frameSize” size and is analyzed with FFT. For each frame, the obtained power spectrums are summed across all bands forming a frame of rhythm transform values.

Quality: experimental (non-reliable, poor accuracy according to tests on simple loops, more tests are necessary)

- References:
[1] E. Guaus and P. Herrera, “The rhythm transform: towards a generic rhythm description,” in International Computer Music Conference (ICMC’05), 2005.

## Source code¶

## See also¶

BarkBands (standard) BarkBands (streaming) ERBBands (standard) ERBBands (streaming) FFT (standard) FFT (streaming) FrequencyBands (standard) FrequencyBands (streaming) MFCC (standard) MFCC (streaming) MelBands (standard) MelBands (streaming) RhythmTransform (standard)