SuperCollider

音频编程语言

SuperCollider 是一个最初由 James McCartney 在1996年发布的编程语言和声音编程环境,主要用于实时声音合成算法作曲[2][3]

SuperCollider
开发者James McCartney 和其他
首次发布1996年,​28年前​(1996
当前版本3.11.2(2020年11月15日,​4年前​(2020-11-15[1]
源代码库 编辑维基数据链接
操作系统Linux, OS X, Windows
许可协议GNU通用公共许可协议
网站http://supercollider.github.io/

自此之后,它逐步变成一个被科学家与艺术家们共同开发和操作声音的系统。这个高效且有表现力的动态语言,为声学算法音乐交互式编程英语Interactive programming提供了一个框架。[4]

在2002年以GNU通用公共许可协议发布,SuperCollider 是自由软件

架构

从版本3开始,SuperCollider被分为两部分:一个服务器,scsynth;一个客户端,sclang。两者通过OSC(Open Sound Control英语Open Sound Control)通信。

SC 的语言结合了 Smalltalk 的面向对象特性、来自函数式编程语言的特性和类C语言的语法。

SC 的服务器支持简单的C扩展API,使它很简单的编写高效的声音算法。因为外界对服务器的操作都经过OSC,所以很方便地使用其他语言或应用操作它。

SuperCollider 合成器服务器 (scsynth)

SuperCollider的声音产生捆绑在一个优化的命令行可执行程序(scsynth)。大部分情况下它将被SuperCollider编程语言控制,但也可以被独立地使用。这个音频服务器有下列的特点:[4]

  • Open Sound Control英语Open Sound Control 接入
  • 简单的 ANSI C 插件 API
  • 支持任意数量的输入和输出频道[5]
  • 一个以合成节点构成的有序树结构定义了执行的顺序
  • 能动态重建信号流向的总线系统
  • 可供读写的缓冲块
  • 根据需要以不同的速率计算:音频速率、控制速率和需求速率

SuperCollider 编程语言 (sclang)

SuperCollider 编程语言是一个类似于 Smalltalk动态类型垃圾回收、 单继承的面向对象函数式编程语言,[3] 它的语法类似LISP或者C语言。它的架构是在实时计算需求和抽象语言的灵活、简洁性之间的折衷。和许多函数式编程语言类似,它实现了函数作为一级对象,使得函数可以复合。函数和方法支持缺省参数、可变参数,调用时可以使用任意次序的关键词参数。 闭包 是词法的, 作用域 既有词法作用域和动态作用域。也支持函数式编程语言的其他典型特性,包括尾调用优化,列表解析英语List comprehension协程。 它特有功能包括隐式的元组扩展和无状态的模式系统。它的常量时间的消息查找和实时的垃圾回收 让大型系统保持高效与信号处理的灵活。[4]


示例代码

// 打印 "Hello world!"
"Hello world!".postln;
// 播放一个800Hz正弦波与粉噪音的混合
{ SinOsc.ar(800, 0, 0.1) + PinkNoise.ar(0.01) }.play;
// 以一个频率由鼠标的水平位置决定的正弦波调制另外一个正弦波的频率和一个噪音的振幅
{ 
 var x = SinOsc.ar(MouseX.kr(1, 100));
 SinOsc.ar(300 * x + 800, 0, 0.1) 
 + PinkNoise.ar(0.1 * x + 0.1) 
}.play;
// 列表迭代: 将列表中元素值乘以它们的索引
[1, 2, 5, 10, -3].collect { |elem, idx| elem * idx };
// 阶乘函数
f = { |x| if(x == 0) { 1 } { f.(x-1) * x } };


参考资料

  1. ^ Releases. Github. [15 November 2020]. (原始内容存档于2020-12-30). 
  2. ^ J. McCartney, SuperCollider: A new real time synthesis language页面存档备份,存于互联网档案馆), in Proc. International Computer Music Conference (ICMC’96), 1996, pp. 257–258.
  3. ^ 3.0 3.1 J. McCartney, Rethinking the computer music language: SuperCollider, Computer Music Journal, 26 (2002), pp. 61–68.
  4. ^ 4.0 4.1 4.2 Scott Wilson; David Cottle; Nick Collins. The SuperCollider Book. The MIT Press. 2011 [2013-10-13]. ISBN 978-0-262-23269-2. (原始内容存档于2011-05-01). 
  5. ^ BEASTmulch tools for multichannel audio. [2014-01-11]. (原始内容存档于2009-11-06). 

外部链接