GSoC 2014 “MusicBrainz support to EasyTAG” Final Report

Hello all,

These 3 months was an awesome experience for me. Working with my mentor David King was a hell lot of learning experience. Also, the experience at GNOME Foundation was great.

In this post I will give a tutorial about how to use MusicBrainz suuport for EasyTAG. Following features has been implemented in this summer:

  • MusicBrainz Dialog
  • Helpful Operations
  • Manual Search
  • Automatic Search
  • Search Selected Files
  • DiscID Search
  • ApplyTAGs

MusicBrainz Dialog: This is how the MusicBrainz Dialog looks:

MbDialog

You can see that it is a lot simpler than CDDB Dialog. There are buttons for all types of search and many other helpful operations buttons.

Helpful Operations: The TreeView in MusicBrainz Dialog is multi-selectable i.e. you can select more than one rows at a time. Following operations have been implemented:

  • Invert Selections: Select a row if it is not selected and vice-versa.
  • Select All: Select all rows.
  • Unselect All: Unselect all rows.
  • Toggle Red Lines: During the course of using MusicBrainz you could see that a row may be displayed in Red Color instead of Black Color, because this rows children have already been downloaded and it will be good to use that already downloaded data. With this Toggle Button you can toggle the state of display of these Red Lines.
  • Stop: Stop a downloading operation in between.
  • Fetch More Results: MusicBrainz doesn’t allow to download all data at a time, instead it will allow us to download only some amount of data. If you didn’t find your expected results in the downloaded data you can use this button to get additional data.
  • BreadCrumb: You can travel through the results using the breadcrumb widget.

Manual Search: Lets say you want to get some information about an Artist or Album or a Track. You can simple type the name of the entity you want to search in the given text box, select the type of entity from combo box and click on the search button. Then just wait and let MusicBrainz Dialog do the work. Here’s an example for it.

SearchSelected

In the above example we have searched for the Album “Waking Up”. What if you want to retrieve its Track? Simple, double click on the row containing you favourite result. Here’s what you will get:

WakingUpTracks

You can see that the BreadCrumb Widget has added a new button with name “Waking Up”. If you want to go back to the results just click on the button “Albums”.

WakingUpRed

Now you could see that one result is being displayed in red line. That is because its results has been already downloaded. Double clicking on it will show the already downloaded results. If you want to re-download the results you can click on Refresh.

Search Selected Files: This feature is helpful when you have a bunch of files and you don’t want to search for them individually. Just select a bunch of files and click on Search Selected Files. Then, MusicBrainz Dialog will group different files into different albums and search these albums over MusicBrainz server. After that you can click on any of the required Albums, view its Tracks and Apply Tags.

I have selected files. 2 albums are searched over MusicBrainz. Below are the results. You can get tracks of any of these albums.

SearchSelected

Tracks of Bridge to Terabithia:

SearchSelectedBridgeToTerabitha

Tracks of Do Your Thing:

SearchSelectedDoYourThing

Going back to the results of album:

SearchSelected2

DiscID Search: What if you have a Disc and want to get its metadata from MusicBrainz? This is where DiscID feature will help you. Insert a Disc into your drive and click on DiscID Search button. You will get all Albums in that Disc.

Here I have searched for DiscID “lwHl8fGzJyLXQR33ug60E8jhf4k-“.

DiscIDSearch

Double clicking on album “Praat geen Poep”:

DiscIDPatGreenPopTracks

 

Automatic Search: Sometimes a user may also require access to FreeDB Database. For this it was decided that”Automatic Search” feature would also be present in new MusicBrainz support. But don’t worry it don’t use FreeDB Servers to get the data. It uses MusicBrainz server to get the results for FreeDB ID. Here’s an example:

Select a few files, Open up the MusicBrainzDialog and click on Automatic Search. This is what I got:

AutomaticSearchResults

Double click on the required album to search it over MusicBrainz Server. And you get the results:

AutomaticSearchNoMoreLies

Now select your favourite No More Lies album and retrieve its tracks:

AutomaticSearchNoMoreLiesTracks

Apply TAGs : To apply tags to selected files you can just select the Tracks you want to apply their tags to. And click on “Apply Tag Changes” button. There are two ways in which tags can be applied:

  • The default way is applied n-th TAG to n-th File. In other words, Tag of first selected Track is applied to first selected File, Tag of 2nd selected Track to 2nd selected File etc.
  •  If you think that above way of applying tag may give you some mismatching. You can check the button “Match lines with the Levenshtien algorithm”. Then for each selected file a best tag among the selected tags will be discovered using http://en.wikipedia.org/wiki/Levenshtein_distance and the tags will be applied.

It may be possible that there are multiple TAGs associated with a Track. In that case MusicBrainz will ask you to pick up the most relevent TAG. In case you did Search Selected Files, then only those selected files will be consider whose Album name is same as the album name of Tag.

For example in the above Automatic Search example, just click on “Apply Tag Changes” button and MusicBrainz will take care of rest.

In all the above examples did you notice that Search Text field is already filled with some text? The reason if a file is already selected in BrowserList of EasyTAG then its album will be automatically added in Search text field. This is easy as you don’t need to take your hand toward keyboard. Select the file, open MusicBrainz dialog and click on search. Done!!

MusicBrainz support is very robust and will display any error if encountered during the operation. It will certainly help many users to get more accurate and better results.

Cheers!! 😀

Advertisements

GSoC 2014 “MusicBrainz Support to EasyTAG” Progress Report : 14 July – 27 July

Hello All,

I wasn’t able to post blog last Sunday because of my tight schedule. In the past two weeks I have done the following things:

  • Completed Apply TAGs for Automatic Search. After Automatic Search, user can select the Tracks and then click on Apply TAGs. If user wants MusicBrainz to use Levenshtein Algorithm for finding the best possible Tag for the File, he can select the check box. Below is the screenshot:

 

apply

  • My mentor David King did a review of the code and I did all the changes.
  • I also wrote a test case for FreeDBID Search.

All the features which I talked about in my proposal has been added. So, this means the time is for some heavy testing. In the coming week I will be doing testing of each and every feature of MusicBrainz Dialog. Lets hope I do find some bugs. 😉

Thank You

GSoC 2014 “MusicBrainz support for EasyTAG” Progress Report: 7 July to 13 July

This week I completed Automatic Search. They way automatic search works is very similar to the way it worked previously. This is how it work:

  • Select a number of files related to one album in BrowserList.
  • Open MusicBrainz Dialog and click on Automatic Search.
  • Now, FreeDB ID will be calculated and it will be searched using MusicBrainz Web Service.
  • Results will be dispplayed.
  • Double click on any result to search it over MusicBrainz Database.

The way now FreeDB ID is calculated is exactly same as with CDDB.

Here is an example,

I have selected some files related to album and clicked on the Automatic Search. This is what I getautomatic0

Now double click on the Result.

automatic1

“Rubbish” has been searched over MusicBrainz. You can now double click on any album and view its Tracks.

This week I will implement Apply TAGs for Automatic Search.

GSoC 2014 “MusicBrainz Support for EasyTAG”: 30 May – 6 May 2014

Hello all,

This week I implemented “Apply TAGs” feature corresponding to “Scan Selected Files”. “Apply TAGs” uses DLM Algorithm to find the best matching Track to which the Tags will be applied. Here I will show a work flow of using MusicBrainz Dialog.

MusicBrainz Dialog

This is the MusicBrainz Dialog. Cool isn’t it? And it is going to become more cool, if you would like to search. Let us type “Waking Up” in the Search ComboBox and click on the Search button.

These are the results which I get:
Waking Up Results

To all who don’t know, Waking Up is the Album by One Republic. Did you see the ToggleButton with “Albums”, that is the BreadCrumb Widget. It will help you navigate in the search results.

Now lets double click over one of the Waking Up rows, to get all the Tracks.

Waking Up

The above image shows an intermediate state when the information about Tracks is being downloaded. See the “Stop” button is in “Enabled/Sensitive” state now. You can press the “Stop” button to stop the search. The final results are here:

Waking Up Tracks

You can see the Track Title and information associated with it. There are many other options available to help you see the information. You can see those options in the ToolBar below.

Here I showed you can example of Manual Search. Similarly you can do “DiscID” or “Scan Selected Files” search.

For “DiscID Search”, insert the compact disc and press this button. Then MusicBrainz will take care of everything.

For “Scan Selected Files” search, select a bunch of files in the EasyTAG’s BrowserList and press the button. From there you can select any album and press “Apply Tag Changes” to apply the tags to the selected files.

Next week I will implement Automatic Search.

Thank You

GSoC 2014 MusicBrainz Support to EasyTAG, Progress Report 23 June 2014 – 29 June 2014

Hello all,

I passed the Mid-Term Evaluations yaaay!!. Thanks to my mentor David King for so much all through the previous 2 months. I promise to deliver even better in the coming months.

Ok, so lets see what I have done in the past week.

  • I have done many bug fixes.
  • Implemented the Refresh Operation.
  • David and I decided to change the whole GUI making it more simpler. Replaced all the tabs with just buttons. That make the GUI really simple. And now user can do search with just one click, instead of two.
  • By default, the type of entity to be searched will be “Album”.

Currently, I am working on “Apply TAGs” feature and I hope it to complete it within a day or two and then will do some coding style improvements.

We got some problems with Automatic Search as it relies on FreeDB or CDDB search. Searching FreeDB database in MusicBrainz through MusicBranz FreeDB Gateway gives expected results but not through MusicBrainz WebService :(. So, we decided to leave Automatic Search. If possible I will convert current Automatic Search code to use MusicBrainz Web Service methods.

Thank You

GSoC 2014 Progress Report 16 June – 22 June 2014

Hey all,

Past 1.5 months have been great. Go to learn a lot. And I have completed all of the things required to pass the Mid Term Evaluation. Even, I have completed one feature “Scan Selected Files” which is scheduled to be completed in next coding period. Following features have been implemented:

  1. Music Brainz Dialog
  2. Bread Crumb Widget
  3. Manual Search
  4. Search Selected Files
  5. DiscID Search
  6. Test Cases to test MusicBrainz functions

Now I will start working on Automatic Search feature.

Thank You

Google Summer of Code 2014 Progress Report 8 June – 15 June

Hello all,

I know I am a bit late in posting this progress report, but you know “better late than never”. Last week, I worked on DiscID Search and completed it. Now, a user can insert a Compact Disc and run DiscID search. Through this, a DiscID of Compact Disc will be generated and it will be searched through MusicBrainz data base. Then the received information will contain the Albums and Tracks inside the Compact Disc. This is a very interesting feature specifically for those who use Discs for storing and listening Music.

I also did some coding style fixes and make all the strings Language Translatable.

I also worked upon generating Unit Tests for MusicBrainz. I am almost complete with these tests but I will take some time to make them much better.

Cheers!!