diff --git a/content/mimium.md b/content/mimium.md index 508e3ad3..416ca275 100644 --- a/content/mimium.md +++ b/content/mimium.md @@ -18,6 +18,10 @@ https://github.com/mimium-org/mimium-rs ## 開発メモ +### 理論 + +- [[mimiumの部分的DSP更新とFaustのondemand]] + ### 中間表現について - [[mimium新内部表現の構想]] @@ -29,9 +33,10 @@ https://github.com/mimium-org/mimium-rs ### ランタイム周りについて -- [[mimiumの配列のGC]] -- [[mimiumのファイルIO]] +- [[mimiumにおけるIO制御]] + - [[mimiumでMIDIインプットを実装]] + - [[mimiumのファイルIO]] - [[mimiumのプラグインシステム]] -- [[mimiumでMIDIインプットを実装]] - [[WASIでmimiumをビルド&デバッグしてみる]] +- [[mimiumの配列のGC]] diff --git a/content/mimiumにおけるIO制御.md b/content/mimiumにおけるIO制御.md index a6786d3e..a61400b6 100644 --- a/content/mimiumにおけるIO制御.md +++ b/content/mimiumにおけるIO制御.md @@ -13,4 +13,11 @@ date: 2025-06-18 15:42 [[Kronos]] Meta-Sequencerに近い仕組みを、IOモナドなしで実装する(正格評価なのでそこまでやらんでいいはず) +組み込みのコンパイラドライバを制御する関数をいくつか用意する +``` +start()->int +stop(id:int) + + +``` diff --git a/content/mimiumの部分的DSP更新とFaustのondemand.md b/content/mimiumの部分的DSP更新とFaustのondemand.md new file mode 100644 index 00000000..0938b1f1 --- /dev/null +++ b/content/mimiumの部分的DSP更新とFaustのondemand.md @@ -0,0 +1,26 @@ +--- +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文で再現できるとも言える。 + +つまり、アップサンプルやダウンサンプルを組み込み関数を新たに定義することなく、ライブラリで定義できる。(サンプルレートの動的な変化とかにどう対応するんだよという問題はあるけど)