SuperCollider
https://supercollider.github.io/
1992年ごろにJames McCartneyが開発。
McCartneyはのちにAppleに移りCore Audioまわりの開発をリードするようになり、開発はコミュニティーベースになる。
オブジェクト指向に根差した言語で、リアルタイムにコードを再評価できるライブコーディングを想定している。
そのため内部ではconcurrent garbage collectionが走っていたりと実装は高度(C++のマルチスレッド関係の標準化に携わっている人もコントリビュートしている)。
smalltalkをベースに設計されているため、演算子の優先順位がなく全て左結合だったりと、モダンな言語から入った人には慣れない記法も多い。
内部的には、言語のインタプリタ部分(sclang)と信号処理エンジン(scsynth)に分かれた構造になっている。
scsynthはごく一部の命令(SynthDef)を除いて、サーバーからのOSC(Open Sound Control)プロトコルでの命令で操作する構造になっているため、このコマンドを送る機能だけを実装した別の言語が多数存在する。
Sonic Pi、TidalCycles、IXI lang、Overtone、FoxDotなど。
ちなみに元々はMax上で動作するPyriteというスクリプティング言語とSynth -O -Maticというソフトウェアモジュラーシンセサイザーのアプリが別々にあり、それが合体するような形で作られた。バージョン1、2、3でそれぞれ大きく言語仕様が異なり、上述したサーバー/クライアント方式が取り入れられたのは3から。
SuperColliderという名前は粒子加速衝突機のことだが、これはMcCartneyが元々ハッブル宇宙望遠鏡のための解析ツールの一部としてプログラミング言語設計に初めて触れたことなどに由来しているらしい。
参考文献:McCartney, J. 2002. Rethinking the computer music language: SuperCollider. Computer Music Journal. 26, 4 (Dec. 2002), 61–68. DOI:https://doi.org/10.1162/014892602320991383
McCartneyが開発の経緯を話しているポッドキャスト(書き起こし:http://www.darwingrosse.com/AMT/transcript-0350.html)
https://www.youtube.com/watch?v=qmayIRViJms
#language
#音楽プログラミング