The World’s First MachineLearning-enabled musical keyboard !?!

Today Amazon released AWS DeepComposer which is a keyboard that will let you “create a melody that will transform into a completely original song in seconds”.

AWS DeepComposer keyboard

To me it looks like an Arturia Keystep knock-off.¬† I’m still puzzling over whether or not there’s any special ML-related features – or is it just a MIDI keyboard that comes with some AWS credits. Anyone with any insights, please let me know.

1 Comment

How Generative Music Works

How Generative Music Works ūüĒä 2019-12-02 14-35-22

Tero Parvianen has en excellent introduction to Generative Music with lots of live examples. Well worth 20 minutes of your time with lots of food for thought.

How Generative Music Works

Leave a comment

Music Machinery Chapter 2

I’ve spent the last 15 or so years thinking mostly about the machinery that gets music from the bits in an audio recording into the ears of a listener. There are dozens of examples of tools for music discovery, organization and listening in the sidebar at the right on this blog.¬† But lately I’ve been thinking quite a bit more about the machinery that goes into getting the bits into an audio recording in the first place.¬† I’m particularly interested in two aspects of this:¬† (1) music synthesis – the machinery that can create the sounds from scratch and (2) generative music – machinery that can generate the music from scratch.

If you are interested in synthesis and generative music, feel free to follow along in Music Machinery Chapter 2. I’m a newbie at it all so pointers and guidance will be greatly appreciated.



Is this thing on …

Woah, its been a while since I’ve posted to this blog (three and a half years to be exact).¬† I think it’s time for a bit of a reboot on this blog.¬† Stay tuned!


Girl Talk In A Box update

2016-04-30 at 7.31 AMI’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.



Leave a comment

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:

2016-03-13 at 9.35 AM

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.

2016-03-13 at 9.27 AM

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.

Leave a comment

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:

2016-02-27 at 9.07 AM

Using this filter we can take our favorite dubstep playlist and eliminate all the radio edits.

2016-02-27 at 9.09 AM

To try this yourself, you can import the program.

Thanks to Drew Davidson for the component suggestion.


Leave a comment

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:

2016-02-21 at 9.11 AM

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:

2016-02-21 at 9.48 AM

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.

2016-02-21 at 9.57 AM

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.



Leave a comment

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:

2016-02-14 at 11.09 AM

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:

2016-02-14 at 11.32 AM

I then connect it up to a component that extracts the last 20 songs from its source:

2016-02-14 at 11.35 AM

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:

2016-02-14 at 11.40 AM

where both Playlist (abs date) components are configured similarly:

2016-02-14 at 11.41 AM

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.

Leave a comment