AudioKit is a promising-looking new open source tool set for coding synthesizers, music, and sound on Apple platforms (though it could certainly be ported to other places if you have the time).
The draw: you get not only a robust library but loads of examples and tests, too, for a variety of applications, in both Objective-C and Apple’s new Swift language. And it’s free. The contributors will look familiar – and the core engine comes from community contributions around that most enduring of synthesis tools, Csound. (For those worried about obsolescence and the pace of technology, Csound has its roots in tools developed one half century ago, so in computer terms more or less the dawn of time.) In fact, what AudioKit is in effect is Csound as an audio engine, with Objective-C and Swift as the API – no orchestra/score files required. (And if you don’t know what I just said about “scores” and “orchestras” but do know Objective-C and Swift, well, this is definitely for you.)
There are examples for control and playback, convolution, FM and granular synthesis, and sequencing, among others. Below, they’ve produced a video that shows how a game can be enhanced with generated sound using the library. Features:
- 100+ synths and effects, including physical models, spectral effects, granular synthesis, reverbs, etc.
- Built-in sampling, complete with recording and storage functionality.
- Sequencing you can trigger from code.
- Examples with granular synthesis, convolution, effects processing, pitch-shifting, and more.
- Human-readable code. (Yay, humans!) They write: “Conductors control Orchestras, which contain Instruments that produce Notes. Clear methods with Apple-style naming conventions, Xcode completion, documentation and tool-tips.”
- Sound code you can integrate with your app logic.
AudioKit for Game Audio: Space Cannon from AudioKit on Vimeo.
Now, in some ways this is a mirror image of what we did with libpd. The notion of libpd was to separate sound and synthesis from the code that runs the app. The very same interactions are possible; the workflow emphasis is just different. (The basic principle of embedding a free tool as a library is otherwise the same, and this now means developers can use both Pure Data and Csound on the latest mobile platforms.)
Of course, a lot of us will choose both. For those comfortable with patching, or developers working with composers and sound designers who prefer to patch rather than code, using the two libraries together may make the most sense. For those comfortable with coding who want to sketch app logic and sound in the same environment, working with code directly here will be more appealing. (See also tools like Python’s lovely pyo.)
Add this to libpd, plus the weekend’s announcement of a new sync library, and it’s clear that free software and open source tools can coexist with Apple’s proprietary platform. At the risk of offending more rigid free software zealots, I think that’s only a good thing. It promotes coding literacy and self-sufficiency, and it demonstrates the flexibility, durability, and power of free software licenses to help people work together to solve problems. That can only encourage people to toy with free platforms, whether it’s connecting an Arduino or Raspberry Pi or dual-booting that Apple laptop to Linux. And having more shared code can also benefit platforms outside the walled garden.
Oh, plus it’s kind of fun making apps that make noises. Actually, I think that’s probably the most important bit. Check it out:
Max Mathews, we miss you; it seems you will also live forever.