Rob Jackson
iOS apps
Hello!
My name is Rob Jackson. I develop virtual instruments and modules for the Voltage Modular environment as Waverley Instruments. I also develop apps for iOS under my own name.
This page deals with the iOS side of things, so if you're interested in, or need help with a specific app, then you're in the right place!
For technical support or general questions, please send an email.
From 2025, I'm currently working on several new AUv3-based audio apps for iOS. Please check the App Store for more details.
User Guides - Legacy Apps
The following user guides are for older iOS apps released between 2015 and 2020. Please note the technical explantion addressing concerns around these apps being abandoned.
Are these apps abandonware?
Short answer: No! I'll endevour to update them as needed, but only for bug fixes or when an iOS update ends up breaking or changing something to the detriment of the app.
Longer answer: This might get a little technical, but hopefully it might stop a few folks yelling "abandonware" at me...
All of these apps are written using Swift. In the case of the something-scaper apps, they rely on an Apple framework called AVFoundation. When I first developed moodscaper for iOS 9, AVFoundation looked really promising, especially as on the audio side, it contained Swift wrappers around Audio Units - what we now know to be the be all and end all of music making on iOS!
However, there wasn't even (and still isn't...) a documented way of using AVFoundation with Swift to support IAA, now "deprecated" by Apple, but stick with me...
After a lot of trial and error, I worked something out and got IAA working with Swift / AVFoundation. I'll be honest, the code is pretty nasty, but the interesting thing is, ultimately, to support IAA, what you expose to the outside world, is actually, yep, you guessed it... an Audio Unit!
So I figured, if they were that close, then maybe Apple would eventually provide a "nicer" way of doing what I was doing. So I waited... iOS 10? Nope. 11 maybe? Nope... You get the picture. Instead all we got was...
IAA is deprecated. Use AudioUnits instead.
Um... OK, but how? And technically, I am using AudioUnits, albeit within their AVFoundation wrappers. I can't think of any significant changes in the context of music-making to AVFoundation since iOS 9. My impression is that it's been re-purposed for things like VOIP, etc.
So the scaper-apps are kinda stuck where they are. Doing AU versions would entail an entire re-write, plus does an AU version of touchscaper even make sense? FWIW, it doesn't to me.
Back to AudioUnits...
Eventually, Xcode added support for creating AudioUnits using C++ for the DSP, Swift for the UI, and Objective-C to glue them together. Sound clunky? Yeah... it kinda is IMHO. The reasons for not being able to use Swift for the DSP are well-documented / discussed, so I won't do that here.
So I basically needed an entirely different approach that didn't use AVFoundation, plus I still wanted to use Swift as much as possible. So I wondered if it would be possible to create my own Swift wrappers around Apple's AudioUnits. Essentially, that's what moodunits does. I created wrappers for some of the effects and also Apple's sampler.
The effects were pretty trivial, but that hadn't really been done before at the time, but the sampler was a bit more interesting as it supported the EXS24 file format. Well... kinda... It supported a subset of what you could create in Logic. There was a lot of trial and error, because, yep... you guessed right again, none of this is documented.
Anyway, it allowed me to create simple sample-based instruments in Logic, and then have those available as downloadable IAPs from the moodunits app. Pretty cool, huh? Well it was until...
Apple decided they weren't going to host new 3rd party IAP downloads anymore, although they would continue to support existing content. At very short notice, my "ever expanding" collection of instruments for moodunits, suddenly became "never expanding". Other developers have now also exposed Apple's Audio Units, even the mighty AUM! So sad to say, moodunits doesn't really warrant any further development in terms of new features, but it will continue to be supported for as long as possible so folks can enjoy the collection of instruments I managed to upload before Apple pulled the plug!
Finally, we have Waverley XL and Waverley Tables. These are basically the same idea, but with the sample content baked into the app so it's not a separate download / IAP. By today's standards, these apps aren't really anything special, mainly due to the limitation of what you can do with Apple's sampler on iOS - not everything works as it should, loop cross-fades being a good example. You're also limited to 10 parameters and that runs out pretty quick as just supporting an ADSR envelope takes up four of those! So a bit like moodunits, I'll continue to make sure these work as new versions of iOS come out, but they can't really get much in the way of new features due to the technical limitations I've mentioned, plus they weren't really that well received on release. IIRC, most of the discussion centred around a 1GB download for an app being a bit much :-)
Ultimately, there's a limit to what could be done with this Swift wrapper technique and I think I hit the limits with moodunits, especially as far as the sampler goes.
So there you have it - not really abandonware given I've just spent a week re-building all these apps, fixing loads of errors due to new versions of Swift, deprecated (there's that word again...) API calls, new iOS versions, etc., etc.
What's next? Watch this space :-)