Featured post
java - Help with using FFT to determine frequency of an audio sample -
i'm developing percussion tutorial program. program requires can determine drum being played, going analyse frequency of drum recording , see if frequency within given range.
i have been using apache math commons implementation fft far (http://commons.apache.org/math/) question is, once preform fft, how use array of results calculate frequencies contained in signal?
note: have tried experimenting using autocorrelation, didn't seem work sample drum kit
any or alternative suggestions of how determine drum being hit appreciated
edit: since writing i've found great online lesson on implementing fft in java time/ frequency transformations spectrum analysis in java
in area of music information retrieval, people use related metric known mel-frequency cepstral coefficients (mfccs).
for n-sample segment of signal, take fft. resulting n samples transformed set of mfccs containing, say, 12 elements (i.e., coefficients). 12-element vector used classify instrument, including drum used.
to supervised classification, can use support vector machine (svm). libsvm commonly used library has java compatibility (and many other languages). train svm these mfccs , corresponding instrument labels. then, test feeding query mfcc vector, , tell instrument is.
so basic procedure, in summary:
- get fft.
- get mfccs fft.
- train svm mfccs , instrument labels.
- query svm mfccs of query signal.
check java packages these things. (they must exist. don't know them.) relatively, drum transcription easier other instrument groups, optimistic work.
for further reading, there whole bunch of articles on drum transcription.
- Get link
- X
- Other Apps
Comments
Post a Comment