Loopy Pro: Create music, your way.
What is Loopy Pro? — Loopy Pro is a powerful, flexible, and intuitive live looper, sampler, clip launcher and DAW for iPhone and iPad. At its core, it allows you to record and layer sounds in real-time to create complex musical arrangements. But it doesn’t stop there—Loopy Pro offers advanced tools to customize your workflow, build dynamic performance setups, and create a seamless connection between instruments, effects, and external gear.
Use it for live looping, sequencing, arranging, mixing, and much more. Whether you're a live performer, a producer, or just experimenting with sound, Loopy Pro helps you take control of your creative process.
Download on the App StoreLoopy Pro is your all-in-one musical toolkit. Try it for free today.
Official documentation for audio dev on iOS/macOS?
After not doing hardly any serious work on Apple platforms for the past 6–7 years, I thought I'd try my hands at some audio applications. But I'm having some trouble finding comprehensive and up-to-date documentation.
There used to be reasonably decent guides for the various tools and subsystems, but I can't find anything more than really terse references and the occasional specialised article on things like porting code to Apple Silicon or debugging out-of-process audio units.
The old guides are still available in the archive, but they haven't been updated since about when I last worked on mac dev! I'm kind of hoping not having to start from the old guides and work my way through ADC videos year-by-year to see what has changed.
Any pointers to good up-to-date reference materials will be greatly appreciated! (Official docs, books, blogs etc.)
Comments
If you like C++ and want it to be cross platform (even just iOS and macOS), I think JUCE is great: https://juce.com
Yes there are some iOS features that take a while to get added but the theory goes it shouldn't just break with every update as you can just update your version of JUCE.
David
Because there isn't anything that's both comprehensive and up-to-date.
The WWDC videos and associated sample code are just about about all there is from Apple other than the Xcode documentation which is superficial and, quite frequently, missing any explanation of the frameworks. And occasionally completely missing functions / methods / types: you have to resort to reading the header files.
What makes this worse is that CoreAudio, CoreMIDI and Audio Units are complex and initially very difficult to understand and use correctly.
Official docs: none.
Books: "Learning Core Audio: A Hands-On Guide to Audio Programming for Mac and iOS: A Hands-On Guide to Audio
Programming for Mac and iOS" by Chris Adamson is badly out of date now, but it got me started.
Blogs: rockhoppertech.com/blog/ helped get me going with AUv3, and devnotes.kymatica.com helped with some of the more obscure details.
The documentation for audio AUv3 development is abysmal. I gave up. The WWDC sessions aren't in-depth enough to be worth the time regarding AUv3, but may be worthwhile for other audio related topics.
Over the past year some very generous developers have posted the code for their AUv3 apps. If I gather myself for another try, understanding those is where I'm going to start.
Normally I would strongly recommend JUCE, especially for newcomers. Its codebase is very modern and professionally put together, and probably has the best community of the field. Also, iLok's parent company buying JUCE can be considered a strong indication that it has a solid future and is worth investing time & effort in it.
However... when I googled some AU-specific questions (completely unrelated to multi-platform development), I very often found myself on JUCE forums, where developers struggled with crippling issues or unmapped / incompatible features. I have no doubt these are often ultimately resolved, but I can very much imagine specific situations where such nuisances, rare as they are could outweigh the benefits the framework offers, even though from a first glance the benefits could be massive, if you want to target more platforms.
Regarding AU's, the documentation is not great, and without Apple's sample code, there would be no way you could create an Audio Unit, due to some poorly documented boilerplate code (correction: I think the XCode template generates it too, so you don't need the sample code strictly speaking). A lot of information with a wealth of sample code and good diagrams (that are rare in the current documentation) can be unearthed from a legacy documentation pile, which I very rarely stumble upon. This seems to be true for other things besides AU's. But that's not to say that there isn't a lot of useful information in the current documentation or the framework headers for example.
The bad thing is that many host applications have implementations that go against the documentation, even GarageBand. It's also funny (or maybe not), how the iOS and macOS versions of the same DAW behave completely differently in their adherence to following the AUv3 spec.
The ugly things are the ambiguities that are left open. I'd probably single out the new preset API as the most abysmal thing in the documentation leaving a lot up to the developers' interpretation. This feature is more than 3 years old now, and almost no host or plugin supports it. Kymatica, NeonSilicon and Quantovox seem to be the only developers who offer true AUv3 user preset features, out of literally hundreds of apps (including those from "AAA" manufacturers and more well-known Indie developers). Maybe there are more out there since last time I checked.
Thanks everyone for your insights and pointers! Oh well, it won't be the first time I have to work with poor documentation and rely on experimentation and reverse-engineering, and probably won't be the last .
I have looked a bit at JUCE, but since I also want to get back into some i(Pad)OS dev, I'll probably start out native at first. (The main project I want to do also makes the most sense on an iPad I think, so portability is less of an issue. I might work on some smaller instruments and effects first though.)