[obsidian] vault backup: 2025-09-01 17:17:45[
All checks were successful
Build / build (push) Successful in 11m19s

This commit is contained in:
2025-09-01 17:17:45 +09:00
parent 70cffb0f32
commit 60eb7a628c

View File

@@ -186,18 +186,25 @@ fn track_regions(regions:[{start:float,dur:float,generator:()->float}]){
let content = `{ phasor(Param!("freq",20,20000)) }
fn Track(name:string, content:()->`float)-> ()->`float{
|| `{ $content |> probe_to_track!(name) }
fn Track(name:string, content:()->`float)->`float{
`{
//stack is cleared and new track ui is placed on top of the stack
$content |> probe_to_track!(name)
}
}
fn master(tracks:[()->`float])->()->`float{
Track!("master", ||`{ map(tracks,|t| t!() ) |> sum })
fn master(tracks:[`float])->`float{
Track!("master", `{ lift_array(map(tracks,|t| $t ) ) |> sum })
}
let dsp = master([t1,t2,t3...])
```
Trackの中でSliderとかが呼び出されると、そのスライダーはトラック内のパラメーターに属していて欲しいが、引数から順番に評価されるので、UI系の関数は全てサンクレベル0を受けて遅延評価するようなものでないとNG
Trackの中でSliderとかが呼び出されると、そのスライダーはトラック内のパラメーターに属していて欲しいが、引数は内側から評価されてしまう=sliderの評価の方が先に来てしまう
UIツリー系の評価は、常にStackに積むような処理にしておいて、TrackのところではStackを消費し新たなUIをスタックに積むようにする、そして最後にトップレベルでスタックを全て消費しUIを構築、みたいな感じかな、これならサンクで包む必要もなし
UI系の関数は全てサンクレベル0を受けて遅延評価するようなものでないとNG
### 他