Girl Talk In A Box update
I’ve pushed out some updates to GirlTalkInABox – there are now some nifty filters (chorus, phaser, delay and wahwah), and you can interactively adjust the playback rate of the song. A few other minor changes as well to make live performances a little easier. Check it out at GirlTalkInABox.
Smarter Playlists – My Top Tracks
I’ve just added a new Smarter Playlists component called My Top Tracks. This track source will generate a list of the top 50 tracks from your recent listening history. You can choose from 3 different time ranges:
- short term – the last month or so
- medium term – the last half year or so
- long term – the last several years
The component configuration looks like this:
Here’s an example program using the new component to surface up tracks that I’ve listened to a lot in the past that haven’t been getting a lot of play time in the last half-year.
Feel free to try out the new component and send me feedback via the google group.
update – to use the new component, you will need to logout and then log back into SmarterPlaylists to grant it the extra permissions it needs to read your recent play history.
Most popular SmarterPlaylists components
As of this morning, there have been 1,363 SmarterPlaylist programs written. Currently there are 300 SmarterPlaylist jobs running periodically. I was wondering what were the most popular components, so I took inventory by looking at all of those 1,363 programs to see which components were used the most often. Here’s the list:
4046 SpotifyPlaylist
1276 Sample
709 EchoNestGenreRadio
673 Concatenate
563 DeDup
499 PlaylistSave
455 Shuffler
441 TrackFilter
394 EchoNestArtistRadio
325 comment
248 Sorter
225 RelativeDatedSpotifyPlaylist
222 MySavedTracks
218 ArtistTopTracks
217 Alternate
200 PlaylistSaveToNew
194 LongerThan
155 EchoNestArtist
141 First
129 AlbumSource
125 DatedSpotifyPlaylist
117 Mixer
116 ReleaseDateFilter
111 Danceable
108 SeparateArtists
89 MyFollowedArtists
82 AttributeRangeFilter
79 RandomSelector
77 Energy
72 Tempo
69 ArtistDeDup
68 ArtistFilter
56 Explicit
42 MixIn
39 MySavedAlbums
37 IsDayOfWeek
30 TrackSourceByName
25 SimpleArtistFilter
24 AllButTheFirst
20 ArtistSeparation
19 Weighted Shuffler
19 ShorterThan
18 Spoken Word
16 TrackSource
12 RandomStreamSelector
10 Last
5 IsWeekend
4 Live
4 AllButTheLast
4 YesNo
3 Annotator
3 Reverse
1 TextFilter
The big surprises for me were to see how often the Echo Nest Artist and Genre radio are being used, and even after being around for only a week, how often the RelativeDatedSpotifyPlaylist is being used.
Title filtering in SmarterPlaylists
This morning I added a ‘title filter’ component to SmarterPlaylists. This component lets you filter tracks based on regex string matching of the track title. This is useful for filtering out certain types of track – such as remixes, radio edits or songs with 9 in the title.
The title filter allows you to invert the sense of the filter, and makes it easy to ignore case in your matches as well:
Using this filter we can take our favorite dubstep playlist and eliminate all the radio edits.
To try this yourself, you can import the program.
Thanks to Drew Davidson for the component suggestion.
Filtering playlists by relative date added to the playlist
A common #smarterplaylists feature request has been to filter playlists by the relative date in which a track was added to the playlist. Relative date filtering would allow you to do things like extract all the tracks in my “favs playlist” that have been added in the last six months. Using a relative date like ‘six months ago’ versus an absolute date like ‘August 21, 2015’ makes it possible to write a #smarterplaylists program that will continue to surface up the tracks from the most recent six months, no matter how far in the future it is run.
This weekend, I’ve added support for a Playlist (Rel Date) component that will filter playlists by the relative date added. Here’s an example configuration for the component:
Relative dates are given as you would say them. Some examples of the type of relative dates supported are:
- 1 month
- 2 days 2 hours
- 3 years 2 months 2 days
- 3 years 2 months and 2 days ago
- 3 years, 2 months and 22 days ago!
- 1 h 3 w 2 d
- last week
- last month
- last year and three weeks ago
- six weeks
- a week ago
- twenty days ago
- 6 mnths, 2 wks
Keeping it Fresh
Here’s an example of how we can use the relative date filter to help us keep a periodically updating playlist filled with fresh tracks.
Here’s my Gothic Metal sampler. It collects songs from a number of gothic metal playlists, selects songs at random and adds them to a playlist called Gothic Metal Sampler:
This program is scheduled to run once a day, giving me a fresh playlist of gothic metal to listen to on my morning commute. Unfortunately, the playlist isn’t always so fresh. There’s nothing to prevent the same songs from appearing over and over. We are relying totally on the throw of the virtual dice to keep the playlist fresh.
With the new relative date support, this is very easy to fix. The idea is to simultaneously update a separate archive playlist that keeps track of all the songs that have been ever added to my gothic metal sampler. I can then use the new relative date support to extract all the tracks that have been added to that playlist in the last week and use that set of tracks as input to the mixer track filter which will ensure that those tracks will not be included in the output. The result is that the Gothic Metal Sampler is updated every day while no song will appear more frequently than once a week in the playlist.
Feel free to import the program for study and use.
Using the relative date filtering in this fashion is a pretty handy way for you to incorporate history into your programs.
yet another SmarterPlaylists component
Today I added a new SmarterPlaylists component. It has the catchy name playlist (abs date). It works similarly to the standard playlist component that sources tracks from a Spotify playlist, but it lets you order and filter the tracks based upon when they were added to the playlist. With playlist (abs date) you can specify that you want the tracks returned in normal playlist order, or in the order in which tracks were added to the playlist. You can also filter the tracks so that only tracks that were added between a range of dates are returned.
Here’s what the configuration looks like for the component:
Some possible use cases:
Let’s just listen to the most recent 20 tracks in my “Fav songs playlist”. To do this I add the Playlist (Abs Date) component, and configure it to read songs from Fav Songs and return them in date added order:
I then connect it up to a component that extracts the last 20 songs from its source:
Here’s a Valentine’s Day use case – you want to generate a romantic list of songs that you and your SO were listening to when you first started dating last summer. You can build a playlist of songs that you added to each of your fav songs playlist during that time like so:
where both Playlist (abs date) components are configured similarly:
This doesn’t handle all date related use cases yet. For instance, it’d be great if we could extract out songs from a playlist based upon a relative time scale … such as all the tracks that were added in the last week. Support for relative dates will be coming soon.
Better attributes info in SmarterPlaylists
I made a little update to SmarterPlaylists today to give you more info about the different attributes you can use to sort and filter your playlists. For instance, if you are adding a Range Filter to filter your playlists based upon a particular attribute, you will get a detailed description of the parameter you are filtering by along with info on the valid range of values for the attribute. Here’s an example:
I’ve also pushed out some stability updates to the backend server so programs that mysteriously failed to run in the past, will likely start working now. The slow and steady march to a Version 1.0 release is continuing. I’ve been getting lots of requests for new features. Currently on the top of the ‘new features’ to do list are:
- filtering playlist based on the date/time when tracks were added (i.e. get the 10 oldest tracks in the playlist, or get all the tracks that were added in the last 10 days)
- filtering by genre (i.e. get all of the tracks from my discovery weekly that are heavy metal)
If you have more suggestions, let me know with a comment or tweet at me at @plamere.