Audio-specific programming languages. Why do people invent new DSLs for audio? This is a terrible idea. Anyway, there are some.
tl;dr If you must use an audio DSL, Csound might not be hip, but it’s the one that avoids the more horrible pathologies of its bitrotten competitors. You’ll miss the sequencing capabilities of supercollider, but not the debugging experience, or the inconvenient GPL licensing. Possibly overtone could get you there.
Supercollider, dealt with elsewhere is an audio application and programming language. It has some hard to find features, such as
- supporting polyphony with programming primitives in a natural fashion, and
- a more sophisticated time and sequencing than anything else I’ve seen.
It has a small but committed community, and doesn’t require extortionate licensing fees as an open-source project. Unfortunately it is purely GPL’d, which makes it difficult to release real software using it or put it on iphones etc. Also, it’s falling gradually apart, burdened by a frozen and confusing chaos of early design decisions that make the sequencing unreliable and inflexible. Functional reactive programming has really honed a lot of the design patterns here. That’s why the archetypal FRP language, clojure, has a sound functional composition library to work around supercollider’s pathologies, called overtone.
Those tasty language features sound great, but they are nearly unusable because of the obscure and buggy nature of the language they are embedded in. Having used this language extensively, I feel qualified to recommend against it; It has fame and regard because it really was the best in the field in 2002; But it’s largely missing the innovation since then that all the mainstream languages have taken for granted.
Csound is another supercollider competitor with more open licensing, and a recent upsurge in development. It’s useful enough that it has its own page. The especially good features are that it’s small, liberally licensed, and designed for clean API creation and so it works beautifully with other languages, unlike supercollider.
chuck is a more recent competitor to supercollider; still not that actively developed, in part because their source-management is AFAICT innocent of all innovations in collaborative source code since the 90s, so contributing is too tedious for anyone to bother. Get it to together and get a public github URL, Princeton hermits.
protoplug looks cool; it runs jit-compiled lua scripts as DSP/whatever engines in a VST plugin
ReaJS is a plugin library from Reaper DAW that allows custom VST design using their weird custom language
Audio libraries for mainstream programming languages
Wait what? you can just use a normal programming language with a lovely IDE and a sensible debugger, and still make music?
- STK is a C++ library implementing a lot of synthesis algorithms in a bareback style, with a special emphasis on physical modelling algorithms for virtual instruments.
- maximilian is Mick Grierson’s C++ library for doing audio graphs, and seems to be a pragmatic choice for many artists (Direct source link)
- Juce seems to be the cross-platform Audio-GUI of choice and can host faust code; so that’s nice. I wonder if it can plug into maximilian?
- Beads brings realtime audio to java. Here’s an intro
- Light spatialization is the specialty of the gaming-oriented open-source OpenAL
- Comprehensive spatialization is the specialty of the open-source SSR
- python options listed under art python
Graphical dataflow programming languages.
For the record, I hate programming using visual dataflow, although I do like visualizing my programs this way. These programs get it arse-backwards for my work process, forcing you to click a million times to do every simple thing.
But they are famous, and seem simple to people who like clicking 100 times instead of typing 100 characters.
MaxMSP, the expensive, bloated, pretty, popular one, with crashy-but-convenient Ableton Live integration
Puredata, the slim, clever open source alternative to MaxMSP, with the remarkable feature of running on smartphones. It’s neat, but there is much too much clicking involved in it.
Puredata by itself is too barebones to do anything interesting with, however. Get some higher-level abstractions e.g.
droidparty runs your patches on android devices
MobMuPlat is a standalone iOS+Android app which hosts and loads from a list of available works. Creating your own work consists of two parts. First, creating a graphical user interface (GUI) with the MobMuPlat Editor (OSX and Java versions available); second, creating the audio engine using the graphical programming language Pure Data (PD). With both of these applications open, and data sent between the two, you can simulate the app behavior on your laptop/desktop. Once development is complete, just drag the two saved files into the “Documents” folder of iTunes, and they are uploaded to your iOS device and can be opened in the MobMuPlat app. (For android, get the files onto your device storage folder anyway you like, then open them in the MobMuPlat app).
MobMuPlat can do synthesis, sampling, MIDI, OSC, networking via local wifi, query and set hardware characteristics like tilt/compass/camera flash, display images and vector graphics, be used within AudioBus (iOS only), take joystick/gamepad input (Android only) and much more.
However, Csound also has this facility, so YMMV.
Monologx’s ecoSYSTEM creates an entire modular synthesis system.
or roll your own extensions using faust.
Reaktor, the commercial synth nerd product with amazing synthesis but truly tedious DSP programming by point-n-click and no binary interface.
Left-field entrant, the incredible open-source executable sound, which has an elegant approach - it pumps out demo-scene-style DSP executables.
There are lots more, some of ‘em even more expensive than the usurious Reaktor. Everyone likes this way of doing things, and the punters seem happy to cough up cash for it too.
See also Faust, above, which technically fits on this category but Does It Right, in terms of having a real language as well as a dataflow visualisation, and oh p.s. being free, and incredible.