Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

Finding the strongest beat in a sound wave using autocorrelation

1 vue (au cours des 30 derniers jours)
AwedBy Matlab
AwedBy Matlab le 25 Nov 2012
I have a sound wave representing a piano piece played at a steady tempo, and would like to get a graph of the saliency of each beat. I understand that this is done by plotting the autocorrelation function, however I don't quite understand why a graph of r coefficients against each possible lag value (which is, as far as I udnerstand, the deffinition of an autocorrelogram) would have anything to do with beats.
The following code produces a graph that doesn't in any way suggest anything to do with the actual steady beat of the piece (60 BPM):
[y,Fs] = wavread('d:\bach.wav');
[r,lags]=xcorr(y,'coeff');
plot(lags,r)
Clearly I'm understanding autocorrelation wrongly. For instance, in this very simple example http://upload.wikimedia.org/wikipedia/commons/e/ed/Acf_new.svg, the frequency of the sine hidden in noise is nowhere visible from the autocorrelation graph - or is it? Furthermore, that frequency would actually be the pitch of the sound, and not any rhythm-related measure!
Anticipated thanks for any clarifications!!
  2 commentaires
Daniel Shub
Daniel Shub le 26 Nov 2012
I am closing since this doesn't seem to be a MATLAB question, but rather an audio processing theory question.
AwedBy Matlab
AwedBy Matlab le 26 Nov 2012
Thanks for your input Daniel, however I do want to get this problem solved in Matlab (with or without clarification on the theoretical aspect), so if you don't mind could you leave the question open, I appreciate it.

Réponses (1)

AwedBy Matlab
AwedBy Matlab le 26 Nov 2012
Still haven't figured this out, would really appreciate any thoughts from more experienced scientists..

Cette question est clôturée.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by