2017/04/27

SuperColliderのプラグインのインストール

公式によるプラグインの例の説明に基づいています。

プラグインは .../SuperCollider/Extensions に配置することでインストールされます。

プラグインをビルドする場合はSuperColliderのソースコードが必要になります。例としてf0pluginsをインストールします。

  1. SuperColliderのソースコードをダウンロードして解凍。
  2. f0pluginsのソースコードをダウンロードして解凍。
  3. /path/to/f0plugins で以下のコマンドを実行。
mkdir build; cd build
cmake -DSC_PATH=.../SuperCollider_Source -DINSTALL_DESTINATION=/usr/local/share/SuperCollider/Extensions ..
sudo make install

-DSC_PATH はソースコードへのパス -DINSTALL_DESTINATIONExtensions へのパスを指定してください。

以上でインストールができているはずです。SuperCollider IDEで確認してみます。

  1. SuperCollider IDEを起動。
  2. Ctrl+Bでサーバを起動。
  3. 下のコードをペースト。
  4. ペーストしたコードを選択してCtrl+Return。
// Simple synth definition using the Atari2600 UGen:
(
SynthDef(\atari2600, {|out= 0, gate= 1, tone0= 5,
tone1= 8, freq0= 10, freq1= 20, amp= 1, pan= 0|
  var e, z;
  e= EnvGen.kr(Env.asr(0.01, amp, 0.05), gate, doneAction:2);
  z= Atari2600.ar(tone0, tone1, freq0, freq1, 15, 15);
  Out.ar(out, Pan2.ar(z * e, pan));
}).add
)

// And a pattern to play it:
(
Pbind(
  \instrument, \atari2600,
  \dur, Pseq([0.25, 0.25, 0.25, 0.45], inf),
  \amp, 0.8,
  \tone0, Pseq([Pseq([2, 5], 32), Pseq([3, 5], 32)], inf),
  \tone1, 14,
  \freq0, Pseq([Pbrown(28, 31, 1, 32), Pbrown(23, 26, 3, 32)], inf),
  \freq1, Pseq([Pn(10, 16), Pn(11, 16)], inf)
).play
)

音が出れば成功です。

上の例は公式にあったものです。私の環境では実行できなかったので方法を調べました。

SuperColliderの()

SuperColliderの()

SuperColliderの()はブロックのようにも使えるメソッドの呼び出しです。Messageとも関連がありますが、何と呼んでいいのかよくわかりません。lispのprognが感覚としては近いです。

まずはブロックとして使ってみます。SuperCollider IDEでは貼り付けた行にカーソルを合わせてCtrl+Returnで実行できます。

(a = 10; b = a * a; c = b * b; postln(c)) // 10000

メソッド名を指定すれば関数を呼び出せます。()は最後の式の評価値を返します。

postln(a = 10; b = a * a; c = b * b; c + c) // 20000

入れ子にしてみます。以下を範囲選択してCtrl+Returnで実行できます。

(postln(
  a = 10;
  c = (
    b = a * a;
    b * b
  );
  postln(b); // 100
  c + c
)); // 20000
postln(a) // 10

宣言した変数はグローバルになっていることがわかりました。

メソッド名は後ろにも書けます。

postln(100); // 100
100.postln;  // 100

postln(neg(1)); // -1
1.neg.postln    // -1

引数が2つ以上の場合は後ろに置けません。ただし先頭の引数は前に置くことができます。

squared(difsqr(4, 8));   // 2304
difsqr(4, 8).squared;    // 2304
4.difsqr(8).squared      // 2304
// (4, 8).difsqr.squared // エラー

2017/04/24

Snake






遊んでみる

Snakeは古典的なゲームです。

ヘビの体をより長く伸ばすことがゲームの目的です。矢印キーの左右でヘビを操り、エサを食べさせることで体が伸びます。ヘビは自分の体か画面の端にぶつかると死にます。

Fedora26でSuperCollider3.8をコンパイル

SuperColliderは音の合成やアルゴリズムによる作曲に使われるソフトウェアです。
Fedora25以降はCCRMAのリポジトリが無くなったのでソースコードからコンパイルしてインストールすることにしました。

基本はソースコードに同梱されているインストール方法に従えばいいのですが、ところどころ引っかかる部分があったのでまとめました。

2017/04/03

Emacs Org mode 9.0.5でのリンクのハイライト

Org mode 9.0.5のデフォルトの設定ではDouble bracket links([[]]で囲まれたリンク)の後に続く文字が正しくハイライトされません。以下に例を挙げます。

1. [[http://example.com]]は例に使えるドメイン名です。
2. これは[[http://example.com][リンク]]です。

この問題はPlain text linksが原因のようで、"http:"に続く文字列は次の空白が見つかるまでリンクになってしまいます。M-x customizeからOrg Highlight LinksのPlane text linksを無効にすることで問題を回避できます。

以下はその他調べたことなどです。

2017/03/18

Singen0.2



デモを見る

ワンショットを量産するためのシンセサイザーです。より細かな調整が可能となったエンベロープとオーバーサンプリングが追加されました。

Randomを押すとパラメータがランダムに変わって音を探すことができます。気に入った音はSaveで保存できます。