Taking iTunes a step further

In recent years, iTunes has become more of a money-making machine for Apple than it ever has been, so of course they’ve invested lots of dev time into making the storefront and payed portions of it beautiful user experiences.

Unfortunately for power-users, the energy they’ve diverted into Apple Music has left the song-management and iCloud syncing riddled with bugs that have had surprising longevity over several major versions.

For example:

Renaming an album or artist in iTunes prompts suggestions to fill in the box as you type. Unfortunately, there was no way to NOT choose the auto-suggested item by backspacing or clicking out.   This lead to having to add spaces after artist names in order to get ‘Cher ‘ without being forced to accept ‘Cherish’ by the autoprompt.   This issue was in iTunes for over 20 months before being fixed in the latest release (12.2.3).

Screen Shot 2016-01-13 at 8.03.27 PM

So what’s next?

For a long time I’ve been thinking about writing a replacement to iTunes.  It’s surely a mammoth task, but at heart it’s just a database interface with a media player built in.  It involves dealing with lots of tabular data, and providing a way to edit and organize it, comparable to a SQL frontend like phpMyAdmin.  In other ways it’s similar to Gmail, where you have some content with metadata that you sort out of a central pool using labels and stars.

We can learn from the strengths of iTunes:

  1. Add arbitrary SQL-style queries to search (a la smart playlists)
  2. Songs that act like normal ones but are stored in the cloud (a la Apple Music)
  3. Social network features like sharing music (a la iTunes Pulse)
  4. Machine learning on your music library to suggest playlists (a la Genius)

But we can add so much more:

  • Add songs from web to library without downloading them (like 1001tracklists.com)
  • Soundcloud-style public feeds of your ❤ music (or any other playlist)
  • Songkick integration to flag your artists that have nearby shows
  • “Inbox” for music that lets you treat music like email, incoming is selected from friends, soundcloud/bandcamp, machine learning, and you can “archive” music to your library/playlists, or delete it to never see it again (~10 new songs/day)
  • Automatic word2vec trained on your genres to make playlists along certain moods
  • Machine-learning analysis on your skips and plays for “smart shuffle”
  • Like and dislikes that have timestamps showing when you liked them
  • Shazam-style analysis on songs to correct ID3 tags and album art
  • Ability to “follow” other peoples streams in your library
  • Ability to live-broadcast what you’re playing like a radio channel to mobile users around you
  • Ability to publish your music feed as RSS/embed it in a website
  • Easy labels system for songs (like Gmail)
  • Smart, custom deduplication that will prefer higher quality audio files and merge ID3 fields
  • DJ features that let you mark/flag individual points or sections of songs with tags, and optionally split them into separate files (as references) (also great for hour long radio shows to tag individual songs)
  • Ability to share entire playlists or folders
  • Full play history stored separate from last played & last skipped
  • Easy lyric fetching and display, including inline rap-genius explanations like lots of Chinese music apps



This could easily be done as a self-hosted web-app or native app that has access to local files on an HD, along with an internet connection and graceful degradation if one is not available.

The only way to keep it legal is to make it self-hosted, so that no central authority is collecting revenue for played songs, or controlling what sources are used to broadcast music.

It could also theoretically be done using iTunes plugins, a separate app, and a FUSE-like file system to create mock-audio-files for web songs that fetch audio on the fly when opened.

I’ll put it on my rapidly-glowring “next open source project to start but never finish” list.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s