All checks were successful
Build / build (push) Successful in 10m1s
70 lines
2.4 KiB
Markdown
70 lines
2.4 KiB
Markdown
---
|
||
date: 2025-09-05 11:37
|
||
---
|
||
#memo
|
||
|
||
[[DAW]]について
|
||
|
||
[[otopoiesis]]に行き詰まったので
|
||
|
||
## プロジェクトデータ
|
||
|
||
- 複数のトラックを含む
|
||
- グローバルなパラメーター(テンポとか)
|
||
|
||
## トラック
|
||
|
||
[[Temporal Type Constructor]]で表現されうる時間軸に沿って変化するデータ
|
||
|
||
データを持つトラック
|
||
|
||
- 入出力を持つ
|
||
- MIDI
|
||
- OSC
|
||
- オーディオ
|
||
- 入出力の型が一致すれば、他のトラックが別のトラックの入力になることもある
|
||
- 大きく分けて以下のタイプ
|
||
- プロトタイプ:時間に紐付けされたイベントの集合`[Event<a>]`
|
||
- ストリーム: 一定間隔で表現されるデータ列
|
||
- この際Control/Audioの2タイプでもいい
|
||
|
||
`時間に紐付けされたイベントの集合Event<a>`に関しては、トラックの出力に接続する際にストリームに変換される必要がある
|
||
|
||
- オーディオクリップも広い意味では`[Event<AudioClip>]`的なデータ
|
||
- だが、レコーディング、再生の際のストリームデータへの変換は暗黙的に行われている
|
||
|
||
```
|
||
struct Clip<a>{
|
||
dur:Number
|
||
data:a
|
||
}
|
||
type MonoAudioClip = Event<Clip<Vec<Number>>>
|
||
|
||
type AudioTrackProto = [MonoAudioClip]
|
||
|
||
```
|
||
|
||
MIDIトラックの場合はもっと複雑。タイムスタンプが一つ一つに付属したデータの集合になるけど、記録時にはそれをさらにタイムスタンプ付きClipとしてグループ化、クリップスタートの相対時間として記録している
|
||
|
||
入出力のデータ型がジェネリックになるとすると、その読み書きはなんかジェネリックなシリアライズ・デシリアライズができる必要あり
|
||
|
||
ライブレコーディング(モニタリング)モードだと、OSCやスライダーで動かした値がリアルタイムにオーディオに反映される
|
||
|
||
そのうえで、レコーディングすればその値の履歴が書き込める
|
||
|
||
|
||
## エフェクター的なもの
|
||
|
||
- あるトラックの出力を受け取って、値->値変換をするだけ
|
||
- ただしパラメーターはグループ化されていて欲しい
|
||
|
||
|
||
|
||
## どうやってジェネラティブ性を組み込むか
|
||
|
||
- 録音の代わりに、クリップデータの生成
|
||
- クリップ→クリップのノンリニアな変換
|
||
-
|
||
|
||
|