Re: [Rhythmbox-devel] Support for flash based mp3 players

On Tue, Apr 26, 2005 at 04:07:26PM +1000, Nicholas Gill (mythagel) wrote:
> Hello all!
> I'm developing support for rb to automatically sync a playlist with a
> flash based mp3 player (the kind that g-v-m automounts). I have written
> a prototype as a standalone app, however i think it would be more useful
> as part of rb itself.

This is something I've been vaguely wanting for a long time.  At the
moment, I manage files on a CF card using nautilus, but what I'm
missing is:

 - Automatic conversion from ogg vorbis to mp3.  I rarely bother to do
    this at the moment, which cuts down my set of available songs 
    pretty drastically.  I've been using sound-converter
    ( for this a bit, but it's still
 - Less important, but I'd like to be able to transcode down to 64 or
    96kbit.  Half the time I'm using my mp3 player I'm on trains or
    buses, where there's so much background noise I don't mind trading
    sound quality for playing time.
 - Searching for songs by anything other than 'where did I put it when
    I downloaded/ripped it'.
 - Background copying/conversion.  Flash is pretty slow and I often copy
    60-70mb files, which take several minutes to copy, so I want to be
    able to select everything to copy to a 1GB flash card all at once,
    then leave it to actually copy to the card.

Things I definitely want to keep:

 - Knowing how much stuff is on the device (file size and play time),
    and how much space is left
 - The ability to delete songs from the device.  My full library kind of
    dwarfs the capacity of my mp3 player (can you get 80GB iPods yet?), 
    so I definitely need the ability to remove songs from it to make space.

I also use flash cards to copy songs between computers (from home to
work, mostly), so it'd also be nice to be able to identify songs on the
device that aren't in the library and copy them in.  There are two parts
to that problem, and a solution either would be useful.  Not really 
something to aim for initially, though.

> The idea is to make it "Just Work". A use case may be something like: 
> "Nick plugs in his new mp3 player, rhythmbox opens with a new playlist
> named after the device. He copies some songs onto the playlist and
> closes rb. It syncs the playlist to the device and he unplugs it, with
> all the songs copied"
> I spoke with David Zeuthen from the utopia list, and he informs me that
> g-v-m can be extended to do the same kind of thing it does for digital
> cameras. He also showed me a file
> (*checkout*/hal/hal/fdi/information/10freedesktop/10-usb-music-players.fdi?rev=1.2) that shows HAL already has the ability to identify mp3 players (though the device database could use a lot more devices to be useful). Also he gave a simple suggestion, that using that file and gstreamer, to transcode music into the format supported by the particular player.

That's a really nice idea, as long as I can plug in my USB CF card
reader and tell rhythmbox the device I use the card in only supports MP3.
I'd also like the option to treat it as a transfer device (so no
transcoding), but this is less important.

> I need some input as to how this should interact with users. For
> example, if a user copies songs onto the playlist, should it copy it
> straight away, or should there be a "sync" button? Should rb eject the
> device after syncing? etc.

I'd say it should update the device straight away.  Waiting for me to
press a button is just wasting time, as long as copying files to the
device doesn't prevent you from doing anything else.  I'm not sure what
you mean by "eject the device", but I don't think it should do anything
that could cover.

If I change my mind and remove a song from the device, then it gets
deleted.  If the song I delete is in currently being copied, then the
copy process just moves to the next song.  If I'm concerned about
wearing out my flash card, then maybe this will encourage me to become
more decisive..

Anyway, this would be a great feature to have, and I'll definitely help
out testing it once you've got something working.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]