Hatena::Groupbugrammer

蟲!虫!蟲!

Esehara Profile Site (by Heroku) / Github / bookable.jp (My Service)
過去の記事一覧はこちら

なにかあったら「えせはら あっと Gmail」まで送って頂ければ幸いです。
株式会社マリーチでは、Pythonやdjango、また自然言語処理を使ったお仕事を探しています

 | 

2011-11-18

[]音響プログラミング言語SuperColliderの環境をUbuntuに作る 00:44

 デザイン系・アートプログラミング言語ならば、Javaを改造して作られたProcessingが有名だと思うんですが、デザイン系があるんだったら、ミュージック系もあるんだろう、ということで調べてみた結果として、音響プログラミング言語というジャンルがあるとのこと。簡単に説明したら、「音を作る為の言語」というのがいいのかな。一番有名なのは、MAX/MSPではあるんですが、さすがに有料で大変です。

 そこで、無料なもので、有名なのがCSoundSuperColliderらしいという話をちょっと見ました。

 SuperCollider長野の風俗は評判がよいというサイトもあり、日本ではそれなりに面白がっている人がいる様子です。

 というわけで、入門というには達してはいないので、取りあえずUbuntuに環境を作りましょうという紹介。そして、Ubuntuの標準的なエディタであるところのgeditから、SuperColliderを扱ってみようというのが今回の目的です。音響系は、デザインに比べて、その効果が分かりにくい──まずアップロードするときは、Mp3かOggにしなきゃいけないし、丸や四角みたいに直感的ではないように感じるし、試聴にある程度時間を束縛するし──というのはあると思うのですが、趣味にするにはピッタリなのではないかなと思います。

 無粋なことを言えば、この英語サイトを見れば速いんだけど、それは言わない約束で進めていきましょう。

 SuperCollider On Ubuntu | S C O T T P E T E R S E N ∞ E L M U C O ∞ S C A C I N T O . C O M

レポジトリを追加する

 SuperColliderの最新版は、外部からのレポジトリで引っ張ってきます。

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FABAEF95
sudo add-apt-repository ppa:supercollider/ppa
sudo apt-get update
sudo apt-get install supercollider

 SupperColliderはjackという環境を必要とするので、それをGUIベースで扱うためのツールもインストール

 sudo apt-get install qjackctl

 また、Ubuntuの標準的なエディタであるところの、geditから使いたい人は

sudo apt-get install supercollider-gedit

 をインストールするといいかも。すると、[編集] -> [設定]のところにScedが追加されているはず。

 Corridor Nine: SuperCollider for Human Beings

 なので、それをチェックすると追加されている。

SwingOSCなどのインストール

 で、GUISuperColliderサーバーを起動させたりするようなものも存在しています。それがSwingOSCです。

 上のサイトだと、まずダウンロードをする。SwingOSC download | SourceForge.net

 で、解凍して、下のようにやる。

sudo mkdir /usr/share/SuperCollider/SwingOSC
sudo cp */SwingOSC/build/SwingOSC.jar /usr/share/SuperCollider/SwingOSC
sudo cp -r */SwingOSC/SuperCollider/Help/SwingOSC/ /usr/share/SuperCollider/Help
sudo cp -r */SwingOSC/SuperCollider/SCClassLibrary/SwingOSC /usr/share/SuperCollider/Extensions/

 Ubuntuの場合、設定ファイルは

~/.sclang.sc

 となる。

SwingOSC.program = "/usr/share/SuperCollider/SwingOSC/SwingOSC.jar"; g=SwingOSC.default; g.boot; SwingOSC.default.waitForBoot({
    Server.local.makeWindow;
    Server.internal.makeWindow;
    });

 こんな感じで記述。そうすると、GUISuperColliderサーバーを扱えるSwingOSCのウィンドウもでてきます。

gedit版の使い方

 では、SuperColliderではどういう風に作曲するのか。上記インストールが成功していたら、geditの[ツール] -> [SuperCollider Mode]が追加されていると思うので、それを実行しましょう。手始めに、404 Not Foundのサンプルコードを見てみましょう。

(  
SynthDef("test", {  
    Out.ar(0, SinOsc.ar(440, 0, 0.5));  
}).load(s);  
)  

 解説ページによると、SynthDefというのは、どんな音がなるのか、という定義のようです。ただ、このように書いただけでは実行されないので、一番先頭にある"("の部分にセットして、CTRL-Eを押す。すると、音が定義されます。要するに、SynthDefを実行したわけですね。

 さらに、

(  
Synth("test");  
)  

 を押すと、音が鳴ります。同様にEscapeキーを押せば止まります。これで、基礎的なSuperColliderの使い方はわかりましたね。ちなみに、SuperColliderEmacsから扱えるようなプラグインも存在しています。

 no title

 Vimはこんなのがあるようす。

 SCVim

音響プログラミング言語間の実装の違い

 さて、そうなると、最初に出てきたCSoundとの違いが気になるところです。CSoundは下のように説明されています。

404 Not Found

Csoundアルゴリズム、イヴェントを数式、数値で記述することにより時間軸上の音響生成を行います。プログラムの性格上、Max/MSPがパフォーマーに向きとするならば、Csoundは作曲家に向くといえるものではないでしょうか。

 と説明されています。どちらかといえば、その本性上はMIDIなどに近いものがあるのかな、という気がします。

追記 2011.11.20

 どうやら、CSoundでも、リアルタイムの連携はできるようです。

Csoundもバージョン5からリアルタイム処理に特化し、Pythonを内蔵し、さらにSuperColliderにはない(多分?)多言語APIなんてのもあって、自分のアプリに内蔵できたりもします。例えばtcl/tkのCsoundのフロントエンドにtcl/tkを採用しサーバークライアントで作曲も出来ます、楽勝です。 http://www.csounds.com/journal/2006winter/tclCsound.html TclCsoundはCsound5に含まれた標準機能ですので、Csoundに過不足などないのですよ、、、ほとんど。

 では、SuperColliderはどういうものなのか、という話になるかと思うわけです。下のページがわかりやすかったので引用します。

サーバサイドSuperCollider - sc3onlinuxの日記

 SCはaudio serverであるscsynthと、クライアントであるsclangに分かれて成り立っています。さらに、sclangはプログラム言語部分とインタプリタ部分に分かれています。sclangの機能として2つあり、サーバクライアントとしての機能と、言語のインタプリタとしての機能です。要はコードを解釈して、サーバであるscsynthにメッセージを送るという役割を担っています。また、sclangとscsynthはOSCプロトコルを利用して情報のやり取りをしています。


 SC内の一連の流れは、SCプログラミング言語で書かれたものをsclangのインタプリタが解釈しOSCメッセージに落とし込む。次に、そのOSCメッセージをsclangがscsynthに送信。scsynth側で送られてきたメッセージに従い処理する。となっています。なんらかの方法を用いて、scsynthにシンセを作成し、そのシンセに対して挙動を制御できれば音が鳴るってことです。

 簡単に言っちゃえば、

(sclang -> OSCメッセージ) -> scsynth

 になるのではないかと。

 では、このモデルの何が嬉しいかといえば、CSoundのことは詳しくないのでわかりませんが、サーバーが命令ごとに音を生成するので、リアルタイムに音を鳴らしていくというステップがとりやすくなるというのが嬉しいところなのかな、と推測します(間違っていたらすいません)。geditだと、ブロックをCTRL+Eしていったりするので、そういう意味では、演奏向けなのかな、という感じです。

 最初の構文的な気持ち悪さ(なんでカッコでくくられているの)を除けば──でも、構文の気持ち悪さは単なる個人の趣向なので──、音楽を作る言語という部分では凄く面白いんじゃないかなと思ったりもします。

 文法的には、下のサイトがわかりやすいのかなと思ったりもします。

 SuperCollider基礎文法最速マスター - sc3onlinuxの日記

 というわけで、今回は「絵を書いたりする言語だけじゃないよ、音を作れる言語もあるんだよ」という紹介でした。

通りすがり通りすがり2011/11/20 06:45Csoundもバージョン5からリアルタイム処理に特化し、Pythonを内蔵し、さらにSuperColliderにはない(多分?)多言語APIなんてのもあって、自分のアプリに内蔵できたりもします。例えばtcl/tkのCsoundのフロントエンドにtcl/tkを採用しサーバークライアントで作曲も出来ます、楽勝です。 http://www.csounds.com/journal/2006winter/tclCsound.html TclCsoundはCsound5に含まれた標準機能ですので、Csoundに過不足などないのですよ、、、ほとんど。

nisemono_sannisemono_san2011/11/20 12:48通りすがりさん
Goodな情報ありがとうございます。Pythonを内蔵している点と、多言語APIがあるというのは面白いですね。
機会があったら、CSoundのドキュメントも読んでみようかと思います。

KennHoliHifyKennHoliHify2017/05/09 05:20Cialis In Internet Metronidazole For Dogs No Rx Ou Acheter Du Cytotec Supersaver Meds Buy Lasix Without A Prescription Online <a href=http://byuvaigranonile.com>viagra</a> Viagra Ayuda Al Corazon

 |