TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Starting Your Computer Music Journey with Clojure and Overtone in Emacs

137 点作者 ThisIsSavo大约 3 年前

8 条评论

chaosprint大约 3 年前
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.
clx75大约 3 年前
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).
sgeisenh大约 3 年前
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>
Shared404大约 3 年前
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_watson大约 3 年前
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.
bitforger大约 3 年前
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 未加载
inciampati大约 3 年前
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.
adamnemecek大约 3 年前
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>