I've seen so many "music programming languages" recently that I'm getting really quite confused about which one was which and does what. Has anyone done a comparison, or even just have a list of links?
I've been researching about this and narrowed down by these criteria: (1) Modern and maintained (2) Open source (3) Multiplatform (4) Supports live coding (5) Not MIDI-only output (6) Text-based (7) Not Java (sorry JSyn :P)
For me live coding is important since I prefer to compose music in an exploratory fashion. Also, live performances are cool. Read more about live coding and resources in http://toplap.org
The list in no particular order (beware of the brain dump):
·
## Overtone (https://overtone.github.io/)
The coolest kid on the block is actually a frontend to SuperCollider.
- Clojure based.
- VJ-ready. Integration with Processing via Quil (https://github.com/quil/quil) and GLSL shaders via Shadertone (https://github.com/overtone/shadertone).
- Lots of tooling: https://github.com/overtone
·
## SuperCollider (https://supercollider.github.io/)
- Object-oriented functional language (similar to Smalltalk/Ruby/C/JS).
- Basically Overtone minus Clojure minus VJ plus IDE.
- Client-server architecture (which is what allows Overtone to use it as a backend).
·
## Sonic Pi (http://sonic-pi.net/)
- Ruby DSL + IDE.
- Built for Raspberry PI (but runs anywhere SuperCollider and Ruby are available).
- Another frontend to SuperCollider.
- Designed to be suitable for teaching children. Teacher resources available (http://www.sonicpiliveandcoding.com/ http://www.raspberrypi.org/learning/sonic-pi-lessons/)
·
## Extempore (https://github.com/digego/extempore)
- Scheme-like.
- Supports both audio and graphics.
- Defines itself as a 'cyberphysical' programming environment (http://dl.acm.org/citation.cfm?id=1869526).
·
## ChucK (http://chuck.cs.princeton.edu/)
- Real-time sound synthesis and music creation (real-time meant it used to take a real amount of CPU time in non-RT kernels, not sure if it's changed).
- Time-based, concurrent programming model (they call it 'strongly-timed').
·
## Fluxus (http://www.pawfal.org/fluxus/)
- Racket based.
- Full-fledged environment.
- Defined as 'a 3D game engine for livecoding worlds into existence', though it supports sound too.
- Doesn't seem to be actively maintained (most recent release dates from April 2012).
·
## Nyquist (https://www.cs.cmu.edu/afs/cs.cmu.edu/project/music/web/musi...)
- (Still researching...)
·
## Csound (http://www.csounds.com/)
- (Still researching...)
- Live coding added in a recent version.
- Orchestration and synthesis are separate languages.
·
## Tidal (http://yaxu.org/tidal/)
- Haskell based.
- Seems to support audio and graphics (defines itself as live coding of patterns).
- (Still researching... I just came to know it in a link here.)
·
## Skoar (https://github.com/sofakid/Skoarcery)
- Another SuperCollider frontend.
- Only orchestration, though I guess it supports different instruments created in SuperCollider.
- Doesn't seem to support live coding? (Added to the list until I research more.)
·
## MORE
I just found these in the TOPLAP wiki (and Googling around) but had no time to comb through them. Listed in no particular order:
- https://github.com/edne/pineal
- https://github.com/createuniverses/praxis
- http://charlie-roberts.com/gibber/about-gibber/
- https://github.com/LuaAV/LuaAV
- http://hyperyarn.criticalartware.net
- http://www.renickbell.net/conductive/doku.php/
- EXTRA: Live coding light shows https://github.com/brunchboy/afterglow