PDA

View Full Version : Non Programmer: Idea for a Program


ShyStar
12-05-2009, 02:39 PM
Was thinking before as I was trying to make a music beat that it would be handy to have a program that takes a music beat and compares it to existing music and tells you how much it sounds like to other releases.

Was thinking this may not be such a hard thing to do considering there is already music recognition software easily accessible (even on my phone) to 'name that song'.

Does anything like this already exist and is this something that anyone would take on? I think it's a good idea for those that don't want to inadvertently 'copy' the same sound as someone else and those that want to argue if someone sounds like someone else.

BastardLunatic
12-05-2009, 02:52 PM
There is something similar already.
Database of all songs with all top charts and what not.
It has a software that values a song and how much potential it had to be a next hit.

optl
12-13-2009, 07:47 PM
This type of thing really interests me and is extremely complicated. Pandora, itunes, and other programs/websites have stuff like this to find music you like. Music is just sound waves and a program like this would have to analyze waves and mathematically calculate similarities to other sound waves.

My dream is to make a program where you input a piece of guitar oriented music and the program outputs guitar tab for that music. The reason this is so complicated is because a guitar can play the same note in different ways.

sevenTwo
12-14-2009, 06:30 PM
My dream is to make a program where you input a piece of guitar oriented music and the program outputs guitar tab for that music. The reason this is so complicated is because a guitar can play the same note in different ways.

lol, that's the easy part. (Honestly, it's basically a Dijkstra's algorithm tweaked a little.)

Separating the guitar track from the rest of the instruments in a track is what makes that project infeasible.

optl
12-14-2009, 06:36 PM
lol, that's the easy part. (Honestly, it's basically a Dijkstra's algorithm tweaked a little.)

Separating the guitar track from the rest of the instruments in a track is what makes that project infeasible.

Not really. Just because one instance of a note is closer than another, doesn't mean you would use the closer one. On a guitar 2 instances of the same note can be differentiated by the "thickness" of the tone.

NamelessNom4d
12-14-2009, 06:46 PM
This is not easy to implement. It seems easy to people who are non-programmers, but that is because comparing things like music is very easy for humans to do. Generally what is easy for humans to do (like speech and pattern recognition) is really hard for computers to do, but what is really hard or impossible for humans to do is extremely easy for computers to do (like generate 100,000 prime numbers).

sevenTwo
12-14-2009, 09:28 PM
Not really. Just because one instance of a note is closer than another, doesn't mean you would use the closer one. On a guitar 2 instances of the same note can be differentiated by the "thickness" of the tone.

I've played guitar for a number of years and I'm fully aware of the subtle differences between playing the same notes in different positions of the guitar. I am also fully aware of every two guitars sounds different from each other. Some guitars are made to sound fretted even when played in open position. How do you distinguish where the note is played and fully tab out that if they sound consistent throughout the neck?

Instead of worrying about which string the note was played on, don't bother worrying about it and just implement a shortest path. The program would still generate one of the ways to play the piece. GuitarPro5 does exactly that but I think they can improve on their transposing algorithm much better.

Again, extracting an instrument from tracks filled with different instruments and overlapping frequencies is far more troublesome.

optl
12-14-2009, 11:07 PM
Shortest path would only work for single note runs and it's pretty easy to find those just with your ear. I play acoustic fingerstyle which means I play the bass/harmony/melody together; often I play things in different/awkward positions because it sets me up for the next position.

sevenTwo
12-15-2009, 03:35 AM
Shortest path would only work for single note runs and it's pretty easy to find those just with your ear. I play acoustic fingerstyle which means I play the bass/harmony/melody together; often I play things in different/awkward positions because it sets me up for the next position.

You can do that with multiple notes... it's just a matter of partitioning the notes and finding shortest paths between multiple notes and the next notes. Awkward positioning or not, a player wants to be able to play a piece with minimal movement. :confused:

pygar
12-15-2009, 03:38 AM
There is an iPhone app that lets you find out any song playing just by recording a snippet of it. It connects to an online database and tells you what the song is.

I think it gives you a list of choices.

You can just run the beat you created in the app and see what pops up, i guess.

optl
12-15-2009, 03:56 AM
Example: You are playing a C chord in first position. Now you need to switch to Dm. The closest Dm is in first position, but after the Dm you need to switch to a G chord off the 7th fret. The only way (for some people) to switch to the G chord cleanly so far up the neck is to play the Dm off of the 5th fret.

Hi-Guy
12-15-2009, 04:22 AM
I saw something like this on the Research Channel, and it was awesome. Some college girl's project did what you're describing, and it was public and everything, but I forgot the name. :(

You'd submit a short blurb to the site and it'd use algorithms to compare notes, beats, key signatures, etc. to songs in its database. On the TV presentation, the girl made a recording of her humming the beginning of a classical song and sent it over, and it emailed back a list of candidates.

It was like TinEye.com, but for audio.

sevenTwo
12-15-2009, 06:16 AM
Example: You are playing a C chord in first position. Now you need to switch to Dm. The closest Dm is in first position, but after the Dm you need to switch to a G chord off the 7th fret. The only way (for some people) to switch to the G chord cleanly so far up the neck is to play the Dm off of the 5th fret.

which wouldn't be a problem since the G chord will have a note an octave higher than the open G chord. There are only about 2 or 15 or so different permutations with the same notes that are "playable". Therefore, it would transpose to C chord in the 3rd position, Dm in the 5th position, and G in the 7th position since that's the shortest path.

optl
12-15-2009, 06:32 AM
which wouldn't be a problem since the G chord will have a note an octave higher than the open G chord. There are only about 2 or 15 or so different permutations with the same notes that are "playable". Therefore, it would transpose to C chord in the 3rd position, Dm in the 5th position, and G in the 7th position since that's the shortest path.

The the 7th position G has an extra note, but what if you don't play that high note, what if you are playing the exact same notes in the G chord on the 7th position as you would with the G in the 1st. Which happens constantly, when I play. The program would not only have to pick out notes, but it would have to pick out where and on which string each note is being played.

ShyStar
12-16-2009, 01:51 AM
This is not easy to implement. It seems easy to people who are non-programmers, but that is because comparing things like music is very easy for humans to do. Generally what is easy for humans to do (like speech and pattern recognition) is really hard for computers to do, but what is really hard or impossible for humans to do is extremely easy for computers to do (like generate 100,000 prime numbers).

There's already software that determines what song you are listening to after recording like 15 seconds of sound - Is it really that hard to have that same software say "well that sounds just like xxxx"

What Slartibartfast said.

I don't see how it's any different to 'likeness' things for photos.

ShyStar
12-16-2009, 01:57 AM
Also in Garage Band you can convert your creations to sheet music right? Why would it be so hard to convert the files and scan other creations for % similarities?

Fractals
12-24-2009, 08:47 PM
Also in Garage Band you can convert your creations to sheet music right? Why would it be so hard to convert the files and scan other creations for % similarities?

I'm not sure, but maybe Garage Band had the sheet music already worked out, and just puts it all together?

It seems like what you want to do would be the "name that songs" with a lower sensitivity (more false positives) and the ability to only compare certain frequencies, so you can compare just the beat or whatever.

coolstorybro
12-28-2009, 10:59 AM
There is an iPhone app that lets you find out any song playing just by recording a snippet of it. It connects to an online database and tells you what the song is.

I think it gives you a list of choices.

You can just run the beat you created in the app and see what pops up, i guess.

Gracenote, sony erricson's also do it