Starting Your Computer Music Journey with Clojure and Overtone in Emacs

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • Sonic Pi

    Code. Music. Live.

    Cool! I hadn't heard of Overtone before, but I love the idea of live coding music.

    People might also be interested in a similar project called Sonic Pi[1], which is Ruby based.

    [1]: https://sonic-pi.net/

  • extempore

    A cyber-physical programming environment

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

  • JetBrains Dev Survey

    What’s up with the C++ ecosystem in 2023? JetBrains Developer Ecosystem Survey 2023 has given us many interesting insights. The Embedded (37%) and Games (39%) industries are already working with C++20, developers are incorporating static analysis in their CI, and ChatGPT usage among coders is flourishing. Read on for more!

  • cowbells

    A Clojure library for musical experiments and live coding

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

  • glicol

    Graph-oriented live coding language and music/audio DSP library written in Rust

    https://glicol.org

    I think the combo of Overtone and Emacs is really cool. Essentially, Overtone, Tidalcycles, Sonic Pi or FoxDot are note generators for SuperCollider. Perhaps the post should mention that.

    When people start to care about audio synthesis and "sound-based music", then they will find a missing picture between the pattern-based language abstraction to the audio float numbers. My experience is that if a user does not understand this process, it is very hard to master the language, tend to forget the syntax and is prone to errors.

    One example is that before I made Glicol, I made QuaverSeries (https://quaverseries.web.app/), which shares a very similar syntax to Glicol. I would call it a functional wrapper for Tone.js. But as a functional programming language, even I myself forget the input/output type for each function after not using it for a while. Yet in Glicol, this problem is solved from the first day as Glicol's node IO are all audio streams. One reason I call Glicol "the next generation computer music" is partly because we are now in an era when browsers can also handle real-time GC-free audio, and audio-first makes a modern design.

    In designing Glicol, my experience is that when one begins from the audio level, it does affect the language design a lot. How to make the trade-off between readability, simplicity and ergonomics for speedy writing in live coding performance, error handing is really an art.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts