Skip to content

[FR-14] BPMをDAW Transportと同期する #109

@cos-overclock

Description

@cos-overclock

目的

DAWのTransportテンポをUIのBPMへ同期し、生成パラメータ GenerationParams.bpm がホスト再生テンポと一致する状態で生成できるようにする。

背景

現状のBPMはUIの手入力のみで、DAW側テンポ変更に追従しない。
そのため、ホストテンポで再生中のプロジェクトに対して生成結果の想定テンポがズレる可能性がある。

設計上は FR-14(Transport同期)が存在するが、BPM値のUI同期/生成パラメータ同期は未実装。

スコープ

  • DAW Tempo -> Plugin -> UI へのBPM伝搬
  • UI上でのBPM同期ON/OFF
  • 同期時に GenerationParams.bpm がDAWテンポを使うこと

仕様案

  • BPM Sync トグルを追加(既定: ON)
  • BPM Sync = ON のとき:
    • BPM入力欄は読み取り専用(または編集不可スタイル)
    • DAWテンポ受信時にBPM表示と submission_model.bpm を更新
  • BPM Sync = OFF のとき:
    • 現行どおり手入力で編集可能

タスク

  • CLAP transportからtempoを取得し、UI側へ渡す経路を追加
    • 既存 LiveInputEvent / IPC payload に tempo フィールドを追加
    • 受信側 (ui::window) で tempo を保持
  • BPM同期ON/OFFのUI状態を追加
    • params-toolbarBPM Sync トグルを追加
    • ON時はBPM入力を編集不可にする
  • PromptSubmissionModel への反映
    • 同期ON時に set_bpm(host_tempo) を適用
    • 同期OFF時は手入力値を維持
  • テスト追加
    • tempo伝搬(plugin -> ipc -> ui)
    • 同期ON/OFFで GenerationRequest.params.bpm が期待どおりになる

対象ファイル(想定)

  • src/plugin/clap_adapter/mod.rs
  • src/app/live_input_ipc.rs
  • src/app/live_midi_capture.rs
  • src/ui/window.rs
  • src/ui/request.rs
  • src/ui/mod.rs(テスト)

受け入れ基準

  • DAWテンポ変更時、BPM Sync=ON ならUI BPM表示が追従する
  • Generate 実行時、GenerationParams.bpm が同期状態に応じて正しく設定される
  • BPM Sync=OFF では従来の手入力編集が可能
  • cargo test が通過

参照

  • docs/software-architecture.md(FR-14: plugin::transport_sync
  • docs/software-detailed-design.md(Params: bpm_input

Metadata

Metadata

Assignees

No one assigned

    Labels

    architectureCore architecture and abstractionsenhancementNew feature or requestfr-01FR-01: CLAP host integrationuiUser interface and UX

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions