From 695f3bc45018fef311e263ff21e475e2fdc058d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=BE=E6=B5=A6=20=E7=9F=A5=E4=B9=9F=20Matsuura=20Tomoy?= =?UTF-8?q?a?= Date: Thu, 4 Sep 2025 03:44:03 +0900 Subject: [PATCH] [obsidian] vault backup: 2025-09-04 03:44:03[ --- content/otopoiesis.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/content/otopoiesis.md b/content/otopoiesis.md index 24ba1d5b..9310b421 100644 --- a/content/otopoiesis.md +++ b/content/otopoiesis.md @@ -242,6 +242,31 @@ Trackの直下でTrackが呼ばれた場合、フォルダトラックとして Sliderが呼び出された時、初期値を変数参照にするのはあんまり意味がないことになる(リテラルで固定して、それを双方向プログラムしたい) +一個ずつ順番に考えていこう + +```rust +`{ +let phasor = | | (self+1.0)% 44100 +let dsp:()->float = Project!("test project ",`| | { + let gain = Slider!("gain",`0.5,0.0,1.0) + sin(440*3.1415 * 2*phasor() /samplerate) *gain + }) +} +``` + +これがコンパイル通るところまではいける + +ExprNodeIdをオーディオスレッドで直接参照してはいけない(session_globalsがスレッドローカルなので参照ができない) + +リテラルの値を`Arc`でパースして、それを引き回す + +Sliderの値はProbeIdのようにインデックス参照したいので、そのストレージを何処で保持するか問題 + +SystemPluginは本来スレッドを超えて共有できない状態を共有できてしまう(vmが走っているオーディオスレッドからメインスレッドの値にアクセスしてしまっている) + +そうすると状態共有でArcを使用する意味があんまりない + + ## トラックの追加やリージョンの追加のアクション