[obsidian] vault backup: 2023-08-20 10:37:31[

This commit is contained in:
Tomoya Matsuura(MacBookPro) 2023-08-20 10:37:31 +09:00
parent 5fdad91432
commit fcd1a184be

View File

@ -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側の実装もそっちに合わせるのが自然だよな・・・
そうなるとaudio側の実装もそっちに合わせるのが自然だよな・・・