[SuperCollider] GUI Overview and Introductionを流し読む


SuperCollider3.3になってアップデートされたというGUIのヘルプファイル、「GUI Overview and Introduction」を、翻訳する時間もスキルも無いので、あくまで流し読みます。

——

Basic usage: Kits and Syntax

GUIを扱うには2つの基本的なクラスがあるらしい。SCWindowJSCWindow
SCWindowはMacで、JSCWindowはそれ以外かな?

Basic Usage: Windows, Containers and Decorators

ウィンドウの作り方はほぼ変わらずというか変えなくてもよくて、Windowと書けばMacならSCWindowが呼び出されると言うことのようです。

(
// Window returns the window class for the current kit
w = Window( "my name is...", Rect( 128, 64, 340, 360 ));
w.front;
)

Window内のパーツの配置の仕方は、ひとつずつ座標を指定するやり方と、作ったパーツ順に自動的にWindow内に詰めて流し込むやり方がある。CSSで言ったら position: absolute; か float: left; のような感じ。当然フロートの方がらくちん。
やりかたはこれでOK

w.view.decorator = FlowLayout(w.view.bounds);

流し込むエリアもCompositeViewで複数設定できるらしい。知らなかった…
そもそもWindow自体CompositeViewのサブクラスなんだとか。

(
w=Window.new.front;
w.view.decorator = FlowLayout(w.view.bounds); // notice that FlowView refers to w.view, not w

v=CompositeView(w, Rect(5,5,190,390));
v.background = Color.rand; 					// set the color
v.decorator = FlowLayout(v.bounds);

14.do{ Slider(v, 180@20).background_(v.background) };

)

vで設定した範囲内にスライダーが流し込まれます。

Window Coordinates

ミニ情報的な感じで。SuperColliderのウィンドウはスクリーンの左下が基準なので何かと扱いづらい。そんなときはウィンドウの高さを取得すればいいよ、と。

(
w=Window.new("A Precisely Placed Window",
Rect(100, Window.screenBounds.height-300, 300, 200 )

).front;
)

ウィンドウの高さを取得して、そこから300px引いた数値を基準点とする。ウィンドウの高さが200pxなので、画面の上端からは100px離れてるよ、と。

Actions: Performing Things with a GUI Widget

アクションを設定するには。スライダーなどのGUIのactionメソッドに書く。

(
w = Window ("A Slider");
a = Slider (w, Rect(40, 10, 300, 30));
a.action={ |sl| sl.value.postln }; // set the action of the slider
w.front
);

SuperColliderの「|sl|」という引数の受け方がいまいちなじめないが…
アクションを追加するにはaddActionメソッド、削除するにはremoveActionメソッドを使う。

// adding and removing an action:
f = { |sl| "--------*******-------".postln; };
a.addAction(f);
a.removeAction(f);

この辺はすごく分かりやすい。

Asynchronous GUI Techniques: Communicating with the Sound Server

GUIとサウンドサーバの間の非同期通信。必要性・内容ともにいまいちつかめず。
ただ、サンプル中のNumberBoxと言うクラスは便利ですね!
NumberBoxで生成したテキストフィールドをクリックし、上下へのドラッグや上下矢印キーの入力で、テキストフィールド内の数字を増減できる。何かと使えそう。

——–

ううむ。次はGUI Classesを流し読みます。

コメントを残す

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