More bling from the Banshee front

Lots of new stuff has been going into HEAD lately, and I’ve been starting to review and polish plugins in the banshee-official-plugins module. We’re aiming for the first release in the 0.11.x development series in mid-August.

So here’s a short run-down of some nice new features…

Tiles: An upgrade from a linoleum music player

Inspired by “tiles” throughout the desktop in the excellent recently released SUSE Linux Enterprise Desktop 10, I began writing tile and tile view support in Banshee core. The first consumer of this new support is the Recommendations plugin, which shows similar artists and popular songs by the currently playing artist.

Tiles!

I will be adding lots of contextual and plugin-installable actions to various tile types in the future. Right now the default action for the recommended artist tile is to go to the last.fm artist page. I am also going to experiment with tile-based library/artist/album/tile views. Tiles are just hot.

Let me hear it my way!

Last week, Ivan N. Zlatev began working on equalization support for Banshee. He sent a patch to the list that added preset support and an equalization dialog, however, the presets were bound to the player engine. I had been wanting to implement equalization for some time, so I took his efforts as an opportunity to dive into it. My goal is to be able to assign equalization settings to tracks, playlists, and smart playlists and of course sync them to the iPod (please bug snorp for EQ support in ipod-sharp).

Today I committed the re-worked equalization/preset editor and will soon take the rest of Ivan’s patch and connect the support to the player engines, so you can actually hear the changes. The UI support for equalization supports 10 bands at fixed frequencies, which need to be transformed to whatever frequencies are supported by the active engine.

Ivan also added the equalizer support to the Helix Remote engine and helix-dbus-server, and to his Xine engine. A GStreamer plugin will be next.

Equalization

Oh, yes, speaking of Xine… Ivan also wrote a Xine engine a few weeks ago – it’s in Banshee subversion. We are not going to officially support it, but hey… it’s available for those who want it.

Some internal stuff

Today was a very productive day. I committed a lot of the equalization stuff, then I re-wrote most of the old and poor drag-and-drop selection support. Sending objects “over” drag and drop internally in Banshee is now insanely simple and much more efficient than it was previously.

For instance, here’s all that’s required to pull a collection of TrackInfo objects out of a Gtk.SelectionData:

protected override void OnDragDataReceived(Gdk.DragContext context, 
    int x, int y, Gtk.SelectionData selectionData, uint info, uint time)
{
    DragDropList<TrackInfo> dnd_tracks = selectionData;
    foreach(TrackInfo track in dnd_tracks) {
        ...
    }
    ...
}

“Sending” the selection is as equally simple.

And a drum roll please…

Tonight I implemented one of the most requested features for Banshee: support importing of songs from DAP devices. That’s right. You can now drag songs from your iPod onto the Banshee library and they will be copied to the library directory and imported to the database.

You can also create locally-saved playlists of imported DAP tracks just as you would from the library – just drag them to the source view and let go, or drop on an existing playlist… all directly from your DAP!

iPod to Library

The import support is not specific to the iPod, so it should work just fine for those with USB mass storage audio players. It works quite well with the iPod. It does not work with NJB/MTP. They will need to implement IImportable and provide importing based on the respective transfer protocol.

This is all committed and ready for a beating. I’d really like to hear from those with mass storage players.

13 Replies to “More bling from the Banshee front”

  1. Excellent stuff!

    IMO there’s only one current shortcoming vis-a-vis Rhythmbox- good internet radio support. Is it available already?

  2. >> there’s only one current shortcoming vis-a-vis Rhythmbox

    …but not internet radio (works fine for me ^^), but the much discussed artist/album browser. do you still plan to make such a thing possible after the listview rework? if yes, how much longer do we have to wait? =)

    And, with your latest changes that should be possible, import support from DAAP? Can the DAAP plugin be changed (eg implement IImportable) and it works there too?

  3. Fantastic! You are my hero… if I was a lady I would want little Aarons of my own to start a coding army!

    Keep up the good work – Banshee is my favourite OSS application. It makes iTunes look like a high school project.

    :)

  4. Regarding the tiles for the Library, you may want to look at the “Songs” view on WMP11. It actually quite nice to use everyday, and should be quite easy to implement:

    http://www.blackicelondon.com/njp/wmp11-tiles.PNG

    Also, what you can’t see in the picture is that you can edit the properties of individual songs, or the album within the same view.

  5. Michi: someone accidentally set it +i, it’s fixed now. Also, yes, I’ll be working on making DAAP IImportable. However, I honestly hate the Artist/Album browser. I think it is a total waste of space, and very little innovation went into its design. Thus, I am reluctant to add the feature.

    When the new view/model lands, this will be an easy thing to write, so I’m sure someone will do it. However, I have much bigger plans at that time for a UI that is much nicer, but does the same thing (filters your track list based on Artist/Album). Think tiles.

  6. I am looking forward to the updates. I really love Banshee. The only problem I seem to have is with my AAC files imported in recent versions of iTunes. Banshee does not pick up the tags and the files, therefore do not show up in my library. I don’t have the same problem with Rhythmbox, which I am told, uses GStreamer to get track information. Is there any sense this is where Banshee is headed as well?

Comments are closed.