As you may have noticed, the new and improved version of Musicality I teased back in April still hasn't arrived. Short version: recent changes to OS X and the WebKit framework caused Musicality's audio features to stop working. I've been frantically working to fix it, and this has caused the release to slip. The good news is that this happened before the release (whew!), I now have it all sorted, and I am once again making progress. The beta testers have identified several areas I need to address (thanks everyone!) but overall things are looking good. I am going to bump a few features to speed up the release, so it will be a little less splashy than I had hoped, but that just gives me something fun to include in the subsequent updates.
The WebKit framework that ships with OS X has been split up to run in several different processes; a process is kind of like a little, independent application. So when you run a WebKit-based app like Musicality or Safari, there are now several little helper apps running in the background doing things like rendering webpages, running plugins, and in the new versions of WebKit, even playing audio.
It is fairly easy to monitor and intercept things that are happening in your own app. For security reasons, it is much harder to monitor and intercept things going on in other apps. This is a good thing: you don't want a malicious bit of code watching what you type, or tracking what you do, or just accidentally stepping on something because of a bug. Splitting WebKit into processes means that when one part breaks, the other parts of the app can keep running. But it also meant that Musicality could no longer get the audio it needed to stream.
After a lot of flailing, I found a way to get my code to run, I got my audio, and everything was looking good. And then OS X 10.10 came along and made the rules about what code is allowed to run within a process much more strict, and everything was broken again.
I have to admit: I really thought about giving up at this point. I've been churning over the same code for months now and I'm back to the drawing board, again. I'm feeling incredibly frustrated and my Impostor Syndrome is raging. That bottle of bourbon is looking really good. But I can't. I can't give up because I use Musicality all day, every day. I love my music, and I love having it fill my whole house (I have AirPlay devices everywhere). I love this app; even if it never makes another penny I must have it for myself.
So I after much teeth gnashing I dropped WebKit and essentially rewrote the entire application on Chromium. The app is now much bigger, which I don't like, but snappier and more capable, which I like quite a lot. And I now have full control over the audio, and all the source code should something change in the future. Once the dust settles and I finally get all of the pieces back together (which will take some time yet, and continue well after this next release) I will have a better app.
So…Musicality 3 is coming, really. And along the way I've been reminded why it is so important to love what you do. To find the opportunity in the challenges. And to never give up, never surrender.