Banshee 1.0 Alpha 3

Published on Thursday, April 10, 2008

Two weeks to the day after the fantastic Alpha 2 release, I'm pleased to announce our third and most spectacular release, quickly leading up to the final Banshee 1.0.

The Banshee logo

Introducing Hardware Support

I landed my new hardware layer in Banshee's core just a few days after the Alpha 2 release. This layer allows us to interact with hardware in a platform agnostic manner. Currently we've only implemented a HAL backend, but this separation layer should make it relatively easy to implement Windows and OS X hardware support. We're only focused on supporting the kinds of hardware that we'll need to handle in Banshee of course - this layer is by no means a general solution to platform agnostic hardware support.

So what kinds of hardware do we support?

Audio CD Playback and Ripping

Alpha 3 builds on the new hardware layer by adding full audio CD playback and ripping. We are now using Scott's new managed MusicBrainz library which uses the new XML protocol from MusicBrainz.

Because of this, we can now store a slew of extra metadata in the database and directly in the ripped files as read from MusicBrainz, including the full album release date, the track artist and album artist tags, and all of the associated MusicBrainz IDs, along with the standard metadata we've always stored.

The next release will introduce some additional features for nice audio CD support.

USB Mass Storage Support

Gabriel also implemented support for syncing USB Mass Storage Digital Audio Players. This is the first media player device class that we've implemented for 1.0, but we are working on MTP/PlaysForSure support in parallel. MTP support is currently not as complete as USB Mass Storage, but we expect to have both completed for the next release. If you have a USB Mass Storage device though, you should be mostly set with this release. We'll add iPod support back after we finish MTP.

Experimental Shuffle UI

Scott created a mockup of a new UI for enabling shuffle playback modes. I've never seen anything quite like it, but it grew on my very quickly and the metaphor makes sense. However, we're a little concerned about the general discoverability of the feature. We've decided to keep it in for a few releases to gather some feedback. However, if you're reading this, you're probably tainted on providing good discoverability feedback since I'm about to tell you what it is and how to access it -- but of course all feedback is welcome!

New Shuffle Mode UI

The basic idea is that the next action implies acting upon the model via some rule - the shuffle mode. Shuffle can either be "off" or "by song" (and soon "by album" and "by artist", among others). So Scott decided to group the shuffle mode UI with the next button. I guess the good thing for the discoverability issue is that the UI is exactly the same that is used in web browsers, particularly Firefox with the grouping of Next with a History menu.

Last night, Gabriel and Scott apparently pulled all-nighters and managed to fix a large handful of bugs -- one of which included implementing smarter shuffle logic. Now Banshee will never play songs you've already heard on shuffle or songs you've skipped.

Performance Improvements and Bug Fixes

While fixing some DPI issues with the way we were using Pango and Cairo, I saw some areas that needed some performance work. I managed to make text rendering in our managed list view about 160% faster. You can actually feel the difference. Awesome. Oh, and yes, the view now respects your system DPI settings, and even properly adjusts to DPI changes while Banshee is running.

On the whole, we managed to close 46 bugs since the Alpha 2 release. Not bad for two weeks of work, on top of implementing a slew of large new features!

I also spent some much needed time cleaning up and organizing the libbanshee C code, which is where our GStreamer layer is implemented. In the process a few bugs were fixed and the code is now much easier to maintain.

Podcasting and DAAP

Alex Hixon has been working on porting the DAAP client feature to the new code base, and Mike Urbanski checked in his new Podcast code. These features are both still under heavy development, so we've turned them off by default in the build. I'll discuss them both in more detail when we release with the features turned on - hopefully in just a couple short weeks. A big thanks to both Alex and Mike for their hard work in these areas.

Other Banshee Things

  • I realized a few weeks ago that I never announced to the world Planet Banshee, which has technically been around for about a year now. It's just a planet site like all the others to aggregate the blogs of Banshee contributors. Follow along if you're interested. We're also looking for more people to add. If you're contributing in the Banshee world, let me know if you want your blog added.
  • Will Farrington beat everyone to blogging about this Alpha 3 release, so check what he has to say - a great post.
  • LugRadio USA - Tomorrow I'm headed out to San Francisco to give a talk about all of this great new Banshee stuff on Saturday, among um, other things. If you are not planning on attending, it's not too late to travel! Do everything you can to make it there. Regardless of any expense incurred, it's sure to be a blast, and the event itself is only $10.

Digg It!