* Hello,
I want to do the project Improving and modularizing tag guessing<http://community.kde.org/GSoC/2013/Ideas#Project:_Improving_and_modularizing_tag_guessing>for this year's Google Summer of Code. I request the amarok community to review my project proposal before I submit it. I'm a first timer for GSoC so any suggestions/comments will be very helpful. Thank-you in advance, Vedant. application------> Name: Vedant Agarwala Email Address: vedant.k...@gmail.com Freenode IRC Nick: vedant IM Service and Username: xmpp-google: vedant.k...@gmail.com Location (City, Country and/or Time Zone): Kolkata, India GMT+5.30 Proposal Title: Improving and modularizing tag guessing Motivation for Proposal / Goal: Currently, Amarok “guesses” tags of music files through the MusicBrainz web service using either existing tags or MusicIP audio fingerprints. This method, however, is somewhat outdated. MusicBrainz is phasing out MusicIP in favour of AcousID and other methods of guessing tags have emerged. The aim of this project is to create an abstract base class for tag guessing that can be suitably inherited by other classes that aim to guess tags. Implementation Details: - Creating a generic framework for tag getters: The project requires a documented directory (say "TagGetters") containing abstract classes (like "Controller" and "Provider", similar to the existing “StatSyncing”). Sub-directories will be created under this directory that will implement the abstract classes. The existing musicbrainz directory will be ported into such a sub-directory and it will use the newly created framework. Later on, more sub-directories can be created that follow this implementation and aim to guess tags. - Rewriting MusicBrainz tag getter: Existing MusicBrainz code will be re-written according to the framework above. Currently, libofa is used to create the music fingerprint that is sent to MusicBrainz. Now, ffmpeg, Phonon and chromaprint (library to compute AcustIDs) will be used. AcustIDs will be send to MusicBrainz (for better identification of the audio file). - Creating Last.fm tag getter: Create the Last.fm tag getter. First the tag based service will added and then, depending on time, the fingerprint based service might be added. - A better GUI: The existing button- Get tags from MusicBrainz- will be replaced by "Get tags from the following services: " followed by QGroupBox containing names of the features. Getting tags from the individual services will run in parallel and results will be displayed as soon as they are fetched- probably by a TagGetterController. This list will persist in memory so that if the user closes the dialog and then reopens it, tags won’t have to fetched again (until Amarok restart). The user can choose the best tags from the generated list. - A GUI for getting tags of multiple songs simultaneously: Its a feature by which tags for multiple tracks (if not the entire local collection) can be changed. Getting tags requires too many user clicks as of now, especially for multiple tracks. To solve this, a "tag getter wizard" will select the best tags for every track (perhaps by comparing results of different services and generating a score for each). Best ones are written to files without user approval but in a reversible way. Earlier tags will be saved to database and can be reversed/changed anytime in both ways- 1) for individual tracks 2) through a list showing the changed tags. Tentative Timeline: Bonding Period ( May end to mid June): Decide on finer points. Like, details of the generic framework of tag getters, how the end-user GUI will look like, whether or not to use a “wizard” to guess tags for many songs, etc. Talk to my mentor and refine the implementation based on his/her suggestions. June- <--- GSoC commences---> week 3: Make the directories and start writing the abstract classes. week 4: Finish writing the abstract classes of the generic framework. July- week 1: Polish, make cmakelists for, write make tests and compile the written abstract classes. week 2: Re-write the MusicBrainz tag getter according to the framework week 3: Add the features (like using AcoustID) to this MusicBrainz tag getter week 4: Compile and run the new MusicBrainz (displaying results in the old UI itself) <--- Mid term ---> August- week 1: Write the new GUI code and “TagGetterController”. Run MusicBrainz tag getter in this fashion week 2: Write the Last.fm tag getter (as many features as possible) week 3: Finish writing and test the Last.fm tag getter week 4: Test the Last.fm and MusicBrainz tag getter together in the new GUI September- week 1: Make the tag getter wizard GUI and code to backup tags to database week 2: Test the new wizard. Write tests to make sure that new tag getters follow the framework <--- suggested “pens down” ---> week 3: Improve documentation. Fix bugs that have been discovered over the weeks <--- firm “pens down” ---> week 4: Improve the efficiency of the wizard by testing and tweaking. October- week 1: Do some code cleaning and fix bugs so that the new framework and features can be pushed into the master branch. Other Obligations: I have no other obligations. I can easily spent about 50 hours a week (7 to 8 hrs a day in slots of 2 to 3 hrs, one each in the afternoon, evening and at night) coding; since summer vacations will be going on till mid July. Even after college starts, very few classes are held in the beginning of the semester and the college teachers make exceptions for GSoC students. So, I can continue to code 50 hours a week (with a similar schedule) even up till September. About Me: I am currently in my second undergraduate year in National Institute of Technology, Durgapur, India, studying Computer Science and Engineering. I have experience coding experience with C/C++, Java (including Android and making GUI using Java swing) and web services. I have submitted 3 patches (JJ bug-fixes one each for Rekonq and Amarok as well as a improved formatting patch for Amarok) and 2 more are under review (both JJ bug-fixes for Amarok). I love coding for open source. I’m sure working with a mentor who is virtually present won’t be a problem. I have interacted (mainly with Matej a.k.a. Strohel on IRC) over IRC, the amarok mailing list, reviewboard and also the KDE bug tracking system. During the work period code can easily be shared via github. If it is possible, meeting a mentor face to face will obviously be much more helpful. I have worked with my college seniors in this fashion who have introduced me to Linux and Open-Source. Countless times I have been to their rooms for advice and to solve my problems. After GSoC I plan to become an active developer for Amarok and also for other projects of KDE. Junior job link: Bug 140198 - JJ: feature request: option to selectively disable submitting certain tracks/albums from collection to last.fm<https://git.reviewboard.kde.org/r/109283/> * On Wed, Apr 24, 2013 at 3:55 PM, Matěj Laitl <ma...@laitl.cz> wrote: > On 24. 4. 2013 vedant agarwala wrote: > > Hello, > > I want to do the project Improving and modularizing tag guessing for this > > year's Google Summer of Code. I request the amarok community to review my > > project proposal before I submit it: Link to Application I'm a first > timer > > for GSoC so any suggestions/comments will be very helpful. > > Hi, please include the proposal inline as plain text in the mail so that we > can easily comment with context. > > Matěj > _______________________________________________ > Amarok-devel mailing list > Amarok-devel@kde.org > https://mail.kde.org/mailman/listinfo/amarok-devel >
_______________________________________________ Amarok-devel mailing list Amarok-devel@kde.org https://mail.kde.org/mailman/listinfo/amarok-devel