The last couple of weeks have been so busy, and have really flown by. It’s amazing how things are coming together with Sonance and related projects. There are two in particular that I’d like to mention. ipod-sharp, started by Snorp, is full a C# library to bring iPod support to GNOME/Mono. It is going to be a key part of Sonance. What’s of equal importance is the re-licensing of entagged-sharp (a C# port of the Java Entagged project) to the MIT license. I am working with Raphael Slinckx, the lead developer, to make entagged-sharp the audio metadata solution for Mono.
entagged-sharp is as of yesterday available from Mono SVN (entagged-sharp). The initial import featured a new build system, and some general cleaning of the code. Tonight I started on a cleaner, friendlier API front end to the Entagged library (
AudioFileWrapper), that makes it much easier to use, and feels less like Java. If you wish to use entagged-sharp in your Mono application, it is highly recommended that you use the
AudioFileWrapper class. This class will continue to be expanded until all of the Entagged features are exposed in a much saner, cleaner way, and other internal optimizations will follow. I would just like to thank Raphael for his eager support. I should also mention that entagged-sharp has no dependencies other than core .NET, and currently provides metadata/encoding information for APE, MPC, MP3, OGG, and FLAC formats. AAC is on the way, and hopefully ASF/WMA.
Back to ipod-sharp. Basically, this is going to rock. Snorp already has iTunes music database support (read/write), and we have been working together to first bring lower-level device support to ipod-sharp as well. A few weeks ago I started writing libipoddevice (available from GNOME CVS… at least when the servers are back up :-D), which provides lower-level device information and control (safe ejection!) through HAL and a number of custom functions that support the formats on the iPod. libipoddevice exposes lots of details about an iPod, including the user-assigned name (“Aaron’s Photo iPod” instead of “AARON’S IPO”), the volume name, the type of iPod (Photo, Regular, Mini, Shuffle), the volume size, the amount of free space, and much more. Snorp has written very nice bindings to libipoddevice in ipod-sharp. In the weeks and months to come, expect to see photo (thanks to Larry Ewing) and cover art support in ipod-sharp. I should also mention that Snorp has written a more useful test case for ipod-sharp that actually allows you to sync your iPod, called Dopi.
Edd Dumbill has written Monopod, which will probably use ipod-sharp at some point, as well as entagged-sharp.
I also can’t not mention fejj’s work in gnome-volume-manager to bring iPod support directly to GNOME. I’ve been working with fejj on isolating iPod/HAL issues, and getting it to just work. This is going to rock: plug in your iPod, automatically manage your music and your photos, with one or no clicks.
I’ve got some other iPod related GNOME ideas, which I may bring up in a later post. Myself and others basically want to see GNOME seamlessly support the iPod through a number of applications. Realizing this is not far off… not far off at all. The next few months are going to be exciting times.
Finally, I just finished listening to the entire 3+ hour talk at the Massachusetts Software Council that Nat mentioned in his blog today. Both he and Miguel were the presenters in the third segment. I found the entire thing immensely informative and at many points, entertaining. I recommend listening to all segments, and follow along with Nat’s PDF presentation during the third segment.
Major Update! entagged-sharp now with M4A/AAC support!
Yes, that’s right, a mere 4.5 hours after the initial post of this entry, I have added basic M4A/AAC support to entagged-sharp. I still need to write an InfoReader that reads stream/encoding information, but the metadata reader is pretty much complete. I’d like to thank Geoff Norton (kangaroo) for the base metadata parser, implemented in
Everyone is rushing to
svn co, right?