SuperColliderでクラスを作る時のメモ


普段はPHPerになってしまった私がSuperColliderのクラスを書こうとした時に詰まったポイントのメモ。基本、ドキュメントを読まずにObjectクラスのソースを読んでお作法を知ろうと思ったのだけど、意外とハードル高かった。

準備

拡張子は.scで、下記のディレクトリーに置いて、メニューの [ Language > Recompile Class Library ] を選択。

/Libraries/Application Support/SuperCollider/Extensions/

コンパイルに失敗したらエラーが表示されるので、ひたすらエラーを潰す。

継承

スーパークラスの指定はコロンでOK

MyClass : SomeSuperclass {

}

スーパークラスを指定しないと、暗黙的にObjectクラスを継承したことになる

メソッド名にアスタリスク( * )が付くものがある

アスタリスクが付くものはクラスメソッドで、thisがクラスを指す。アスタリスクがつかないものはインスタンスメソッドで、thisがインスタンスを指す。分かりにくいぜ

メソッド内にキャレット( ^ )があるけど何だこれ

returnでした。分かりにくいぜ

returnしない場合は、インスタンスが返されるので、書かなくても動く。

変数の前の大なり小なり( <, > )は何だ

< がゲッター、> がセッターでした。分かりにくいぜ

MyClass : Superclass {
  var myVariable;

  variable {
    ^myVariable
 }

  variable_ { arg newValue;
    myVariable = newValue;
  }
}

本来このようにゲッターとセッターを書かないといけないところを、、、

MyClass {
var <getMe, >setMe, <>getMeOrSetMe;
}

短く書けるよ!ということらしい。

ちなみに変数も var と classvar があり、前者はインスタンス変数、後者はクラス変数。クラス変数は他の言語だと定数と似た扱いなのかな?

このあたりの解説はヘルプの Guides/Writinglasses に書いてあって、詳しくはデザインパターンでググれって書いてあるので、デザインパターンについて勉強しないといかんっぽい。仕事でも必要になるし、勉強するか〜

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です