I want to write an algorithm in C++ which is capable of identifying specific features within a single song, e. g. the sound of a drum which is played 100 times during 5 min.
State of the project
So the first thing I did was to import my *.wav-file, perfrom a step-wise FFT of the signal in order to create a time-frequency-pattern as shown in the figure below (x-axis: frequency, y-axis: time [ms], color: magnitude [dB]).
Here you can see the magnitude of a single frequency over time:
In the second picture one can easily see, that the pattern of the drum stays the same and is only shifted in time (peaks).
If I would only have this single song, it would be straightforward: I could search for points reaching a specific dB value and read out the corresponding time. However, I want to apply this algorithm to many different song files and don't want to manually adapt the values each time.
Which method could I use to identify such features? I thought about pattern recognition by neural networks, but I am not sure if this is the most appropriate solution.
I already read wikipedias article about pattern recognition (I am not allowed to make more than two links, sorry for that) basically saying that there are many different algorithm, but I think I need some help selecting the most appropriate one for my problem.
My current approach is to use blob detection in order to read out different areas like the bass features and feed the blobs and their properties to a Neural Network in order to categorize them.
Thank you in advance!
Links Sorry for the missing http://, i am not allowed to post more than two links
t-f-relationsip of music in general: ecee.colorado.edu/~mathys/ecen1200/sound/sounds2006_6pp.pdf
time frequency analysis of music: en.wikipedia.org/wiki/Time–frequency_analysis_for_music_signals
perhaps helpful: en.wikipedia.org/wiki/Harmonic_pitch_class_profiles
might be helpful, but I don't understand it: resources.mpi-inf.mpg.de/departments/d4/teaching/ss2009/mp_mm/2009_MuellerMeinard_Lecture_MusicProcessing_AudioStructure_handouts.pdf