Post
by ecuk » Fri Dec 30, 2016 1:56 am
Depending on exactly what you are trying to do, and given that this is an Ableton forum, I would humbly suggest that you seriously consider Max (for Live) from Cycling ‘74 (and Ableton).
I too come from a maths/coding background, although mine happens to be in sound synthesis and analysis. I played around with Csound off and on for years, along with many other synthesis languages, including SuperCollider. In the end I have settled on Max.
The primary reason I now use Max is its tight integration with Live. Csound is good, but it is hampered by being from an era when having only a few parameters per instrument was sufficient. It quickly becomes unwieldy when you want to have 20 (let alone 40 or more) time-varying parameters in an instrument or effect. With Max (for Live) this is comparatively simple, as is using Live’s ‘piano-roll’ to generate MIDI to control your instruments. Csound was originally designed for off-line, non-real-time processing—hence its ‘score’ files—coming as it does from a time when computers weren’t able to process sound in real-time. These days it can do real-time processing, but it wasn’t designed for real-time processing from the ground up in the way that Max (or more accurately, Max/MSP) was designed to do.
You have always been able to extend Max by writing your own externals, generally in C. In the last few years, however, Gen in Max has made it even easier to write ‘code’ within the Max environment. You are therefore not hampered in your desire to work with maths and text-based coding.
You mention Linux, in which case you might also consider Puredata (aka Pd), which, like the original Max, was written by Miller Puckette. The two languages have diverged somewhat over the years, but many patches work in either with minor modifications. Max, however, now has a very good built-in IDE (integrated development environment) that is largely lacking in Pd. And of course, there is no Pd for Live like there is a Max for Live. That said, Pd is free (in every sense of the term), whereas Max is a proprietary product that you need to pay for. Both languages, however, have active communities.
In any case, given the integration in Live of Max for Live—and with it the Live Object Model that lets you access pretty much anything within Live directly from Max—to me it seems a no-brainer to use Max instead of languages such as Csound and SuperCollider.
Learning Max can be a bit daunting, especially if you are coming from a ‘traditional’ text-based coding background. My personal recommendation is to work your way through the two volumes of Electronic Music and Sound Design. Max is a Turing-complete programming language, but it is also a visual programming language that takes care of a lot of the hassles that you otherwise face in timing and synchronisation in music synthesis. It is in many ways different from these more traditional, text-based languages, but if you are considering working with audio synthesis, things are already different. Having learned my way around Max, I don’t believe I would ever return to the good ol’ days of Csound and its kin, especially given how easy it is in Max for Live to drop in a dial, a gain control or a spectral display (let alone to do filter design and very many other things that you will eventually want to do).
So this is my advice: consider Max... It will do anything that Csound or SuperCollider will do, and it will IMHO do it better, especially if you are using Live.
Hope that helps,
Eric
MacBook Pro, macOS Sequoia, 2.3GHz i7-1068NG7, 32GB – Live Suite 12.1, Max 8.6.5, Scarlett 4i4