Blogs

Future Directions

Post Songbird 1.1.0, Now Playing List will probably change dramatically in a way that hasn't been possible before. This will be due to a bug fix that didn't make it into 1.0, as well as a patch that I wrote and got accepted, which will most likely appear in the next major release. What this means is that I'll be able to completely rewrite the add-on to avoid all those crashes and bugs, and also eliminate the need to have those confusing modes. I thought I'd share with you the new user interaction model I hope to implement and get your feedback

  1. Play a track from the main window
    Starts playing the track as normal
    The now playing list populates itself with the new playlist
    The tracks are displayed in the order they are going to play in, not the order they appear in the playlist
    The playing track will therefore appear at the top of the now playing list if shuffle is enabled
    The now playing list is renamed back to 'Now Playing' if necessary
  2. Play a track from the now playing list
    Starts playing the track as expected
    This does not make the track appear at the top of the now playing list, as the previous action would, instead playback has "skipped ahead" to this track
  3. * Reorder the position of tracks within the main window;
    * Add tracks to the main window;
    * Remove tracks from the main window;
    * Change search/sort/filter on the main window

    The now playing list populates itself with the updated playlist
    The tracks are displayed in the order they are going to play in, not the order they appear in the playlist
  4. Add tracks to the now playing list;
    Remove tracks from the now playing list

    The now playing list is renamed to 'Custom Playlist'
    The now playing list becomes a new playlist that is now out of sync with the main window
    Starred actions (*) have no effect on this playlist
    If playback has already started, the custom playlist is what will continue to play, not the original playlist
  5. Reorder the position of tracks within the now playing list
    This changes the track order that the playlist is going to play through, whether it is showing 'Now Playing' or 'Custom Playlist'
  6. Change sort on the now playing list
    This is disabled and has no effect

As you can see, no where have I mentioned the work 'queue' or talked about having to switch modes. The changes that are going into Songbird 1.1.0 should hopefully enable these things to happen naturally like they should. It still makes a distinction between 'Now Playing' and 'Custom Playlist', but this happens automatically and merely indicates whether the now playing list is still in sync with the main window, or has been altered "on the fly".

You should also be aware that when I say "Add tracks to the now playing list" I haven't said how, so this could be via drag and drop, via pressing 'Q' on the keyboard, via a right-click menu with 'Queue Next' or 'Queue Last' etc. Also this should be possible from any playlist, not just the library.

Some notes on the design of Songbird and Now Playing List

The last time I released a version of Now Playing List was about 3 months ago, and in that time I've received lots of feedback. I haven't responded to much of it - I know, but I've combed every comment, every get satisfaction forum, every bug report, and in the next release of the extension for Songbird 1.0 I've tried to address as many things as possible.

However there are many things that are just not possible to do in Songbird from an extension due to the way Songbird is design.

The design of Songbird

Songbird organises your library in three 'layers': libraries, medialists and views.

  • A library is what holds your music, it is essentially a special medialist which has no duplicate tracks.
  • A medialist is the data model that represents a playlist in the service pane (the left bar).
  • A view is what you see in the main area. It is a medialist with sorting and filtering applied to it.

Why Now Playing List is the way it is

If shuffle is not on, Songbird will play a view in order from first to last. If shuffle is on, Songbird will play a view in a random order. Whether or not shuffle is on, the order that a view is played in is predetermined before the first track has even started playing. Furthermore once the view has started playing it is impossible to change the order mid-sequence.

For this reason Now Playing List has two modes (I know older version had 3 - more on this later). Since it is called "Now Playing" List, one mode is there to actually show what is 'now playing'. It's really so you can see what's playing and browse a web page at the same time. Queuing involves changing the order that a view gets played in, which is impossible, but I can change the order of an underlying medialist, which is why queuing is implemented as a separate playlist in its own mode.

I know that this isn't the behaviour of say Winamp (which I have never actually used, but this is the impression I get from the feedback I've received). It is the best I can do from an extension without a major rewrite on the part of Songbird itself.

Changes/Improvements

I understand that previous versions of the extension haven't been that usable, so I've made some changes based on the feedback I've got.

First of all the bugs where it would think it's playing the second track in the queue when it's not is gone (I hope?). Also it doesn't jump to the queue and play that if you double click on a track in the main area. Instead it now adds that track to the top of the queue and plays the one you clicked.

An idea that I thought was nice was the ability to tell something to play as the last song in the queue or as the next song coming up. If you right-click you'll now see 'Queue Next' and 'Queue Last'. I've tried adding shortcut keys for these but it didn't work, I don't know why.

Regarding the different modes, there used to be three and you had to cycle through them all - I never liked this. Custom and Queue mode are essentially the exact same thing just with different playback behaviour. So I've consolidated these two modes into one, so now there's no three-way toggle (there is still a two-way toggle now but it should be less cumbersome). Changing the behaviour of this mode is now done by a button. Since it really toggles whether to turn queuing on or off -- or the order of playback -- I put it next to the other buttons that control the order of playback, i.e. shuffle and repeat.

What this also implies is that even when the display pane is closed, queuing will still work as normal. This is true.

A design quirk I'm not sure is correct, but is what I've settled on is that if you are in the 'now playing' mode and you click this queue button, it will not switch modes, you'll still be in 'now playing' mode. The queue mode only takes effect once you explicitly go to the non-now playing mode.

So there you go. This isn't the end though, I'm not going to wait another three months before I release another version this time. I'm aware that I haven't addressed everything, but hopefully it'll all come together eventually.

Syndicate content