Today we’re going to turn our attention to the Music app. This app is a little bit different in the fact that it didn’t start off as a Core App, or even as a single app. Several people had started on music apps or mockups for music apps, so we brought them together to combine their efforts into a single app. Because of this, instead of progressing through the usual steps of defining requirements, designing user experience and then implementing features, we had all three things coming together at the same time. This put the Music app both ahead and behind the others in different ways.
The feature targets we set out for dogfooding the Music app are all larely half-done, as a result of how the app is the amalgamation of several formerly independent efforts. You’ll find that many of them are complete on the back-end but need to be integrated with the new front-end work, or vice-versa. As such, this is a project where a little bit of effort can make a very large impact. To get the Music app ready, we want to get the following working:
- Read in music from ~/Music.
- Browse a list of artists.
- Browse albums by an artist.
- Browse songs by an artist.
- Play a song, with transport controls (Play, Stop/Pause, Skip Back/Forwards).
- Bonus: pull in album cover/details from the net.
Just like the Calendar app, there are some things that we want the Music app to do that require work to be done on the platform side. Specifically, we want the Music app to continue playing songs when you switch away from it or turn off the phone’s screen. Currently the platform will suspend the Music app’s process when this happens, so playback stops. However Canonical’s Jim Hodapp, who has already done a lot of work on multimedia integration and gstreamer, will soon begin work on a system-wide media playback service that the Music app will be able to hand songs off to. Until then we will continue using the Qt Multimedia APIs to play songs while the application is still active.