TRAX app replaced TAAE (The Amazing Audio Engine) with Superpowered for low memory, fast loading low-latency audio.
We get many emails from developers who love building apps with Superpowered. Occasionally, we ask them if they would like to share their experience. Marc Castles, the developer behind TRAX, an iOS iPad App that makes running live backing and split tracks RAD!
Over to Marc:
Almost 2 years ago I set out to create the best live backing track player available on iPad. It was targeted at musicians and was to give full control of a backing track, allowing musicians to loop, skip or jump to any section within a song.
One of the first problems I encountered was working out how to skip to different points within a song without delay. I needed an audio engine that was fast.
After playing around with AVAudioPlayer and a few other options, I settled on ObjectAL. ObjectAL allowed me to load the entire song into memory and jump to any point within the song without any delay. After a few months of hacking together the other components I had a working app, which I called TRAX and released on the App Store.
I used TRAX for 6 months and had lots of positive feedback. However, as I added new features and fixed bugs, it became clear that TRAX had some glaring issues. Load time and memory usage were making it less than ideal in a live environment. I also wanted to be able to independently mix the left and right channels. This was something I couldn't get to work no matter how I tried. It became apparent that ObjectAL wasn't going to cut it so I decided to switch to a different audio engine.
The Amazing Audio Engine (“TAAE") seemed like a good fit and had some great features.
I managed to switch engines to TAAE and figured out mixing fairly easily. I also discovered that converting the audio to raw CAF files greatly reduced the loading time. Great! Fast forward a few months and I released version 2 of TRAX.
Proud of myself I soon realised I'd introduced a few new issues. CAF files are very large and memory usage was still a big problem.
I needed to be able to buffer certain points of a compressed audio file. Not the entire song... but how could I do this with TAAE? I searched and asked and tried lots of different angles. And I couldn't get it to work, but then I stumbled across Superpowered.
Superpowered claimed to play audio super fast and with low memory usage. I was skeptical and, to be honest, I didn't really want to change audio engines again, but their promise made it worth a look.
I pulled together a quick demo and it worked.... Brilliantly.
Fast loading, low memory, and small disk usage! I almost couldn't believe it. Even my old iPad 2 ran it beautifully. My only issue was that skipping to positions had a slight delay. After reaching out to Superpowered they pointed me in the right direction. Superpowered has a cachePositions method! Switching out TAAE took a little while but once I got it working I was so pleased. I still remember the moment I leant back on my chair staring at my computer with a big grin across my face, totally astounded!
In December 2015, I released version 2.3 of TRAX which now runs on Superpowered’s audio engine. TRAX 2.3 feels less like a toy and more like a professional audio app. It's a completely new experience.
Version 2.4 of TRAX is almost ready to release. The new release includes BPM detection, pitch shifting and time stretching. All of these features were easily added thanks to the Superpowered audio engine. I couldn't be happier.