Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 1 day ago
JSON representation
DSP algorithms for chord detection + key estimation
- Host: GitHub
- URL: https://github.com/sevagh/chord-detection
- Owner: sevagh
- License: mit
- Created: 2019-07-16T02:00:05.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-07-14T02:09:53.000Z (over 1 year ago)
- Last Synced: 2024-04-22T12:32:39.553Z (7 months ago)
- Topics: autocorrelation, chords, chromagram, dsp, polyphonic, signal-processing
- Language: Python
- Homepage:
- Size: 3.76 MB
- Stars: 98
- Watchers: 1
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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._