[obsidian] vault backup: 2025-08-20 15:53:54[

This commit is contained in:
2025-08-20 15:53:54 +09:00
parent 2d448d58c8
commit 2d572c3073
8 changed files with 95 additions and 6 deletions

View File

@@ -3,6 +3,8 @@ date: 2025-06-27 16:54
---
#mimium #livecoding
mimiumでも[[ライブコーディング]]がやりたいよね
一般化するとこういうモデルにならんだろうか
![[img/general-livecoding-model.png]]
@@ -22,3 +24,60 @@ ChucKではエフェクトのテールが更新時にぶちぎれる問題があ
...これ、結局[[SuperCollider]]のJITLibと同じことかもな
[jitlib\_basic\_concepts\_01 \| SuperCollider 3.14.0-dev Help](https://doc.sccode.org/Tutorials/JITLib/jitlib_basic_concepts_01.html)
## 信号処理の状態持ち越し
[[Incremental Functional Reactive Programming]]の仕組みを用いることはできるだろうか
```rust
//これが
fn dsp(){
delay(100,100,input)+ delay(200,200,input)
}
//こう更新されるとする
fn dsp(){
delay(300,300,input) + delay(100,100,input)+ delay(200,200,input)
}
```
`delay(100)`にはID(delay_1)が、`delay(200)`にはID(delay_2)がそれぞれつけられる
どう増分検出するかの仕組みは置いといて、再コンパイル時に100と200はそのまま、新しく増えたdelay(300)にID`(delay_3)`を挿入する
そうすると、StateStackのためのメモリは完全にリニアにはしないほうが良くて、ツリー状のデータ構造に戻した方が良さそう
[[Red Green Syntax Tree]]のGreen Node→状態メモリのマップだと考えるとわかりやすいのか
```
dsp
| \
delay(1) delay(2)
```
から
```
dsp
/ | \
delay(3)delay(1) delay(2)
```
に更新される
```rust
enum StateLeaf{
Nested(Box<StateTree>),
Delay(usize),
Feedback(usize),
}
struct StateTree{
children: Vec<StateLeaf>
}
```
クロージャの呼び出しの時は?
コンパイル時ではなく、Closure命令でクロージャが作られる際にアロケートとIDの振り分けが起きる
クロージャ