What does HackerNews think of extempore?

A cyber-physical programming environment

Language: C++

I grew up in the 70s with the term cybernetics from Norber Wiener, and I liked it before Gibson's Neuromancer in the 80s, so I guess I was inoculated before the pandemic use of the word. Cyber-Physical Systems (CPS) is a term being bandied about a bit now (reading Logical Foundations of Cyber-Physical Systems, and it is pretty cool [1]; Andrew Sorensen's Extempore as a CPS environment [2]). I also attended the first HOPE in 1994 in NYC and although the press abused the term cyber, it's still cool to me! But the Papa John's stuff was funny.

[1] https://link.springer.com/book/10.1007/978-3-319-63588-0

[2] https://github.com/digego/extempore

I'm really fond of the idea of writing music like this.

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).

Or not, since if something fails you have to ship it to TE and pay them IIRC $125 to look at it. I bought and own an OP-1, that still works great, however, the sequence you execute on boot up to get numbered list of options, such as update firmware, or factory reset cannot be reached. So now I am stuck with the last time I upgraded the firmware, and I can't get it back to the original state, so I can mess around with it again. I don't know, but to spend $800 on a synth, and have to ship it to Sweden, and pay that large a fee to simply look at it is a bit much. I then tried to simply buy a new board, so I could pop it in and be done, but they were sold out! I am sticking with Orca [1] and Extempore [2] for now.

[1] https://github.com/hundredrabbits/Orca [2] https://github.com/digego/extempore

Common Lisp also uses car. But looking at source of https://github.com/digego/extempore , yeah, Scheme.
Andrew Sorensen is the creator of Extempore: 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...

There is also Extempore[0] and Overtone[1] in case anyone is interested. My favorite live-coded symphony is this[2] one.

[0]: https://github.com/digego/extempore

[1]: http://overtone.github.io

[2]: https://vimeo.com/2579694

Have a look at extempore, a lispy live music/notation language and environment. Only emacs bindings, no vim, but impressive preformance nevertheless...

[0]: http://extempore.moso.com.au/

[1]: https://github.com/digego/extempore

Keep in mind there are actually two domains in music: instruments (sound synthesis) and orchestration. Both Skoar and Alda (which was linked yesterday) are only orchestration languages.

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

There have been two posts about it long time ago but they went completely unnoticed:

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:

https://groups.google.com/forum/#!forum/extemporelang

If you like Impromptu, take a look at Extempore by the same author. Unlike Impromptu, Extempore is open source, and runs on Linux and Windows too.

https://github.com/digego/extempore

The author of Impromptu is now working on Extempore, which unlike Impromptu, is opensource, and runs on other operating systems other than OS X.

https://github.com/digego/extempore