[obsidian] vault backup: 2025-10-11 21:07:13[
Some checks failed
Build / build (push) Failing after 14m43s
Some checks failed
Build / build (push) Failing after 14m43s
This commit is contained in:
@@ -1,8 +1,12 @@
|
|||||||
|
|
||||||
#memo #mimium
|
#memo #mimium
|
||||||
|
|
||||||
|
## SuperCollider
|
||||||
|
|
||||||
[[SuperCollider]]のPatternに相当するものを作ってみたい。
|
[[SuperCollider]]のPatternに相当するものを作ってみたい。
|
||||||
|
|
||||||
|
[Pattern Guide 03: What Is Pbind | SuperCollider 3.14.0-dev Help](https://doc.sccode.org/Tutorials/A-Practical-Guide/PG_03_What_Is_Pbind.html)
|
||||||
|
|
||||||
Pattern自体は基本的にはシンプルな遅延リスト。だが値の種類を、ピッチと長さとかグループ化できてジェネリックなので、静的型付け言語だとジェネリクスがいる(`next`メソッドを持つ型クラスとかインターフェース的なものが欲しくなる)
|
Pattern自体は基本的にはシンプルな遅延リスト。だが値の種類を、ピッチと長さとかグループ化できてジェネリックなので、静的型付け言語だとジェネリクスがいる(`next`メソッドを持つ型クラスとかインターフェース的なものが欲しくなる)
|
||||||
|
|
||||||
```smalltalk
|
```smalltalk
|
||||||
@@ -17,23 +21,23 @@ p.stop;
|
|||||||
|
|
||||||
`Pbind`は実際には遅延リストを実行してイベント(キーバリューの辞書ペア集合)のリストを得ている
|
`Pbind`は実際には遅延リストを実行してイベント(キーバリューの辞書ペア集合)のリストを得ている
|
||||||
|
|
||||||
[Pattern Guide 03: What Is Pbind | SuperCollider 3.14.0-dev Help](https://doc.sccode.org/Tutorials/A-Practical-Guide/PG_03_What_Is_Pbind.html)
|
mimiumでやろうとすると、パターン型が再帰型になるので、自動で型推論とかは無理になるな
|
||||||
|
|
||||||
|
[[FoxDot]]だと空白が意味を持つ
|
||||||
|
|
||||||
|
一定間隔の値の変化を扱うのはmimiumでもMetroつかえばできる、長さを可変にするときの抽象化ってどうします?
|
||||||
|
|
||||||
|
Duration+Restで相対的に表現する?普通のシーケンサーならDuration一定と考えるのが普通
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
`.play`を実行すると、`EventStreamPlayer`クラスがいろいろ頑張ってくれるらしい
|
`.play`を実行すると、`EventStreamPlayer`クラスがいろいろ頑張ってくれるらしい
|
||||||
|
|
||||||
`instrument`の指定なしにPbindすると、デフォのシンセが鳴る
|
`instrument`の指定なしにPbindすると、デフォのシンセが鳴る
|
||||||
|
|
||||||
```smalltalk
|
|
||||||
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の役割ってことか?
|
durとかdegreeみたいなのをいい感じに解釈するのはEventStreamPlayerの役割ってことか?
|
||||||
|
|
||||||
[supercollider/SCClassLibrary/Common/Streams/Stream.sc at d4b6f8d5e6c9e419c86b3c44d899b63b4610893b · supercollider/supercollider · GitHub](https://github.com/supercollider/supercollider/blob/d4b6f8d5e6c9e419c86b3c44d899b63b4610893b/SCClassLibrary/Common/Streams/Stream.sc#L491)
|
[supercollider/SCClassLibrary/Common/Streams/Stream.sc at d4b6f8d5e6c9e419c86b3c44d899b63b4610893b · supercollider/supercollider · GitHub](https://github.com/supercollider/supercollider/blob/d4b6f8d5e6c9e419c86b3c44d899b63b4610893b/SCClassLibrary/Common/Streams/Stream.sc#L491)
|
||||||
|
Reference in New Issue
Block a user