topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • June 15, 2019, 09:45 PM
  • Proudly celebrating 13 years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - toastymah [ switch to compact view ]

Pages: [1]
1
I used to record a lot of music via the sound card, and have the recording program auto-name the tracks. But somehow the various programs never managed to name any Danish track, so over time I lost interest.

Will any of the solutions you are thinking about define anything but "American" music?


So, there are several different ways to accomplish that and I have some suspicions as to what you had working / didn't have working there.  First, there exists several programs that can rip from sound cards as standalone applications or as plugins to media players.  'Ripper' for WinAmp comes to mind.  The majority of these rippers will simply look for meta data contained in the file/stream and build you a file with the song name, artist, etc., and append other found meta data to the file.  In these cases, there is no real audio fingerprinting being done.  The data is either there for the ripping application to grab or it is not.

The other option is the type of application that I made; which rips a sample from sound card and queries some centralized database for song information.  Echoprint was amazing at this because EchoNest created a tool to work in bulk to build their samples, which ultimately were stored in the smallest necessary array.  Further, the tool did not need to listen to the music at the speed you do, it could do what it needed to do very fast.  With that encoding, one would need to query EchoNest's servers for the closest found code and they gave back a JSON object with all kinds of great information (artist, song name, album, 'hotness').  This could be used to rename files and/or add meta data.

The obvious question is, "How do they know what the meta data for this song is?".  As far as we know, they had relied on the community to tell them with their bulk encoding/decoding and connecting to EchoNest to tell them what those songs were.  That's pretty much what their bulk encoder did, it grabbed everything about the files you had and allowed you to send that to them.  If your files had meta data then they got song encodings with accompanying meta data.  Also, it's likely that the EchoNest partners (one of which is Spotify) is providing additional information to them.  This is speculative, however, so I digress.

For your Danish track issue, the problem has different possible reasons.  First, you may want to check how your application is actually attaching meta data to your music, whether offline or online.  If the program works with files and can do it's job offline, then there's a pretty good chance that it's simply targeting meta data.  In this case, you will want to find what is different about your Danish tracks as opposed to your others.  Something as silly as the Danish tracks using UTF-8 in their meta data while your other tracks using Unicode could be all the reason for your issue.  If, however, you find that your ripper only works to identify tracks online, then it is likely that it is fingerprinting the audio and connecting to a database for meta data information.  In this case, you're somewhat stuck because you are at the mercy of the robustness of identifying database.  For example, MooMa claims to have 7 million songs in their database.  Spotify holds more than 20 million songs, so just that service alone would cause MooMa to potentially have less than 50% accuracy.  This actually ends up not being the case because popular songs are identified more frequently and the more obscure ones are least likely to be identified.  So in your case, if your software is connecting to a centralized database, then you would just need to be hopeful that there are enough Danish music lovers to have previously identified your song and uploaded that meta data to the server at least once.

I hope this helps and makes things a little bit clearer.

although this isn't something i'm interested in, just wanted to thank toastymah for a cool post -- it's always nice to hear from coders who have figured something out when it's outside my area of expertise. :up:

Thanks for the kudos.  Happy to help when I can.

2
So, you want software that can record from your soundcard then do music identification, right?  Good.  I did too... in 2011.  So I wrote that software and made it integrate into Microsoft Lync's API so that it would scrobble what I was listening to in my status bar.  Worked really well.

So here's the semi bad news.  My software used Echoprint to do identification.  If you don't know what that is then definitely look it up.  The tough part to take in, however, is that they discontinued their API for identify in January of this year.

Fear not, though.  There are other options; Two specifically.  MooMa.sh has an API that is supposed to map directly like Echoprint would, which would be fantastic.  Their API is free and this is my top choice.  Only, I'm having trouble getting an API key from them.  C'est la vie...  Option 2 is a service which I already have an API key for: doreso.com.  Now, this service is well and fine, much like Echoprint and MooMa, but there is a considerable difference.  With EchoPrint and MooMa, the software you use must first encode an audio sample into some base64'd array before making a GET request with it tacked onto the end of a parameter.  Simple HTTP request that returns a JSON object.  Doreso returns JSON too, but they don't want a base64 array of EchoPrint encoding.  Instead, they just want the whole sample as a wav file uploaded with each request.  While this is completely feasible by making some non-trivial changes to the source, I'm not super thrilled about having to send that much data per request.  There's that whole pesky distribution of recorded material to third parties legal gray area too.  So, while the later is technically possible, I'm much more inclined to wait for MooMa to send a key my way.

I'm not sure if anyone is still interested in this topic any more so if you are, please reply back here and I'll know it's not dead.  If so, feel free to ask or comment.  It would be good to see if there are people that may also benefit from some of this code.

Pages: [1]