Drag-and-drop

Today there is new version of Shufflizer that offers drag-and-drop for repositioning of songs.

In Android and iOS there is a drag handle. It looks like an equal sign. This is so that dragging and scrolling don’t interfere with each other (dragging is so much like scrolling in these operating systems). In computer desktop operating systems like Windows, simply drag the song using any spot in the display of the song.

New shuffle

Shufflizer has new shuffle algorithm. This is the action that occurs when you click a rand button.

The songs are shuffled in up to three sections. If there are any unlistened songs they are shuffled and put first. Then if there are listened songs they are split into two sections, each shuffled separately. One is less-recently listened songs and the other is more-recently listened songs.

If beenhere listen indicators are turned off then all songs are shuffled as unlistened songs.

Quietly

Shufflizer does not communicate this sectioning to the user. The rand button “just works.”

With the old algorithm, if the user was paying attention to the end of the list the user’s expectation that songs should be moving around when clicking rand was not met. Recently listened songs were pinned in a certain order at the end.

Now with the new algorithm more shuffling occurs. Shufflizer still puts recently listened songs at the end, but is less pathological about it.

Playlist song display

Each entry in a playlist is a song, displaying the song title, artist, and album.

On the left, the song’s position in the playlist is displayed, and also the beenhere listen indicator.  This indicator tells whether you have listened to the song recently in Spotify.  Songs with the beenhere listen indicator are pushed to the bottom of the playlist when you randomize.  If you click on the indicator, it clears.

The play button plays a preview clip of the song.  This does not count as a listen in Spotify.  It will not influence the beenhere listen indicator.

The remaining buttons are song position controls.  Clicking 1st move the song to the first position.  This example song already is in the first position, so the button is disabled.  Clicking down moves the song down one position.  In the tablet and hd layouts a few more buttons like these appear, such as an up button.

The rand button is the main attraction.  Think of it as the Shufflize button.  It randomizes the order of the songs, starting with the song you have clicked.  Songs above do not move.  Songs with the beenhere listen indicator are moved to the end of the playlist.

Downloading. Uploading.

Shufflizer download

When Shufflizer says it is downloading it means just the track listing, not the songs themselves:

Shufflizer upload

In Shufflizer, when you are done editing  a playlist, you upload it.  This commits your edits to Spotify:

There is a date added for each song in a Spotify playlist.  Because Shufflizer upload is redefining the playlist, all of these dates change to the current date.  Here is an example showing the dates in the Spotify desktop app, right after an upload from Shufflizer:

Spotify download

Spotify also has a download.  It means something different.  In Spotify, download means downloading the songs themselves, so you can then play them without incurring data charges or when you don’t have an Internet connection.

Shufflizer doesn’t know about and is not in any way affected by Spotify download.

 

Dups. Local files.

Dups

Shufflizer automatically removes duplicates from your playlist.  When it does this, it lets you know with an alert.

It was simpler for me to make Shufflizer delete duplicates than to make it accommodate them.  A fundamental motivation for Shufflizer is to not hear songs repeated.  Having the same song more than once in a playlist undermines this.

Local files

Shufflizer automatically removes local files from your playlist.  When it does this, it lets you know with an alert.

Probably most Spotify users don’t have local files in their playlists, or even know what they are.  Local files are mp3’s you have on your PC that you want Spotify to play.  They are not supported by the underlying technology upon which Shufflizer is built, the Spotify Web API, so I must remove them.

Don’t like these automatic actions?

Shufflizer isn’t immediately changing your playlist in Spotify when you see either of these alerts, and it certainly isn’t going to delete any files from your PC.  Shufflizer is making these adjustments to the copy of the playlist it is loading for you to edit.  A playlist is just a track listing, not the songs themselves, and no changes to your playlist are saved until you upload.  Don’t like these automatic actions?  Don’t upload.

 

 

Beenhere listen indicator

Shufflizer knows what songs you have listened to recently.  These are indicated with a beenhere icon.  Beenhere is a concept from maps, a symbol to indicate places on a map that you have visited.  Shufflizer uses it to indicate songs that you have listened to.

Beenhere songs will be put at the end of the playlist the next time you randomize.  Sometimes you don’t want this.  Maybe you were auditioning a song deciding whether to add it to the playlist and don’t want this to count as a listen.

Beenhere can be cleared

You can clear the beenhere indicator by clicking on it.  Now the song is treated as a song that has not yet played.

Adding new songs

You want to hear your playlist randomized.  You don’t want to hear recently played songs.  So you are using Shufflizer instead of Spotify shuffle play, and you listen to the playlist in its song order.

Adding new songs

In Spotify you find some new songs and add them to the playlist.  Spotify always puts them last.  You might want to hear some of these songs early in your mix because you are excited about them.  If not, then you at least want them randomized into the mix, instead of at the end.  So before you resume listening to the playlist, you use Shufflizer again:

  • Download playlist from Spotify
  • Jump to the end (where the new songs are)
  • Clear the beenhere listen indicator on some songs
  • Shoot some songs to the top
  • Jump to the top
  • Change the order of the first few songs
  • Shufflize
  • Upload playlist to Spotify

Now in Spotify, simply start listening from the top.

Once you are accustomed to doing this, it doesn’t take more than sixty seconds.

My Spotify app

I am creating a Spotify app using Angular.  I aim to provide an alternative to Spotify’s shuffle play.

Spotify shuffle play

Spotify does not document for us the internals of their shuffle play mechanism, but it seems to construct a new random selection from your playlist whenever you return to the playlist after listening to something else.  I call this resampling.  The problem with resampling is that a song that you have recently heard might play again while there are other songs in your playlist that have not yet played once.

Use my shuffle instead

My solution is to provide an external utility that shuffles the playlist itself, rather than just making random selections from it for the play queue.  Then the user can turn off Spotify’s shuffle and listen to the randomized playlist in its new order.  The effect is much like Spotify’s shuffle play but each song plays just once.

Until you start from the top again.

Or give up and simply go back to using Spotify’s shuffle play.

Because you got lost.

When you return to a big playlist it’s practically impossible find where you left off, assuming you even remember.

Use my shuffle again

So there is a bit more to my solution.  My shuffle knows what you have listened to and puts these songs at the end.

Returning to your big playlist?  Use my utility to shuffle it again.  Then in Spotify simply start listening from the top. The songs will be in random order.  You will not hear recently played songs.  You don’t have to find where you left off.

Still under development

My shuffle utility is my project for learning Angular.  So I am taking my time with it.  But it’s pretty far along now, so I expect to make a version of it available soon.  I will continue to talk about it – a few more features it has, and also some of the challenges behind the scenes both with Angular and with the Spotify API – in future blog posts.