HPCP - Harmonic Pitch Class Profile vamp plug-in


HPCP is a vamp plug-in for audio feature extraction that computes the instantaneous evolution of HPCP (Harmonic Pitch Class Profile) of a signal. 

The HPCP is an approach for chroma feature estimation which represents the pitch content of polyphonic music signals, mapped to a single octave. HPCP have been extensively used for several final applications such as key and chord estimation, similarity computation (cover version identification) and music classification.

Full details of the algorithm can be found in the following papers:

NOTE: The main difference between this implementation and the original algorithm is that this implementation does not perform automatic tuning frequency estimation. The reference tuning frequency is defined as an input parameter.

We would highly appreciate if scientific publications of works partly based on the HPCP plug-in cite the above publications. 

HPCP vamp plug-in has been made possible by the kind support of the following entities

Graphical User Interface


















The HPCP Vamp plug-in used in Sonic Visualiser. Top pane: waveform. Second pane: spectrogram. Third pane: HPCP.




Audio file in a format supported by your Vamp host (e.g. wav, mp3, ogg)


A 2D time-frequency representation of HPCP over time. The HPCP covers one octave divided into the specified number of bins (see parameters section).


  • Number of bins: Interval resolution in number of bins per octave. 12 would correspond to 1 bin per semitone. Default value = 120 bins.
  • Lowest frequency: Lowest limit of the considered frequency range (Hz). Default value = 50 Hz.
  • Highest frequency: Highest limit of the considered frequency range (Hz). Default value = 5000 Hz.
  • Reference tuning frequency: Reference frequency in Hz for the first HPCP bin. Default value = 440 Hz.
  • Peak mag threshold: Magnitude threshold for spectral peak detection (dB). Default value = -100 dB.
  • Harmonics per peak: Number of sub-harmonics considered for each spectral peak when mapping it to HPCP bins. Default value = 8.
  • Spectral Whitening: Perform a spectral whitening pre-processing step before spectral peak detection. Default value = 1 (true).
  • Non-linear: Apply a non-linear compression to the HPCP vector. Default value = 0 (false).
  • Two frequency bands: 0 = single band, 1 = compute HPCP in two different bands (0-500 Hz) and (500-22050 Hz), normalize the obtained HPCP vectors and then average and normalize to obtain the final HPCP vector. Default value = 1.



Please go to the Download page