From fcd1a184be838469bd8b0522b114e942936558e5 Mon Sep 17 00:00:00 2001 From: "Tomoya Matsuura(MacBookPro)" Date: Sun, 20 Aug 2023 10:37:31 +0900 Subject: [PATCH] [obsidian] vault backup: 2023-08-20 10:37:31[ --- content/otopoiesis.md | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/content/otopoiesis.md b/content/otopoiesis.md index b777ed15..51f2df1d 100644 --- a/content/otopoiesis.md +++ b/content/otopoiesis.md @@ -11,10 +11,50 @@ DAWをプログラマブルにする試み --- +## 構造 + +いわゆるオーディオプラグインのように、各コンポーネントがUI+オーディオ処理を記述していて、それをツリー状に組み合わせていくのではなく、プロジェクトツリー、UIのツリー、オーディオ処理用の構造体とそれぞれツリーができ、全てのノードが対応づけされている + +コードの例(モジュレーションされているサイン波+ディレイ) + +``` +project{ + track: [ + delay{ + sinosc{ + freq: + sinosc:{ + freq: float{20..20000,1000,"freq"} + phase: 0.0}, + phase: 0.0 + }, + time: 1000 + } + ] +} +``` + +UIは基本的にプロジェクトツリーの`Param`型と、UIだけで使われる`State`をそれぞれ可変参照として持つ +(Reference カウントするのではなく、有限なライフタイムを持つ可変参照で作る) + +```rust +struct UI<'a>{ + param: &'a mut Param, + state: &'a mut State +} +impl<'a> egui::Widget for UI<'a>{ + fn ui +} +``` + +eguiはimmiditate モードだから毎フレームこのUI型を生成している(egui標準のSliderとかもこの方式) + + ## 開発メモ クリップのサムネイル生成はgeneratorじゃなくてregion側でやろう fileplayerのui実装もgeneratorからregionに移そう -そうなるとaudio側の実装もそっちに合わせるのが自然だよな・・・ \ No newline at end of file +そうなるとaudio側の実装もそっちに合わせるのが自然だよな・・・ +