mimium memo

Conditional stateful function call will not handle shiftstate position properly · Issue #71 · mimium-org/mimium-rs · GitHub

mimiumのif文は選択的にブランチを実行するので、例えば

fn dsp(){<!-- line:11 -->
	 if (random()){<!-- line:12 -->
	   gen_a() <!-- line:13 -->
	 }else{<!-- line:14 -->
	   gen_b()<!-- line:15 -->
	}<!-- line:16 -->
}<!-- line:17 -->

のようなコードを書くと、gen_agen_bはそれぞれランダムなサンプルレートで内部を更新するという形になってしまう。

Faustselectプリミティブが両方のブランチを常に評価する戦略を取っている理由はこれを避けるため。

ただ、そういう意味ではOndemand primitive for Faustをmimiumのif文で再現できるとも言える。

つまり、アップサンプルやダウンサンプルを組み込み関数を新たに定義することなく、ライブラリで定義できる。(サンプルレートの動的な変化とかにどう対応するんだよという問題はあるけど)

内部状態のimplicitな更新は意味論的に結構曖昧なところなのでなんとかしたいなあ