[obsidian] vault backup: 2023-08-20 10:37:31[
This commit is contained in:
parent
5fdad91432
commit
fcd1a184be
@ -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側でやろう
|
クリップのサムネイル生成はgeneratorじゃなくてregion側でやろう
|
||||||
|
|
||||||
fileplayerのui実装もgeneratorからregionに移そう
|
fileplayerのui実装もgeneratorからregionに移そう
|
||||||
|
|
||||||
そうなるとaudio側の実装もそっちに合わせるのが自然だよな・・・
|
そうなるとaudio側の実装もそっちに合わせるのが自然だよな・・・
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user