Saturday, April 25, 2009

Amarok: A Better Media Device Experience, GSoC 2009

So I have again the pleasure of being selected for Google's Summer of Code for Amarok to scratch some very serious itches concerning media device support in Amarok 2.


  • Playlist Support
  • More GUI Feedback, more intuitive interface
  • UMS(Universal Mass Storage) Support


Actually, iPods in Amarok already have their playlists read on connect, but at the time I wrote the code, the code in Amarok for any collection dealing with playlists wasn't at a satisfactory level yet, which I believe it to be now thanks to the work of a few people, in particular I know that Stecchino (Bart) has worked on it.


The media devices applet seemed like a good idea at first, but it's terrible from a usability standpoint, and since the PUD (Popup Dropper) removes any possibility of dragging-and-dropping tracks onto it, for instance, it doesn't make much sense to have it.  However, I understand there's plans in the works to redo some of Amarok's GUI, part of which will accomodate the previous functions of this applet, and I'll be taking advantage of that.

UMS Support:

Yes!  I swear it this time.  It turned out that building a new collection-based media devices infrastructure more-or-less from scratch took a lot longer than planned last summer, and I did not get to UMS.  Another reason I've held back on it up until now is that media device support in general is going to get a massive refactoring before GSoC begins, to accomodate for simple adding of support not only of UMS devices, but in the future, other types as well.

Ok, now that the explanations of GSoC are out of the way, I move on to something else.

People with media devices, aside from the above, what is it you would like to see in Amarok for devices?  I can list a few off the top of my head, please list more so that I can prioritize perhaps some time for this summer and beyond.

  • MTP Cover Support
  • iPod stale/orphaned scan support
  • Playlist synching with the local collection


Tom said...

Perfect support for all Appl€ devices.

I know it is hard and it sucks, but sad thing is it needs to be there.

awainzin said...

@Tom: Agreed, it must be there. So you refer to not just the iPod, but the iPhone, is there another one I've missed?

Tomasz Dudzik said...

I want to ask about iPod touch/iPhone/, too. Now, the only reason that i have to have windows is iTunes for iPod sync :// Will the support be in Amarok?

awainzin said...

@Tomasz Dudzik: Synchronization of songs/playlists/ratings/covers is planned possibly for after this summer, but if time is allowed, sooner. Yes, thank you for bringing up this very important piece.

Benji said...

for me, the only big thing that iTunes has over Amarok is the ability to sync ipods, in stead of having to remember what you need to copy over from your local collection. having that capability would really boost Amarok- as far as i can see, no linux iPod software can actuall do this.

Widget said...

Some kind of one-click syncing of podcasts would be good. I use my phone over 'amarok+mp3' player because it's virtually one click on my phone to get a podcast and start listening.

awainzin said...

@Benji: Yes, as said above, this is definitely in the works.

@Widget: Podcast support in Amarok has matured since last I looked at it, so adding podcast support back to Amarok is another good one, thank you for noting this one.

kiwi said...

My killer feature is to be able to click a button and have amarok fill my ipod shuffle up with random music.

Bille said...

Generally: Checks that the transfer is safe. I trashed our iPod 3 days before its starring role at my wedding reception by copying 60GB of music onto it, filling the disk and leaving no space for the ITunesDB. My fiancee was not amused.

MTP Playlist support, initial transfer and sync.

Warnings if the user tries to transfer a track that the device cannot play, unless A2 can do automatic transcode-and-transfer.

Some devices refuse to accept some filenames in A1 (I don't know why) so either fix that bug or rename files automatically if the host filesystem supports filenames that the devices cannot.

Some level of fault tolerance for buggy MTP implementations on the device so if it crashes, it can be reset or formatted, or that if transferring a song fails, any playlist on the device that should contain it is updated.

You still have the Samsung YP i donated to you for last year's SoC for implementing this, right?

Ian Monroe said...

So for Kiwi's point, we should have an option in dynamic playlists that says something like "fill media device" (maybe only for smaller media devices?)

kiwi said...

@Ian Banshee is where I took the inspiration, it's the only player so far that makes it easy to work with a non-massive mp3 player. With it you can create dynamic playlists based on size or amount of tracks and sync that to the ipod.

Nick said...

If part / all of Amaroks collection is stored on a removable device and that device is plugged in but not mounted, it would be nice if Amarok could auto-mount that device when needed.

thekidder said...

MTP cover support, yes!

One of the things I remember getting incredibly frustrated by when using Amarok 1.4 with my MTP player was that it would transfers cover art - but at a terribly low resolution. I would end up with these awful, blurry covers on my player that were not pleasant to look at.

pugacioff said...

I'd like to see how much free space there is on MTP devices - amarok 1.4 did it and that's the only feature I really miss.

todd said...

As Billie hinted at, the ability to use a transcode script to automatically transcode incompatible files would be great. There were a lot of transcode scripts for A1, I assume there will be for A2 as well. Amarok would have to keep track of files that it transcode so it does not keep adding them every time the device is connected.

I also think the ability to randomly add a certain amount of music from a playlist makes a lot of sense. So basically set up a playlist, and you can resync it to add the next x songs or the next x mega/gigaytes of files to the device, or randomly add x songs or x gigabytes from the playlist.

Actually, having it part of the biased playlist, where you can set a certain probability of it selected a new song and a certain probability of adding a song that was already added before. That is until all the song have been added once, at which point the "added" counter for each song drop by one (that way songs that were added twice are still counted as being added once when the reset happens).

How will Amarok handle voice recordings from devices with microphones, or will it?

I do not know if this is even possible, but some devices have FM and/or AM tuners (are accept them as an add-on). Being able to connect to these and listen through Amorok (just listen if that is all that is possible, control them if more is).

Bugs Bane said...

*sigh* I just want my player (a creative Zen Mosaic) to *work*. Just to be able to transfer music on and off, and maybe have podcasts automatically uploaded.

It's an MTP device and I'm running Amarok nightly, but I still don't see any option to actually use my device, unless I'm just missing it...

Mark said...

Regarding transcoding, we actually plan to put this directly into Amarok at some point.

Making it a script was actually just a hack to save us some time, as we were pretty thin stretched back then. Technically and usability wise it didn't make a lot of sense though.

Mark Kretschmann

Jackson said...

Podcast support would be _very_ nice. Automatic downloading and syncing should be an option, as well as automatically deleting any ones that have been listen to. This is the one feature missing for amarok 2 to be the best media player around (I still use amarok 1 because of this).

awainzin said...

@kiwi: This feature has been discussed, mainly as a way out of the problem that you wish to sync all songs in local collection to a device that can't fit them all, but having it as an option aside from that could be great too.

@Bille: Corner case handling is one of the things that will be dealt with this summer, as well as GUI feedback of "device full," "device cannot play this track."

The unacceptable filenames issue is something dealt with at the libmtp level, because if a transfer fails, libmtp isn't very good about telling me why that was. Guessing it was the filename and trying to guess what format makes it happy and trying again is not a solution.

Yes of course I still have the YP, and MTP support to this point is mainly thanks to you. I'll do my best to fix these gripes you've had.

@Nick: That actually is a case that borders on being dealt with outside of media devices, since the local collection only uses mounted volumes for music (not iPods etc.). I believe this can be handled though, have you filed a bug?

@pugacioff: Yes that's one of the GUI feedback things I referred to in the post that a modification of the GUI of Amarok will allow me to show.

@todd: Transcode was authored by some guy who maintained it for a while, and then I think disappeared. I don't think anyone's started a script for A2 yet but i could be wrong. Having it available would preclude using it for transferring to devices though. This would be a project in itself, so unless someone (perhaps me later) does it, can't do it yet.

As to the fm/am thing, MTP is just a protocol for transferring media to/from a device, but not streams... as of right now anyway. This would be awesome to have MTP devices support.

@Bugs: In theory, if your device is in MTP mode and you plug it into the computer, Amarok should pick it up. Please file a bug if you haven't already.

@Jackson: As mentioned in the comments earlier by Widget, this would be great, and is now possible, so we'll see.

behavedave said...

Ipod Synching (even adding tracks individually) is most important, that is the only thing keeping me on 1.4 (I have just tried songbird and that has everything I need so maybe my new champ - I'm not too faithful).

There is no individual place to store radio stations, seems odd to keep them with playlists.

There is no way to search playlists.

There was only ever one plasmoid I found useful and that was the upcoming concerts. Why was it removed, it was the only good bit about the middle portion of the screen, without it the middle portion is just an obstacle to drag tracks over to the playlist.

Alex Wauck said...

Good n810 support would be awesome. So far, I have yet to find any music app that can automatically sync with a folder on a memory card (despite some saying they will) with transcoding to the necessary format. Apparently, there's some file you can put in the root of the card that tells it what format is desired, but nothing seems to pay any attention to that file.

Anonymous said...

Have you seen my posts in the devel list about the collection manager ? I won't be developping my arguments again here, but you can see mockups for it. Note these are proposition, since I'm not a programmer.

The mockups have notes though, so you will get the why and how.

Tomasz Dudzik said...

@Pierre-Luc Auclair: Amazing!

Anonymous said...

It'd be great if Amarok could scrobble to Last.FM even those tracks that were played on the portable media device.

As far as I remember, a Last.FM user already wrote something to handle even MTP devices.

awainzin said...

@Alex Wauck: Yes, unfortunately I don't have an N810 to develop with, but could perhaps look into getting one, since I know quite a few folks have one now.

@Pierre-Luc: Yes I have seen those posts, but I heard the general consensus was we were going to go about things another way. There's a Dev Sprint going on soon where I think some new interface is being proposed.

hook: Yes this goes along with the idea of synching. I myself listen to a lot of music as I drive with my iPod, so offloading the playcount from that would be nice, just a bit tricky in implementation. Offload playcount and reset to 0 on iPod? Offload playcount, then later not know how many of the playcount on the iPod is new plays? And so forth.

Keith Z-G said...

Unfortunately most of my issues wouldn't be addressed by your fixes/additions. For example, I really miss the feature in 1.4 to see the info on the podcasts; it's quite a regression to only get the title of each episode, especially for podcasts where I might only be picking and chosing which ones I want to put on my mp3 player (ie. where it might be "oh, the interview on that one sounds boring...but hey, in this episode there's doing blah? Sounds awesome, time to download it to my player!"). It's kindof ironic to gain more ways of copying over the podcasts when it's mysterious what their contents are.

Still, that can be gotten around; what's more infuriating is the inability to click-drag downloaded podcasts onto a file browser. As long as I could do that, my mp3 players would be supported enough for me! Then I could sit back and enjoy the rest of the new Amarok2 features. However, without even the ability to copy downloaded podcasts (or files in my collection or playlist, for that matter) from Amarok into a Konqueror window or such...well to be frank it's not nearly worth it to give up Amarok 1.4.

Keith Z-G said...

Err, to be clear, I greatly respect what you and the other devs do, and following Amarok2's development is always exciting. It's just that so many of the really basic features I counted on are still gone (click-drag from Amarok to file browsers, podcast episode info, etc), and thus while in theory I love Amarok2 in practice Amarok 1.4 is far more usable for me.

xian said...

I'l like to see support for the rio karma in A2, bug #155877 and #132713. It was suppported in A1, but the code did not make it over to A2.

Kaen_D said...

I don't know if anyone said it before, but is there a chance to add something like a "converter support" for different type o formats, before transference?

awainzin said...

@xian: First some media device refactoring is getting done, and UMS device support, but the Rio is far down the line atm, sorry.

@Kaen_D: Read the comments.

Nathan said...

3 Wishes/Questions

1) Being able to sync playlists to portable devices (not just the songs)

2) ipod synching has been mentioned, but my question would be regarding the other aspects of an ipod: videos, applications, settings, etc. Would amarok (focusing on audio) be able to sync these other things, also?

3) synching/transferring video files to a portable device - mp4, avi, etc.

awainzin said...


1.) Yes, going to be implemented but after the rest of GSoC gets done.

2.) That _would_ be cool, but a bit out of the reach of the core of Amarok, perhaps a nice task for a script...

3.) See #2

wim said...

For me next to being able to add music from a media device temporarily to the collection, the most important functionality is synching.

I need to be able to synch easily music from my PC with as well my Blackberry as my wifes Zen as the SD cards for my car stereo. All having different limits in sizes, and other favourite music.
That means for me:
- ability to easily manage playlists and have the songs transferred to the device
- ability to have also playlists transferred to the device (of course with relative paths auto-adapted, so that the device can use them)
- ability to synchronize changes in playlists and songs (so renew playlist, and add or remove songs as per changes in the playlist)
- ability to perform all this based on dynamic playlists in Amarok that generates static playlists on the media device

That would make it easy to manage the collection on the device also when you don't want the whole collection on the PC on the device (e.g. because of lack of space) just by working with the existing playlist features in Amarok. You can then simply have a some playlists per device.

Thanks in advance,


Erik said...

Oh to dream.

How about good UMS support w/ the Nokia N8x0? I especially would like something that manages my Canola2 music archives (w/ covers).

awainzin said...

@Erik: If I can get my hands on one such device, then I can make it happen, but right now my primary focus is the stuff lined out for Google Summer of Code, so it'll have to wait for after that.

Otherwise, soon the media device code will be good enough that some other dev with a device (read: everyone but me on the Amarok team) can do it =)

Anonymous said...

An absolute killer feature would be an integrated scrobbling for MTP devices (using their MTP playcount values).

I pointed out the details here:

Furthermore, if I copy or move tracks to my MTP player using amarok, tags are not copied to the player's collection. I only have the filename. (Using a SonyEricsson W980i Walkman phone). Maybe you can do something about this, but I guess, it's a libmtp issue (gnomad2 and mtpfs can't handle the tags as well).

Thanks in advance,