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