Hi Vedant,
Nice job so far. You should submit this on Melange -- you can keep
updating through the deadline on Friday and the mentors can write feedback
/ comments to you there.
Best regards,
RJ
On Mon, Apr 29, 2013 at 10:14 AM, vedant agarwala <[email protected]>wrote:
> *
>
> Hello everyone.
>
> Firstly I would like to congratulate the people and developers of Mixxx.
> Awesome piece of Work. Kudos!
>
> I wish to work on the project: Cover Art Support as listed on the Mixxx
> Idea Page for GSoC 2013 <http://mixxx.org/wiki/doku.php/gsoc2013ideas>. I
> understand its late and I have no work experience with Mixxx but,
> nevertheless, I would love to do a GSoC for Mixxx.
>
> Below is a draft copy of my project proposal. Currently I am expanding the
> implementation section. It is taking time since I am going through the
> Mixxx source code. The "Motivation for Proposal" and "Features that will be
> added" sections are more-or-less complete from my side. I request you to
> give me feedback, especially the negative ones. Its in plain text so that
> you can comment as much as you want :)
>
> Thanking you,
>
> Vedant.
>
>
> Name: Vedant Agarwala
>
> Email Address: [email protected]
>
> Freenode IRC Nick: vedant
>
> IM Service and Username: xmpp-google: [email protected]
>
> Location: Kolkata, India GMT+5.30
>
> Proposal Title: Cover Art Support
>
> Motivation for Proposal: Currently Mixxx has no support for album cover
> art whatsoever. Displaying album art should be an expected feature of “the
> most popular free DJ software in the world”. With version 1.10.1 Mixxx has
> a large number of incredible features in a very visually appealing package
> except for one thing- displaying cover art. Not only does cover art provide
> a visual appeal to the library display and the currently playing song, it
> has practical benefits too. Many users (home and DJs) go through their
> entire library to select a particular song. Going through a library with
> albums displayed through cover art (cover flow or grid-view) will be must
> faster (and appealing) compared to going through a list of songs. The brain
> takes longer to figure out text as compared to a picture. It may also
> happen that a user is looking for a song/album he wants but can’t recall
> the name; with so many songs going through the DJ’s head at a house party,
> its not that hard to happen.
>
> Let’s consider someone downloads and installs Mixxx. He, like me, is
> astounded by look and feel of this free software. It’s so professional
> looking. It has all the features he needs and many more. In the meantime
> his library is being loaded onto Mixxx. After this is complete he starts
> playing songs but soon realizes that there is something lacking. In his
> earlier music player, his entire collection was a beautiful collection of
> pictures, each representing albums. Now it is just a large list of titles.
> Earlier, he would sometimes recall songs in his CD case by the color of the
> CD's spine before the name came to him. He knows it's much faster scanning
> through CDs when looking for a certain color swatch than reading each
> title. Even the songs in the decks don’t show album cover art anywhere.
>
> The above scenario isn’t an isolated incident. There have been bug reports
> pertaining to this very issue
> ([1]<https://bugs.launchpad.net/mixxx/+bug/661459>
> [2]
> <https://bugs.launchpad.net/mixxx/+bug/890421>[3]<https://bugs.launchpad.net/mixxx/+bug/1015894>).
> Cover art has been missing from mixxx; this project will add the cover art
> support in a big way without wasting much of the precious real-estate of
> mixxx.
>
> Features that will be added:
>
> -
>
> I will update the existing list view of the library to display cover
> art. Each track with cover art will occupy 2 lines. Whenever multiple
> tracks of the same album are listed subsequently (in “Library”, “Auto DJ”
> and all other lists) only the first song will display the cover art. Those
> subsequent tracks will occupy single lines.
> -
>
> On the decks, just before the song name the respective cover art will
> be present spanning both the lines. While dragging-and-dropping a song onto
> the deck, the cover art will move along the cursor.
>
> [Expected look after adding Cover Art to the decks and List View]
>
> -
>
> I will add more views, like Gridview and Cover flow, in place of the
> existing list view. The view can be selected from settings or (as the user
> selects) be available as tabs.
> -
>
> The vinyls will feature the respective songs’ cover art. They can be
> set to be stationary or spinning with the vinyl. If time permits, I will
> make the opacity (on a black background) user-determined too.
>
> [ A spinning vinyl with cover art]
>
> -
>
> Missing Cover Art will be downloaded automatically from web services
> while adding to library.
>
>
> Implementation Details:
>
> The main purpose of this implementation is to provide an idea of how I
> intend to go about writing code. The exact technicalities might change
> during the coding phase.
>
> -
>
> Add Cover Art support to the Mixxx library: I will create a
> covermanager directory with all the classes related to cover art will be
> stored. It will contain a CoverCache class. This will be a singleton class.
> The CoverCache will provie a central repository for Album Cover Art
> QPixmaps. I will typedef QHash<int,QPixmapCache::Key> CoverKeys and an
> another mutable QHash<const Meta::Album*,CoverKeys> m_keys. m_keys
> will be a cache holding all the pixmaps. I will write its code with care so
> that these hash keys don’t change from anywhere else even though they will
> be shared everywhere. A SaveCoverToFile class will be made that will embed
> cover art to files which support it and save it in the folder for the
> formats that don’t. I will update the current LibraryScanner to scan and
> index image files. All the images will be added to cache whether the
> corresponding music file exists or not. This will prevent the same file
> from being checked multiple times. The LibraryScanner will make the image
> files available to a CoverChecker singleton class.
>
> Job of the CoverCheck will be to check the existing library (made by the
> LibraryScanner) for embedded cover art. Obviously, it will only check the
> formats that support cover art. The CoverChecker will also try to link the
> image files to their corresponding track (mainly based on filenames). This
> will more efficient than trying to link tracks to images since number of
> tracks will greater than (at worst, equal to) the number of images.
> Finally, I will update the TrackInfoObject class to provide a method that
> returns cover art. It will return a QPixmap using the CoverCache.
>
> -
>
> Update the existing list view of the library:
> -
>
> Add Cover Art to the decks:
> -
>
> Add the gridview and the coverflow view:
> -
>
> Get missing Cover Art from MusicBrainz: I will add classes to the
> covercache directory to fetch cover art. I will be using the MusicBrainz
> web service but code will be modularized and decoupled in the form of a
> MusicBrainzFetcher class. Other sources of Cover Art (like itunes) can be
> added later on. A CoverFetcher class will handle the available cover art
> fetchers. A SettingsWidget, that will be included inside the Mixxx Settings
> dialog, will handle the user settings and configuration (using the
> KGlobal::config() )
>
> MusicBrainz’ cover art
> API<http://musicbrainz.org/doc/Cover_Art_Archive/API>is well documented and
> returns a large enough (600x600) image file.
> QNetworkAccessManager will handle the connection to the internet. A request
> to the MusicBrainz web service can easily be made via the QNetworkRequest
> after authentication using the QAuthenticator class. The reply will be
> parsed by methods of QString class to fetch a URL of the image. The image
> will then be downloaded and sent to the SaveCoverToFile for storage. The
> CoverCache will be updated. Then, Cover Art can be retrieved by the
> TrackInfoObject.
>
> -
>
> Add Cover Art to vinyls:
>
>
> Tentative Timeline:
>
> June-
>
> <--- GSoC commences--->
>
> week 3: Add Cover Art support to Mixxx.
>
> week 4: Build, test to see if they work as expected.
>
> July-
>
> week 1: Update the List view.
>
> week 2: Complete the List view and update the other GUI parts
> (drag-and-drop, etc.)
>
> week 3: Add Coverflow and Grid View
>
> week 4: Update the Mixxx Preferences and test the new views.
>
> <--- Mid term --->
>
> August-
>
> week 1: Add the “automatically download missing cover art” feature. Test
> to see if it works
>
> week 2: Add cover art to both decks.
>
> week 3: Add cover art to Vinyls- both spinning and stationary. If time
> permits add the “changeable opacity feature”
>
> week 4: Test the above GUI features and fix any bugs.
>
> September-
>
> week 1: Update “Preferences” to display options of the newly added GUI
> features..
>
> week 2: Update Documentation, fix bugs and streamline code by testing and
> tweaking.
>
> <--- suggested “pens down” --->
>
> week 3: Do some more code cleaning and fix bugs so that the new features
> can be pushed into the master branch.
>
> <--- firm “pens down” --->
>
> week 4: Fix more bugs and complete documentation.
>
> Work Schedule: Since 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), SQL and web services.
> I have been working for and submitting patches to KDE whose software is
> based entirely on the Qt framework. Most of my work has been for Amarok,
> the open source music player by KDE. Cover Art is fully supported in
> Amarok. I have also taken help from the Amarok source code to make my
> project proposal. I expect this to continue during the coding phase as
> well. I have submitted 3 patches
> ([1]<https://git.reviewboard.kde.org/r/107662/>
> [2]
> <https://git.reviewboard.kde.org/r/109283/>[3]<https://git.reviewboard.kde.org/r/109295/>)
> and 2 more are under review ([4]<https://git.reviewboard.kde.org/r/110101/>
> [5] <https://git.reviewboard.kde.org/r/110082/>). One of them updates the
> SQL database.
>
> I am passionate about coding for open source and I fell in love with Mixxx
> when I first saw it. I downloaded and built mixxx from source. I have been
> considering myself a DJ since then. I’m sure working with a mentor who is
> virtually present won’t be a problem. 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.
>
> After GSoC I hope to become an active developer for Mixxx and help it
> achieve such a level that it will rival the paid DJ mixing softwares.
> *
>
>
> ------------------------------------------------------------------------------
> Try New Relic Now & We'll Send You this Cool Shirt
> New Relic is the only SaaS-based application performance monitoring service
> that delivers powerful full stack analytics. Optimize and monitor your
> browser, app, & servers with just a few lines of code. Try New Relic
> and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr
> _______________________________________________
> Get Mixxx, the #1 Free MP3 DJ Mixing software Today
> http://mixxx.org
>
>
> Mixxx-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>
------------------------------------------------------------------------------
Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
Get 100% visibility into your production application - at no cost.
Code-level diagnostics for performance bottlenecks with <2% overhead
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap1
_______________________________________________
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org
Mixxx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mixxx-devel