Files
quartz-research-note/content/mimiumの部分的DSP更新とFaustのondemand.md
松浦 知也 Matsuura Tomoya 1c786d7bb9
Some checks failed
Build / build (push) Failing after 13m36s
[obsidian] vault backup: 2025-06-18 17:44:26[
2025-06-18 17:44:26 +09:00

31 lines
1.2 KiB
Markdown

---
date: 2025-06-18 16:39
---
#mimium #memo
[Conditional stateful function call will not handle shiftstate position properly · Issue #71 · mimium-org/mimium-rs · GitHub](https://github.com/mimium-org/mimium-rs/issues/71)
[[mimium]]のif文は選択的にブランチを実行するので、例えば
```rust
fn dsp(){
if (random()){
gen_a()
}else{
gen_b()
}
}
```
のようなコードを書くと、`gen_a``gen_b`はそれぞれランダムなサンプルレートで内部を更新するという形になってしまう。
[[Faust]]の`select`プリミティブが両方のブランチを常に評価する戦略を取っている理由はこれを避けるため。
ただ、そういう意味では[[Ondemand primitive for Faust]]をmimiumのif文で再現できるとも言える。
つまり、アップサンプルやダウンサンプルを組み込み関数を新たに定義することなく、ライブラリで定義できる。(サンプルレートの動的な変化とかにどう対応するんだよという問題はあるけど)
内部状態のimplicitな更新は意味論的に結構曖昧なところなのでなんとかしたいなあ