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.
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.

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!

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.
Sporting the ultra-sexy Fluendo hat, 