diff --git a/content/.obsidian/graph.json b/content/.obsidian/graph.json index ce6d9744..12d41a9d 100644 --- a/content/.obsidian/graph.json +++ b/content/.obsidian/graph.json @@ -1,7 +1,7 @@ { "collapse-filter": false, "search": "", - "showTags": true, + "showTags": false, "showAttachments": false, "hideUnresolved": true, "showOrphans": true, @@ -14,9 +14,9 @@ "lineSizeMultiplier": 1, "collapse-forces": false, "centerStrength": 0.677815755208333, - "repelStrength": 15.52734375, + "repelStrength": 16.8867003815101, "linkStrength": 1, "linkDistance": 48, - "scale": 1.0955205619292947, + "scale": 1.0101881773459105, "close": true } \ No newline at end of file diff --git a/content/Extempore.md b/content/Extempore.md new file mode 100644 index 00000000..935d6735 --- /dev/null +++ b/content/Extempore.md @@ -0,0 +1,7 @@ +#programming-language #sound + +Andrew Sorensenが作ったLispライブプログラミング環境。 + +Schemeと、Scheme上で実装されたDSLのxtlangの2つの言語を使う。 + +xtlangは静的型付けを要求する言語で、LLVMでJITコンパイルしてリアルタイムDSPができたりする。 \ No newline at end of file diff --git a/content/継時再帰.md b/content/継時再帰.md new file mode 100644 index 00000000..565096c9 --- /dev/null +++ b/content/継時再帰.md @@ -0,0 +1,15 @@ +#programming-language + +Temporal Recursionとも。 + +[[Extempore]](の前身Impromptuで導入された)もの。 + +n秒後に自分自身の関数を実行することでリズムとかを作る仕組み + +クロージャなので、一旦ランタイムに現在の環境をキャプチャして逃す必要がある。 + +ガベコレなしで実装するのは多分大変 + +(継時の再帰が発生する場合はキャプチャした環境をランタイムで管理する以外の方法はないんだよなあ、多分) + + diff --git a/content/音楽プログラミング言語の形式化.md b/content/音楽プログラミング言語の形式化.md index 5c22b740..defe9ca2 100644 --- a/content/音楽プログラミング言語の形式化.md +++ b/content/音楽プログラミング言語の形式化.md @@ -15,6 +15,8 @@ ## [[mimium]]と[[多段階計算]] +[[mimium新内部表現の構想]]での検討材料 + こういうのが計算できなかった(要するにfixpointの中で`self`を使うと必要な`self`のサイズを確定できない) ```rust @@ -128,6 +130,7 @@ fn lowpass(input,fb){ ただ、そうするとユーザーからは、「なんだかよくわからんけど再帰する関数の第1引数には上限の決まったIntしか使えんらしい」という不条理感が残る +こっちは筋が悪いかなー ### これら2つではカバーできないケース 再帰の深さによって返したい型が変わるような多相を考えると厳しいかも。 @@ -139,3 +142,16 @@ fn lowpass(input,fb){ 項でインデックスされた型=依存型な気がするのよな [[多段階計算#依存型との組み合わせ]]  + +どのみち、拡張していくとしたら + +1. 現状のmimiumのシンタックスのまま再帰とfeedを混ぜてもコンパイル通せるように頑張る +2. 多段階計算導入 +3. 依存型導入? + +という順番になると思うので、どのみち一旦Rustでのmimiumコンパイラをシンプルに作りに行けばそれでいいのではないか?後から拡張するということで + +[[継時再帰]]の方をどう定義するか&feedの項とどう使い分けるのかの問題はまだ残されているが… + +継時再帰は[[Kronos]]のMeta-Sequencerでも使われてたはずだし、きちんと意味論を定義することはできるのかな? +