Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sevagh/chord-detection

DSP algorithms for chord detection + key estimation
https://github.com/sevagh/chord-detection

autocorrelation chords chromagram dsp polyphonic signal-processing

Last synced: about 2 months ago
JSON representation

DSP algorithms for chord detection + key estimation

Awesome Lists containing this project

README

        

# chord-detection

This repository is an MIT-licensed collection of multipitch/polyphonic instrument chord and key detection methods, implemented from academic papers using Python.

## Usage

Pip install it from the git url:
```
$ pip install git+https://github.com/sevagh/chord-detection.git
```

This installs the library `chord_detection` and the command-line tool `chord-detect`:
```
$ chord-detect
usage: chord-detection [-h] [--key] [--displayplots DISPLAYPLOTS] [--method METHOD] input_path
chord-detection: error: the following arguments are required: input_path
```

Run tests:
```
$ python ./tests/gen_test_clips.py
$ python -m unittest
```

## Methods

The results displayed come from a wav clip of a piano C major chord. The outputs are the summed chromagrams across all the frames, normalized to 9 (the biggest single-digit number), in a 12-digit chroma vector string.

The expected notes of a C major chord are C E G, so the expected answer should resemble `C000E00G0000`, where `C > E, C > G`. The values of C, E, G are specific to the method being used, but it's some representation of the energy of the detected pitch, e.g. spectral energy, summed FFT.

### ESACF (Tolonen, Karjalainen)

```
reference: C000E00G0000
computed: 900003001000, key: Cmaj
```

![esacf](.github/piano_c_1.png)

_T. Tolonen and M. Karjalainen, "A computationally efficient multipitch analysis model," in IEEE Transactions on Speech and Audio Processing, vol. 8, no. 6, pp. 708-716, Nov. 2000._

_V. Zenz and A. Rauber, "Automatic Chord Detection Incorporating Beat and Key Detection," 2007 IEEE International Conference on Signal Processing and Communications, Dubai, 2007, pp. 1175-1178._

### Harmonic Energy (Stark, Plumbley)

```
reference: C000E00G0000
computed: 921111111111, key: Cmin
```

![harmeng](.github/piano_c_2.png)

_M Stark, Adam and Plumbley, Mark., "Real-Time Chord Recognition for Live Performance," in Proceedings of the 2009 International Computer Music Conference (ICMC 2009), Montreal, Canada, 16-21 August 2009._

### Iterative F0 (Klapuri, Anssi)

```
reference: C000E00G0000
computed: 900301000000, key: Cmin
```

![iterativef0](.github/piano_c_3.png)

_Klapuri, Anssi, "Multipitch Analysis of Polyphonic Music and Speech Signals Using an Auditory Model," IEEE TRANSACTIONS ON AUDIO, SPEECH, AND LANGUAGE PROCESSING, VOL. 16, NO. 2, FEBRUARY 2008 255._

_Klapuri, Anssi. "Multiple Fundamental Frequency Estimation by Summing Harmonic Amplitudes." ISMIR (2006)._

### Prime-multiF0 (Camacho, Kaver-Oreamuno)

```
reference: C000E00G0000
computed: 951000000002, key: Cmin
```

![primemultif0](.github/piano_c_4.png)

_Camacho, A, Oreamuno, I, "A multipitch estimation algorithm based on fundamental frequencies and prime harmonics," Sound and Music Computing Conference 2013._