eozd / libreguitar

Guitar fretboard teacher app that recognizes notes played on a guitar through the sound interface or microphone.
GNU General Public License v3.0
7 stars 1 forks source link

Analyze audio signal chunk to detect which string was played #5

Open eozd opened 3 years ago

eozd commented 3 years ago

Need to do some research on how this can be done. It seems that it might be trickier than finding the frequency via FFT. If all else fails, some ML approaches might be worth looking at.

eozd commented 3 years ago

Status Update

There are several works in the literature that deal with this problem (or very similar other ones). Below is a list of the ones I encountered in my short literature review:

  1. Hjerrild, Jacob Møller, and Mads Græsbøll Christensen. "Estimation of guitar string, fret and plucking position using parametric pitch estimation." ICASSP 2019-2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2019.
  2. Michelson, Jonathan, Richard Stern, and Thomas Sullivan. "Automatic guitar tablature transcription from audio using inharmonicity regression and bayesian classification." Audio Engineering Society Convention 145. Audio Engineering Society, 2018.
  3. Dittmar, Christian, Andreas Männchen, and Jakob Abeber. "Real-time guitar string detection for music education software." 2013 14th International Workshop on Image Analysis for Multimedia Interactive Services (WIAMIS). IEEE, 2013.
  4. Abeßer, Jakob. "Automatic string detection for bass guitar and electric guitar." International Symposium on Computer Music Modeling and Retrieval. Springer, Berlin, Heidelberg, 2012.

In addition, reference [1] seems to provide the MATLAB code, trained models and the experimental data at https://vbn.aau.dk/en/publications/estimation-of-guitar-string-fret-and-plucking-position-using-para

Next Steps

Given the promising accuracy and real-time detection performance described in [1] combined with the availability of the source code, it seems like a natural idea to try this approach within the application. Generalizibility of the pretrained models still needs to be tested however. In case of significant deterioration, a simple instrument calibration step can be added which should be rather quick thanks to the employed methodology in [1].

github-actions[bot] commented 3 years ago

Stale issue message