このような方におススメ
- 普段使わないプログラミング言語を試して見たい。
- 音響のプログラミングに興味がある。
音響向けプログラミング言語「SuperCollider」
Githubのオープンソースのプログラミング言語と見ていたらたまたま目に入ったSuperColliderのご紹介です。
SuperColliderは音響向けプログラミング言語です。文法はオブジェクト指向と関数型言語を組み合わせたような形でRubyのようにも書けますしJavaScriptのようにも書ける動的言語です。
URL: https://github.com/supercollider/supercollider
文字列の扱いに特化した言語や、平行処理に特化した言語と各プログラミング言語で得意とする分野がある中、SuperColliderはリアルタイム音響合成に特化しています。
音響合成とプログラミングの関係にあまりピンと来ない方も多いと思います。理解するには試してみる、体感してみるのが早いので下URLを開いてページ内にあるいくつかのサンプルを再生して見てください。
SuperColliderのサンプルURL: http://supercollider.sourceforge.net/audiocode-examples/
シンセサイザーで幾つかの音を合成しているような音楽が再生されたと思います。このページ内を下の方に少し進むと、SuperColliderで書かれたソースコードがありコードの近くの再生ボタンを押すと効果音が再生されます。
この効果音がSuperColliderでプログラミングしたコードを実行した出力結果です。
類似した言語にはPureData/Synthedit があります。一般的に使われているのは商用のMax/MSPが多いと思います。
自分の環境で試して見る。SuperColliderのインストール。
それでは自分の環境で動かしてみましょう。公式サイトを開いてページ上部の「Download」を押すと各プラットフォームのインストーラーが一覧表示されます。クロスプラットフォーム対応でMacOS/Linux/Windowsのバイナリが準備されています。ご利用のプラットフォームに合わせてインストーラーをダウンロード、インストールします。
公式サイトURL:http://supercollider.github.io/
ダウンロードページ:http://supercollider.github.io/download.html
インストールに成功したらSuperColliderを起動します。IDEがセットになっていますので2ペインのエディターが開いたかと思います。
左がコーディングを行うエディターで、右上がリファレンス、右下がサーバーとコンソールになります。
サンプルを動かして自分のPCから音を鳴らす
それでは一番シンプルなサンプルを動かしてSuperColliderがどういうものか体感してみましょう。下のソースコードをエディターに貼り付けて、行にカーソルを合わせてCTRL+Enterを押すとスピーカー/ヘッドホンの片方からサイン音が鳴ります。※音量に注意して下さい。
{SinOsc.ar(440)}.play;
SinOsc(URL: http://doc.sccode.org/Classes/SinOsc.html)はサイン波を出力するクラスでクラスメソッドのarはオーディオレイトの略です。arの第一引数の説明には「Frequency in Hertz」とあります。音は波である事を思い出して貰えると、このサンプルコードの意味である「周波数440ヘルツのサイン波」が再生されているイメージがもてるかも知れません。
音が生成されない場合、サーバーが立ち上がっていない可能性があります。メニューバーの「Language」>「Boot Server」を押してサーバーを立ち上げて、再度試して下さい。
次に実行した行の440を1440に変更して再度CTRL+Enterを押して実行してみて下さい。ヘッドホンを使っている方は耳が壊れそうな高い音が鳴っていると思います。
{SinOsc.ar(1440)}.play;
方側からだけ音が流れるのは耳に優しくないので、両方から音を鳴らして見ます。配列でパラメーターを渡してステレオでならします。それぞれで違いが分かるように高い音、低い音にします。
{SinOsc.ar([200, 500])}.play;
ヘッドホンで聴いていると頭が割れそうになってきました。CTRL+.(ドット)を押すと音が停止します。
次にプロペラ音のような音を鳴らして見ます。以下ソースコードをエディターに貼り付けて、CTRL+Enterで再生して下さい。
{LFSaw.ar(30, 20)}.play;
音がなっている最中に追加で実行すると音が合成されます。パラメーターを変えて試して見て下さい。
使われて入そうな効果音な音を鳴らす
次に実際に使われていそうなサンプルを使って見ます。以下ソースコードをエディターに貼り付けて、3行を選択状態でCTRL+ENTERを押すとパラピレパレといったSF映画で使われるような通信のような音がなります。
{SinOsc.ar(OnePole.ar(Mix( LFSaw.ar([1,0.99],[0,0.6],2000,2000).trunc([400,600])*[1,-1] ),0.98)).dup*0.1}.play;
音のパターンが単一ではなく複合的になったのが分かると思います。同じように下のコードを選択して実行すると、自然のせせらぎのような音が鳴り続けます。
({RHPF.ar(OnePole.ar(BrownNoise.ar, 0.99), LPF.ar(BrownNoise.ar, 14) * 400 + 500, 0.08, 0.04)}!2) + ({RHPF.ar(OnePole.ar(BrownNoise.ar, 0.99), LPF.ar(BrownNoise.ar, 20) * 800 + 1000, 0.09, 0.03)}!2) * 4 }.play
ここまでサンプルコードを動かしてきて、コード上に書かれているクラスとメソッドの組み合わせによって複雑な音響がプログラミングによって合成されているのが少しずつ分かって来たかと思います。
まとめ・要約
汎用プログラミング言語ではない、音響に特化したプログラミング言語「SuperCollider」を少しだけ紹介しました。業務としてプログラミングする機会はまずもって無さそうな言語ですので、これを機会に音響プログラミングに少し触れてみて見ると面白いと思います。
また音楽ファイル共有サービスのSoundCloudにSuperColliderのグループがあります。ここには実際にSuperColliderで作られた音楽が並んでいますので、興味をもった方はこちらも見てみるとより興味がもてると思います。
SoundCloudグループURL:https://soundcloud.com/groups/supercollider
本ブログは、Git / Subversionのクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
エンタープライズ向け Git / Subversion 導入や DevOps による開発の効率化を検討している法人様必見!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments