Song Recommendation Project
This is what I posted in the Creative Crazy Ideas thread
Here is my idea. I want to make a software where you input an mp3 and the software analyzes it and returns a list of songs which are similar in style/genre.And this is what Rupam Sir replied
I plan to achieve this by associating 'tags' with each song in the database. These 'tags' can be many as desired (for better results). A track can have 'tags' of the type 'Rock song', 'Male singer', 'Over 5 minutes long', 'Is in the key of A', 'Has a guitar solo' etc.
So the software analyzes the input track, generates tags for it and then returns from the database a list of songs where the tags match.
The main problem will be the generation of the 'tags'. All 'tags' will be different and will have to be done on a case by case basis.
For example if the software analyzes a track and finds out that the track contains distorted guitars, drums and bass then tag of 'rock' could be applied to it. If it contains only synthesizers it could be said to be 'electronic music'. If the vocal track is found to be female the tag of 'female singer' could be applied.
So my first question is: Is there a way to find out what instruments are there in a track? By analyzing a waveform can we make out if there are multiple instruments?
Since I have MIDI files for every note of most instruments, will this idea work: You analyze a waveform and find out there are different instruments (if it can be done). You have no idea what these instruments are but you know their frequency. You compare a particular instrument (Again, don't know if it can be isolated or not) with the MIDI files of similar frequency till you get a match (Don't know what property to match) and then you can say such and such instrument is present.
1. Take AudioI've created this thread to have a separate thread for asking doubts and posting updates.
2. Perform FFT.
3. Apply Filter
4. Extract Different frequency Bands. Take their statistics. We call them features. Input the tags for this feature set.
5. Build a good database with such feature set. Then run fuzzy classifier for Input song's features.
0