Allen Pike • December 6, 2018
DJ Apps: Closing Time
Once upon a time, Steamclock launched two DJ apps for iOS: WeddingDJ and Party Monster. The pitch was simple: a queue-centric flow, smooth crossfades, and an easy interface for amateur DJs.
WeddingDJ was a hit with brides, grooms, and semi-pro DJs alike. Party Monster was well-loved for its opinionatedly queue-based UI, and fans enjoyed its habit of refusing to play Nickelback. Before long, these apps were paying our rent – which is a rare milestone in the indie iOS app world.
Then, the cloud happened.
Man Yells At Cloud
Don’t get me wrong, the cloud is great. I love the cloud, some of my best friends are clouds.
However, Apple’s transition from iTunes downloads to cloud-based streaming gradually hobbled this kind of DJ app. First it was iTunes in the Cloud, and iTunes Match – cool services, but they arrived without any way for apps like ours to trigger a download and make these tracks available to play.
Then came the bomb: Apple Music. Not only can crossfading DJ apps like ours not download Apple Music songs, we can’t even play downloaded tracks, since they they are protected with DRM.
As we wrote in 2015, this has been a pain for our users, and attracts angry and frustrated reviews. Even with app descriptions that started with all-caps “THIS APP DOES NOT WORK WITH APPLE MUSIC“, we’d get users who were upset – and reasonably so – because they’d downloaded our apps but couldn’t use them with their music.
So in 2016, we rounded up the various bug reports we’d made and published a review of the various issues and limitations with the APIs for DJ apps. Essentially, we needed either improvements to the the crossfade-capable but low-level AVFoundation APIs to let them play Apple Music, or additions and fixes to the high-level MPMediaPlayer APIs to support crossfading and queueing.
Livin’ On A Prayer
To their credit, Apple soon made a handful of fixes that changed Apple Music support at the MPMediaPlayer level, but 2 years later there are still multiple showstopper issues. In 2018, it is still not possible to make a nice queueing and crossfading DJ app that can play Apple Music tracks in the background, so this use case is clearly not a priority for them.
In the meantime, our apps’ ratings just have just trended lower and lower. For every delighted customer who’d bought their music, we’d get one or two who had no use for a DJ app that didn’t support streaming.
Even though the apps still make some revenue, we’ve reached a tipping point. Too many users are having a bad experiences, and it’s only getting worse. That’s not the kind of product we want to sell at Steamclock. We’ve tried various avenues – filing bugs, investigating Spotify, and prototyping simple “Baby Party Monster” demos that are possible with Apple Music, but none of these paths lead to what our customers are asking for.
So, the time has come to sing one last song for Party Monster and WeddingDJ. Today, we removed them from sale. The App Store should allow people who own these apps to download them indefinitely, until a future iOS update eventually breaks compatibility. It was sad, but it’s time.
Don’t Stop Believin’
These apps powered more than 100,000 weddings, along with years of parties and road trips. We loved developing them, and we’re so sorry we couldn’t find a path to modernizing them.
That said, we’ve learned a lot in the process, and have put those lessons into building dozens of other apps. We’ve shipped many for our clients, but in the last year we’ve been increasingly prototyping new internal apps, iterating them, and betting on ones worth shipping. This winter we’ll be shipping a Mac app for issues and pull requests, and next year we finally launch our turn-based spy game and v1.0 of our Bluejay iOS library.
Of course, that’s little consolation for folks who wish a nice app for crossfading and queueing Apple Music tracks could exist. We wish it could too. And hey, people are still trying! Maybe one day it will be possible.
We’ll keep an eye open – just in case.
Newer PostA New Look for Steamclock
Older PostOn the Origin of isMultiple