Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: