GNOME Bugzilla – Bug 311571
Add CD-TEXT metadata backend
Last modified: 2008-02-11 10:28:44 UTC
If SJ had a CD-TEXT metadata backend, then it could use that information if available instead of querying musicbrainz.
Created attachment 52996 [details] [review] Prototype patch Attaching a prototype patch which will be applied once I've sorted out a few issues and have branched.
Comment on attachment 52996 [details] [review] Prototype patch This is committed to CVS HEAD now, so I just need to hook it into the rest of the application now.
Many comercial CD's that I put on my laptop the sound-juicer reports wrong info. This is a bit stupid because they all have CD-TEXT information. Also all my compilation recorded CD's that have CD-TEXT are reporting bad names because sound-juicer is using CDDB also (?!!!). This is very easy to reproduce: 1- Burn an Audio CD with some tracks from another CD or mp3 with CD-TEXT enabled. After burning the the Audio CD you will have a custom CD; 2- Just insert the Audio CD and the Sound Juicer will pop up with wrong track information. The Sound Juicer will report wrong track information because it does not read CD-TEXT info and goes directly to the CDDB internet database. This bug is from one year ago for the 2.11.x branch but this continue to happen in the 2.16.x release.
CD-TEXT isn't enabled by default, which is why its looking up the track index on Musicbrainz.
How can i enable it then?
You edit the source of sj-main to construct a CD-TEXT backend rather than a MusicBrainz backend. Once you do this there is no way to lookup tracks using MusicBrainz, which is why the code isn't enabled. Basically SJ needs to query multiple sources, and this hasn't been done yet.
k3b asks for the user if he wants use CD-TEXT or CDDB. I would gladly help you to develop this if I could. What I think it could be done is: - detect if inserted CD has CD-TEXT; - ask for the user what action he wants to do (CD-TEXT or MusicBrainz); I see that there is already a sj-metadata-cdtext source file that can be used right?
If there are multiple results from MusicBrainz a dialog will popup asking the user to pick one. This should be extended to display the source of the data (MusicBrainz, CD-TEXT, FreeDB[1]) and used when there is both CD-TEXT and Musicbrainz hits. Then the dialog should be extended to show the track listings, so the user can make a more informed choice. Patches are always welcome! If you want more advise on how to proceed, just ask. [1] MusicBrainz will proxy to FreeDB if it has no data, and this is detected in SJ
I'm a Java/C# developer and I've developed also in other languages. But never in C. If you think that is enough then just give me a good IDE for developing and debugging that I'll manage do compile, run the code and I can try something out.
I use emacs, a terminal, and gdb as my IDE. You can use whatever you want.
(In reply to comment #8) > If there are multiple results from MusicBrainz a dialog will popup asking the > user to pick one. This should be extended to display the source of the data > (MusicBrainz, CD-TEXT, FreeDB[1]) and used when there is both CD-TEXT and > Musicbrainz hits. The code should obviously only read from the CD-TEXT info if there's no network, and we'd need to teach Rhythmbox/nautilus-cd-burner about writing CD-TEXT info.
I don't agree with you. It should be asked to the user or configured in the preferences. I also prefer going directly to CD-TEXT because the information is already there why bother querying MusicBrainz?? But I can gladly accept a configurable setting in the preferences dialog. I've several commercial CDs, copies and all my custom compilations reporting wrong track names. k3b cleverly asks for a user decision in these cases. Also in some cases there are a list of options for the same CD. The user should be presented with a pop up list to choose the correct one. I don't know if SJ has this feature or not.
(In reply to comment #12) > I don't agree with you. It should be asked to the user or configured in the Read more carefully. I said: "no network, read CD-TEXT and don't try to read off Musicbrainz/FreeDB (ie. the network)", which I think you'd have a really hard time to find anything disagreeable about.
sorry but you wrote was: "only read from the CD-TEXT info if there's no network". What I understood is that ONLY when there's no network that SJ tries to read CD-TEXT. If I understood correctly what you've wrote than I must not agree with you. I think the user should ALWAYS, if no default preference exists, be asked for a decision. When there's no network, and ONLY then (or when a preference exist), that there's no need for a user decision and go directly to CD-TEXT info (or the default in the preferences). Sorry if I didn't understand or write good english. I'm not a native english speaker.
1) there will not be a preference involved, ever. 2) in the no-network case, the Musicbrainz backend should fail straight away without timing out. I guess we'll need to link to libNM for that. 3) otherwise when there is network, always read CD-TEXT (and fail 90% of the time, I've yet to find a commercial CD with CD-TEXT) and add the CD-TEXT data to the musicbrainz data. If there is more than one result, the user is asked to pick (as it does now)
As the CD-TEXT backend is committed I'm closing this, but I've created a new bug to track the integration of it.