TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Starting Your Computer Music Journey with Clojure and Overtone in Emacs

137 pointsby ThisIsSavoabout 3 years ago

8 comments

chaosprintabout 3 years ago
I have been studying different music programming languages for years and eventually landed on the design of Glicol: <a href="https:&#x2F;&#x2F;glicol.org" rel="nofollow">https:&#x2F;&#x2F;glicol.org</a><p>I think the combo of Overtone and Emacs is really cool. Essentially, Overtone, Tidalcycles, Sonic Pi or FoxDot are note&#x2F;OSC msg generators for SuperCollider. Perhaps the post should mention that. The reason is that when users start to care about audio synthesis and &quot;sound-based music&quot;, then they will find a missing picture&#x2F;concept 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.<p>One example is that before I made Glicol, I made QuaverSeries (<a href="https:&#x2F;&#x2F;quaverseries.web.app&#x2F;" rel="nofollow">https:&#x2F;&#x2F;quaverseries.web.app&#x2F;</a>), 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&#x2F;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&#x27;s node IO are all audio streams. One reason I call Glicol &quot;the next generation computer music&quot; 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.<p>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 among readability, simplicity and ergonomics for speedy writing in live coding performance, error handing, abstraction from audio to language, lowering the learning curve is really an art.
clx75about 3 years ago
I&#x27;m really fond of the idea of writing music like this.<p>From all available implementations of the idea, I probably like Extempore (<a href="https:&#x2F;&#x2F;github.com&#x2F;digego&#x2F;extempore" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;digego&#x2F;extempore</a>) 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&#x2F;optimize it via LLVM, then drive it in a live-coding fashion from Emacs. Best of both worlds (high and low).<p>My personal, much simpler attempt in this space is Cowbells (<a href="https:&#x2F;&#x2F;github.com&#x2F;omkamra&#x2F;cowbells" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;omkamra&#x2F;cowbells</a>) - 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).
sgeisenhabout 3 years ago
This is pretty cool. There is a nice history of functional programming in computer music and algorithmic composition. My first introduction to computer music was through [Nyquist][1] which uses an XLISP-based syntax, so this intro was a pleasant blast from the past. Having access to the whole Clojure ecosystem is also a huge boon.<p>[1]: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Nyquist_(programming_language)" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Nyquist_(programming_language)</a>
Shared404about 3 years ago
For those interested in coding music, see also ORCA[0] by 100 Rabbits.<p>It&#x27;s an interesting time, something like a blend between the Game of Life and a Midi controller.<p>[0] <a href="http:&#x2F;&#x2F;100r.co&#x2F;site&#x2F;orca.html" rel="nofollow">http:&#x2F;&#x2F;100r.co&#x2F;site&#x2F;orca.html</a>
mark_l_watsonabout 3 years ago
Hello Savo, thanks for writing this up - just bookmarked for future play.<p>Emacs continues to interest me as an environment. I also spend huge amounts of time in VSCode and the LispWorks IDE, but I think I have been using Emacs for about 45 years, old habits get more entrenched.
bitforgerabout 3 years ago
Cool! I hadn&#x27;t heard of Overtone before, but I love the idea of live coding music.<p>People might also be interested in a similar project called Sonic Pi[1], which is Ruby based.<p>[1]: <a href="https:&#x2F;&#x2F;sonic-pi.net&#x2F;" rel="nofollow">https:&#x2F;&#x2F;sonic-pi.net&#x2F;</a>
评论 #30974386 未加载
inciampatiabout 3 years ago
In terms of expressive power, flexibility, documentation, and development quality, it&#x27;s hard to beat TidalCycles and its many spinoffs (like Estuary). But the beautiful thing about algorave is that every new idea and language has the ability to give musicians access to new sonic spaces and patterns. By all means, dive in to any and all of these systems that seem interesting and fun. If closed Ableton life and DAWs were the past and present of popular computer music, these open language systems are the future.
adamnemecekabout 3 years ago
I&#x27;ve been working on an IDE for music composition. <a href="https:&#x2F;&#x2F;ngrid.io" rel="nofollow">https:&#x2F;&#x2F;ngrid.io</a>. Launching soon.<p>Join the discord <a href="https:&#x2F;&#x2F;discord.gg&#x2F;a5ttYuG" rel="nofollow">https:&#x2F;&#x2F;discord.gg&#x2F;a5ttYuG</a>