SuperCollider
SuperCollider 是一個最初由 James McCartney 在1996年發佈的程式語言和聲音編程環境,主要用於實時聲音合成和算法作曲。[2][3]
開發者 | James McCartney 和其他 |
---|---|
首次發佈 | 1996年 |
當前版本 | 3.11.2(2020年11月15日[1]) |
原始碼庫 | |
作業系統 | Linux, OS X, Windows |
許可協議 | GNU通用公共許可協議 |
網站 | http://supercollider.github.io/ |
自此之後,它逐步變成一個被科學家與藝術家們共同開發和操作聲音的系統。這個高效且有表現力的動態語言,為聲學、 算法音樂和交互式編程提供了一個框架。[4]
在2002年以GNU通用公共許可協議發佈,SuperCollider 是自由軟件。
架構
編輯從版本3開始,SuperCollider被分為兩部分:一個伺服器,scsynth;一個客戶端,sclang。兩者通過OSC(Open Sound Control)通信。
SC 的語言結合了 Smalltalk 的面向對象特性、來自函數式程式語言的特性和類C語言的語法。
SC 的伺服器支持簡單的C擴展API,使它很簡單的編寫高效的聲音算法。因為外界對伺服器的操作都經過OSC,所以很方便地使用其他語言或應用操作它。
SuperCollider 合成器伺服器 (scsynth)
編輯SuperCollider的聲音產生捆綁在一個優化的命令行可執行程序(scsynth)。大部分情況下它將被SuperCollider程式語言控制,但也可以被獨立地使用。這個音頻伺服器有下列的特點:[4]
- Open Sound Control 接入
- 簡單的 ANSI C 插件 API
- 支持任意數量的輸入和輸出頻道[5]
- 一個以合成節點構成的有序樹結構定義了執行的順序
- 能動態重建信號流向的總線系統
- 可供讀寫的緩衝塊
- 根據需要以不同的速率計算:音頻速率、控制速率和需求速率
SuperCollider 程式語言 (sclang)
編輯SuperCollider 程式語言是一個類似於 Smalltalk 的動態類型、 垃圾回收、 單繼承的面向對象和函數式程式語言,[3] 它的語法類似LISP或者C語言。它的架構是在實時計算需求和抽象語言的靈活、簡潔性之間的折衷。和許多函數式程式語言類似,它實現了函數作為一級對象,使得函數可以複合。函數和方法支持缺省參數、可變參數,調用時可以使用任意次序的關鍵詞參數。 閉包 是詞法的, 作用域 既有詞法作用域和動態作用域。也支持函數式程式語言的其他典型特性,包括尾調用優化,列表解析和協程。 它特有功能包括隱式的元組擴展和無狀態的模式系統。它的常量時間的消息查找和實時的垃圾回收 讓大型系統保持高效與信號處理的靈活。[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 } };
參考資料
編輯- ^ Releases. Github. [15 November 2020]. (原始內容存檔於2020-12-30).
- ^ J. McCartney, SuperCollider: A new real time synthesis language (頁面存檔備份,存於互聯網檔案館), in Proc. International Computer Music Conference (ICMC』96), 1996, pp. 257–258.
- ^ 3.0 3.1 J. McCartney, Rethinking the computer music language: SuperCollider, Computer Music Journal, 26 (2002), pp. 61–68.
- ^ 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).
- ^ BEASTmulch tools for multichannel audio. [2014-01-11]. (原始內容存檔於2009-11-06).