Wednesday, September 26. 2007
Playing with the Playlist Posted by Nikolaj Hald Nielsen
in freespirit at
09:06
Comments (37) Trackbacks (0) Playing with the Playlist
As some of you might have noticed, I skipped last weeks status update post. The reason for this was quite simply that I was doing a bit of Magnatune work as well as getting a new development workstation setup, so I did not really do anything interesting worth blogging about! This week I will be doing mostly Magnatune stuff as well, but I did spend the first two days doing a bit of interesting Amarok work that I thought I would share.
Since the new playlist for Amarok 2 is basically built using a QGraphicsView, we can do some realy interesting stuff with it. One of the things I have been thinking about was a way to group tracks from the same albums together to take up less space and avoid having the same cover shown over and over again. So after playling with this for a while, and completely discarding the fist prototype I did (as the other devs managed to convince me of the error of my ways), this is what I've come up with: While the albums in this prototype looks like a coherent whole, each track is actually still an individual item that can be dragged around and removed just the same as with regular track items. Also, the header of each album is actually drawn as part of the first track in the album. This means that there are no "Ghost" elements and that the underlying playlist model can remain intact. My favorite feature of the current implementation is that it groups items on the fly, meaning that if I insert a single track, it will appear as a normal track, but if I insert another track from the same album right after the first one, the playlist will rearrange itself to show the two tracks as part of an album. There are many things that do not work really well yet, such as correctly updating groups when items are moved or deleted, but I will work on that. All in all, I think that this makes the playlist a whole lot more usable, while still potentially looking really good! I am still considering whether it should somehow be possible to collapse an album and show only the header ( and maybe the currently playing track if it is from within that album ) but this is something that can always be added later. Also, it might be interesting to show some more album related metadata in the group header that applies to the album but not the individual tracks, such as total running time. And now for the part I really should not have to write... Please remember that this is a PROTOTYPE and as such no work has been done on making it look good yet. So pretty please, with sugar on top, don't complain about the layout or the horrible color used to mark items as part of a group, it is currently just trying to illustrate a concept. Friday, September 14. 2007
Weekly status update II Posted by Nikolaj Hald Nielsen
in freespirit at
13:42
Comments (75) Trackbacks (0) Weekly status update II
As promised, here is once again a small update of what I have been spending the last week of Amarok hacking doing.
This week I have generally been diving a bit deeper into the Amarok and even kdelibs code to debug some pretty serious issues. The KIO system is in a bit better shape than it was at the beginning of the week, thanks to KDE dev. Thiago, and as I use this intensively for the services, Magnatune not least of which, this is really good news. Other cool stuff that has happened over the week: - SVG artwork. Our new artist Lee really came through for us this week with a load of new scalable vector graphics (SVG's) that has been integrated into Amarok. I worked on the main tool bar and the new service list backgrounds while Mark pulled some cool hacks with manipulating SVG's in real time to achieve a nice smooth animation of the new sidebar buttons. This new artwork can be seen in the screenshots below. - SVG caching. It turns out that when you use as many SVG images as we do now, propper caching becomes very important. So I spent the better part of a day caching everything I could get my hands on, to great effect. Performance is much better in most cases now. We still do have some issues with the cache emptying itself every once in a while, causing lag as everything needs to be re-rendered, but this concern is shared with the plasma crew, so hopefully a solution is in the works. - Playlist performance. Our new playlist had a nasty habit of recursively redrawing itself causing 100% constant cpu load as soon as any tracks were added to it. This was fixed. - Service Framework / mp3tunes service. As the KIO issues had been keeping me from doing more real work on the dynamic fetching aspects of the service framework, I figured now would be a good time. The results of this is that the service framework is now much more usable for writing almost any kind of service imaginable. As a proof of concept I finished up the mp3tunes oboe locker service that I have had lying around for a while, and actually got it working perfectly in the space of just a few hours. Browsing and streaming from the locker inside Amarok is cooool! - Playlist loader. One piece of code that had not yet been ported was the old playlist loader. This is needed in order to load any kind of playlist file as well as listen to many streaming radio stations. I have spent all day today ripping the old one apart and building a new, hopefully much simpler version. The new one currently only supports local and remote m3u and pls files, but at least it is working! I guess these are the highlights. And now, onto the moment you have all been waiting for, screenies!!! Over and out! Friday, September 7. 2007
Weekly status update I Posted by Nikolaj Hald Nielsen
in freespirit at
14:45
Comments (10) Trackbacks (0) Weekly status update I
I figured that since I am now getting paid to do this and spending the first few weeks fixing whatever I feel needs fixing in Amarok, I should send my new employer a nice status update of the things I have accomplished during the week, as well as some of the general developments in Amarok2. And since I would most likely blog many of these thing anyway, I thought I would combine the two things into one.
So, here is what I have been up to so far this week: - Fixed ( worked around ) some rather annoying plasma related crashes that prevented Amarok from actually playing music. - Quite a bit of work on the new playlist. Made it use the netire width of the playlist view as well as have alternating background colors or each item. Also, the playlist now correctly receives notifications when an album updates its cover image. This means, for instance, that if you add a bunch of tracks from Magnatune and none of the covers are cached, the playlist will initially show the default no cover image for each track. In the background, Amarok will start to download and cache the covers, and once they are ready, the playlist will update itself to show the correct covers. - Made a much nicer way to present each service available in Amarok. Instead of showing the services as a simple list with an icon, the browser now uses Qt4's delegate system to draw a custom list item for each. It is not particularly pretty yet (need the help of an artist with this one) but it already looks much nicer than the old one and it gives an idea of how good looking this could be made to be with some more work. - Made the forwards and back buttons actually skip tracks ( and created a nasty crash in the process that was quickly fixed by Seb ) - Spent half a day trying to debug a nasty bug in KIO that has been haunting me for a while. I did not really get to the bottom of it, but did find a workaround for some cases. - I made the foundations of a new Shoutcast service. This is not really a new thing as the 1.4.5 and later versions already included this in the playlist browser, but since the old playlist browser is no more, the functionality needed a new home. I do think that it will be much more visible this way however as it was fairly well hidden before. Also, doing thos "port" gave me an excuse to try to extend the service framework to work with sites that requires that you dynamically fetch data (as opposed to downloading one unified database dump ). So even though this took some time, it has hopefully been worthwhile as it will make it easier to support stuff like Ampache servers or the mp3tunes locker service in the future. and now of course, a few screenshots. This first one shows of the new service browser and the updated playlist: And this one shows off the shoutcast service: In these screenshots can also be seen a few other interesting new developments, such as the proof of concept svg buttons for the sidebar, or the new position of the statusbar under the context view. As always, these screenshots are of code in HEAVY development, so dont fret over details just yet! (really, please dont! All in all, Amarok2 can actually be used for playing music now (works really well with streams from Magnatune and Jamendo) so progress has definitely been made but he entire team. Our very own project founder markey solved the one killer bug that was preventing the playlist from actually progressing from one track to the next, instantly increasing usability by a couple of thousand percent Thats all for now folks. More updates to follow, so stay tuned! Monday, September 3. 2007
First day on the job! Posted by Nikolaj Hald Nielsen
in freespirit at
09:44
Comments (14) Trackbacks (0) First day on the job!
So, today is officially my first day working as a independent software developer for Magnatune.com.
The deal so far is that for the first two weeks I will be doing basically what I feel will benefit Amarok the most and after that I will start spending some of my time on small introductory task for Magnatune to get acquainted with their site and infrastructure. So far today, besides having to spend 2 hours making Amarok2 compile at all due to some last minute KDE4 API changes, I have made Amarok2 crash a bit less (which basically meant disabling some huge but non essential chunks of code that are not really ready yet) as well giving the new playlist a bit of tender loving care! The playlist now uses the full width available to it and correctly updates itself when an album gets a new cover. This last bit might not sound like much, but it is quite important for being able to display cover images of albums from Magnatune or other online services where the covers are generally downloaded asynchronously and are thus not always available when a track is added to the playlist. This means that when you add a track from an album that does not have a cached album cover available, the playlist will initially show the default no-cover image, and as soon as the real cover has been downloaded, the image will automatically change to the correct one. Oh, and here is the obligatory screenshot: The day is not over yet, but I think I have gotten off to quite a good start! |
Amarok LinksCalendar
QuicksearchCategoriesSyndicate This BlogBlog Administration |
|||||||||||||||||||||||||||||||||||||||||||||||||

