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