ChordsDetection

standard mode | Tonal category

Inputs

  • pcp (vector_vector_real) - the pitch class profile from which to detect the chord

Outputs

  • chords (vector_string) - the resulting chords, from A to G

  • strength (vector_real) - the strength of the chord

Parameters

  • hopSize (integer ∈ (0, ∞), default = 2048) :

    the hop size with which the input PCPs were computed

  • sampleRate (real ∈ (0, ∞), default = 44100) :

    the sampling rate of the audio signal [Hz]

  • windowSize (real ∈ (0, ∞), default = 2) :

    the size of the window on which to estimate the chords [s]

Description

This algorithm estimates chords given an input sequence of harmonic pitch class profiles (HPCPs). It finds the best matching major or minor triad and outputs the result as a string (e.g. A#, Bm, G#m, C). The following note names are used in the output: “A”, “Bb”, “B”, “C”, “C#”, “D”, “Eb”, “E”, “F”, “F#”, “G”, “Ab”. Note:

  • The algorithm assumes that the sequence of the input HPCP frames has been computed with framesize = 2*hopsize

  • The algorithm estimates a sequence of chord values corresponding to the input HPCP frames (one chord value for each frame, estimated using a temporal window of HPCPs centered at that frame).

Quality: experimental (prone to errors, algorithm needs improvement)

References:

[1] E. Gómez, “Tonal Description of Polyphonic Audio for Music Content Processing,” INFORMS Journal on Computing, vol. 18, no. 3, pp. 294–304, 2006.

[2] D. Temperley, “What’s key for key? The Krumhansl-Schmuckler key-finding algorithm reconsidered”, Music Perception vol. 17, no. 1, pp. 65-100, 1999.

Source code

See also

ChordsDetection (streaming) HPCP (standard) HPCP (streaming) RMS (standard) RMS (streaming)