[1] https://link.springer.com/book/10.1007/978-3-319-63588-0
From all available implementations of the idea, I probably like Extempore (https://github.com/digego/extempore) the most. Extempore provides a low-level C-like language (xtlang) which compiles into LLVM and can be meta-programmed from a variant of Scheme (TinyScheme I believe). This arrangement makes it possible to generate the code for the audio graph from Scheme, compile/optimize it via LLVM, then drive it in a live-coding fashion from Emacs. Best of both worlds (high and low).
My personal, much simpler attempt in this space is Cowbells (https://github.com/omkamra/cowbells) - with this one you can live-code FluidSynth (MIDI soundfonts) from Clojure + CIDER + Emacs, representing musical phrases either via Clojure data structures or an alternative text-based syntax (which is translated into the former by a compiler).
[1] https://github.com/hundredrabbits/Orca [2] https://github.com/digego/extempore
His PhD thesis about it (2018) is worth reading for anyone interested in live programming of any sort, music or otherwise: https://openresearch-repository.anu.edu.au/handle/1885/14460...
[0]: https://github.com/digego/extempore
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
https://news.ycombinator.com/item?id=5397123
https://news.ycombinator.com/item?id=5125339
I personally am very impressed about it. The github address is:
https://github.com/digego/extempore
Documentation:
http://benswift.me/extempore-docs/
And according to Google Groups it seems to be active: