All checks were successful
Build / build (push) Successful in 9m51s
2.0 KiB
2.0 KiB
#memo #mimium
SuperColliderのPatternに相当するものを作ってみたい。
Pattern自体は基本的にはシンプルな遅延リスト。だが値の種類を、ピッチと長さとかグループ化できてジェネリックなので、静的型付け言語だとジェネリクスがいる(next
メソッドを持つ型クラスとかインターフェース的なものが欲しくなる)
重要ポイント
- あるパターンを先に構築して、それにあとから適当なシンセを当てはめることもできる
- 数値リテラルが定数(不変)パターンに自動キャストされていることで、パターンのリストの要素にさらに別のパターンを埋め込むことができる
Pbind
は実際には遅延リストを実行してイベント(キーバリューの辞書ペア集合)のリストを得ている
Pattern Guide 03: What Is Pbind | SuperCollider 3.14.0-dev Help
.play
を実行すると、EventStreamPlayer
クラスがいろいろ頑張ってくれるらしい
instrument
の指定なしにPbindすると、デフォのシンセが鳴る
SynthDef(\default, { arg out=0, freq=440, amp=0.1, pan=0, gate=1;
var z;
z = LPF.ar(
Mix.new(VarSaw.ar(freq + [0, Rand(-0.4,0.0), Rand(0.0,0.4)], 0, 0.3)),
XLine.kr(Rand(4000,5000), Rand(2500,3200), 1)
) * Linen.kr(gate, 0.01, 0.7, 0.3, 2);
OffsetOut.ar(out, Pan2.ar(z, pan, amp));
}, [\ir]);
durとかdegreeみたいなのをいい感じに解釈するのはEventStreamPlayerの役割ってことか?
ここでもなさそうだな、謎・・・。