I am a SuperCollider fan, too. For me it's the sweet spot between a modern programming language and a deep and performant synthesis/sequencing platform. SonicPi is perfect if you wan to start making music immediately, but consider that underneath is just another language interface for the supercollider synth server, so at some point you will want to go full SC, that is dialect of Smalltalk with some functional ideas. CSound is the oldest/most powerful/most frustating of the bunch, but at the core is composed of two parts: a description of the sound generators/effects graph and a list of notes/events. If you enjoy coding in assembly, CSound will be fun. Chuck has a very nice sync model (SonicPi is similar), but the language is very imperative, not my favourite.
I'm a SuperCollider fanboy. It can be very expressive and terse, as sc140 tweets show. You can use it for livecoding. It also now has a pretty good IDE written in Qt, and you can make your own GUIs in Qt with it too.
I will admit that I haven't tried Sonic Pi yet though.
It very much depends what your end goal is. Are you just looking to experiment and make some sounds? Would you like to embed one of these as a sound engine in another application that you are developing? Certain devices you are targeting?
I have no fixed goal so interested to know the different trade-offs between each one e.g. which ones excel at different goals you suggest?
Also general comments about things like quality, extendibility, community, momentum, learning curve, level of fun, reliability etc. would be really helpful - thanks!
If you're interested in rhythms and are open to using samples, you could take a look at Tidal (http://tidal.lurk.org). Tidal is a DSL embedded in Haskell, and can be used to very quickly create patterns of sound: everything from house music to chaotic breakcore to abstract textures. It's great for rhythm-based performance (and composition). It isn't as good at melody, but it does have some support for MIDI output and melodic expression, and with some effort your library of samples can support melody easily. I found Tidal's learning curve to be very shallow, but I think it depends on how you perceive music and rhythm. The Tidal community is working on a better install experience right now (in the meantime you'll need to compile a few things from source, etc). It primarily supports Emacs and Atom (Emacs appears to be the most stable).
Edit: Tidal is great for both live-coding and static-composition scenarios. In my opinion, it's ideal for live coding performance because minimal code is needed to get sound going quickly.
I'd start with Sonic Pi and see how you go. It's a small but useful subset of the bigger and more complex apps. If you want to take it further you can move up to SuperCollider, because the syntax is similar.
sc is probably the biggest and most open and developed sound language. pd is in the same ballpark, with a different culture.
It's also worth learning web audio, because then you can build toys for the web.
The others are more niche. I'd written off Csound, but I discovered recently that some of the newest Csound music has better than usual production values, which makes me wonder if it's having a revival and breaking out of the academic ghetto these projects tend to get trapped in.
I'll have to look into WavePot, but I'll say that SonicPi is built first and foremost for live-coding; making music in realtime while coding. There's some other languages that focus on this - Gibber in the browser, Tidal in Haskell. Those are probably the best languages to start playing with if you want to get something musical happening quickly.
SuperCollider is much more general - you have a server that can build and execute graphs of unit generators, and a language that has a ton of convenience features for interacting with the server, and abstractions for scheduling events. (sidenote, I'm starting to build an audio patching environment using SuperCollider. It doesn't do anything yet but I'm hoping to have something soon https://github.com/YottaSecond/Triggerfish)
SuperCollider also has a great community - questions on the mailing list are usually answered within a couple of hours, and there's a team of people furiously working on the upcoming 3.7 release.
I love Pure Data to death, it has an amazing community and is actively being developed, but I have some trouble recommending it because of the aging Tcl/Tk interface.
ChucK looks really interesting. In most environments you need to write unit generators in C/C++ to actually do low-level audio processing. ChucK uses a "strongly-timed" programming model, where you can actually use the same language to process sound sample-by-sample and schedule things at real musical intervals.
Extempore is also worth looking into if you aren't afraid of lisp.
So yeah, it depends largely on what you want to do. The live-coding languages like SonicPi are probably the best for getting music going quickly, but the others all have unique things to offer.
Personally I always loved "patching" style environments like Pure Data for fun and experimentation only reaching for the likes of Csound or Supercollider when I wanted extensibility or portability.
ChucK I've had the least experience with of those more mature toolkits (I didn't even know it was still actively maintained or developed), however I'd thoroughly recommend Supercollider due to the emphasis on live coding, mature community and integration with many languages.
Unfortunately I cannot speak to the qualities of Sonic Pi, this being the first I've heard of it, although I must say it looks great!
What would you say is a good live-coding platform for someone who actually has a lot of harmony and music theory training and would want to take advantage of it? I guess that would mean less looping and more motivic and theme development.
I like playing with a bunch of them: Extempore, Pure Data, Grace and Euterpea (Haskell-based)are my current toys. There are many more to chose from - Openmusic, even Manx, a Forth system. I prefer to have more control, and both Sonic Pi and Overtone are wrappers for Super Collider. In Extempore you can create new ugens, whereas in Overtone and SonicPi I believe you only have available what's provided for in Super Collider. Granted there is plenty enough for 99% of people looking to livecode. I am biased towards Extempore because I like Lisp, it does both visuals, music, 'cyberphysical' programming, and it was truly built from the ground up for livecoding [1]. I am very excited about xtlang as a general purpose programming language outside of livecoding. I believe Extempore is being courted by the HPC crowd too after Ben Swift's and Andrew's work on it. AFAIK, Overtone is Clojure atop Super Collider, and Sonic Pi is Ruby atop Super Collider. They have nice interfaces, and you can do visuals in Overtone with Shadertone, a sort of ShaderToy for Overtone. I am not a Ruby fan however, and I prefer a more traditional Lisp or Scheme to Clojure. If I need functional programming in a Lisp, I like Shen, but nobody has ported a livecoding environment to it. Take a look at Andrew Sorensen here to see how Extempore can be applied to Western Music in action[2]. It has a Scheme language, and a c-like language called xtlang. It can be used for other things besides livecoding too. I started with Fluxus, but on Windows it doesn't support livecoding audio, only livecoding visuals to the audio stream you feed it. GRACE [3] is very easy to start with, and complete with built-in tutorials. It is Scheme-based, but has a more generic language called SAL. It is crossplatform, and comes packaged as one self-contained file to download and execute. It is the quickest to start with in my opinion. Jason Levine has ported the code from Daniel Shiffman's book, The Nature of Code book to Extempore's xtlang [4]. A great way to learn Extempore.
Livecoding seems to be growing more and more with a lot of hardware toys to go along with it. Exciting times.
Can anyone suggest how to choose which one to invest some time in?