Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ソング: デフォルト編集モードでノート選択中にシーケンサをクリックした時の挙動 #2039

Open
3 tasks
romot-co opened this issue Apr 28, 2024 · 16 comments · May be fixed by #2367 or #2279
Open
3 tasks
Labels
機能向上 要議論 実行する前に議論が必要そうなもの

Comments

@romot-co
Copy link
Contributor

内容

ノート選択をキャンセルしたい場合、他位置をクリックしたときにノートが作成されてしまう
ノート選択時には他位置クリックは選択キャンセルの方がよさそうな可能性を考慮する
(いらないものが追加されてしまい、うっとうしい可能性)

Pros 良くなる点

  • キャンセルをしたいのに誤って必要のないノートを作成してしまうことがなくなる

Cons 悪くなる点

  • 連続的な入力に一手間増える ノート作成(選択) → [選択キャンセル] → ノート作成

実現方法

考慮中

VOICEVOXのバージョン

0.?.0

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux

その他

@romot-co romot-co added 機能向上 要議論 実行する前に議論が必要そうなもの labels Apr 28, 2024
@Hiroshiba
Copy link
Member

今までで僕もエゴサしてて、ここにつまづいてるDAWユーザーの方を2回ほど見かけました。
考慮すべき事項だと僕も感じます。

シーケンサークリック時の挙動を制御する設定を用意して、玄人モードとしてシーケンサーfocusとするのが丸いのかなと思いました!

ドラッグしないと入力できないのはやっぱり初学者の人に難しい気がして、そこそこ優先度が高いかなぁと。
他にはダブルクリックでノート追加もありかもですが・・・個人的には設定を用意して振り分ける形のが良いのかなぁと思いました!

実装の複雑度が若干上がりますが、将来初心者・DAW玄人を最初に選べるようにするのがいいのかな~と考えてて、だったら設定を増やすのがいいのかなぁみたいな流れで考えました!

@romot-co
Copy link
Contributor Author

romot-co commented Aug 15, 2024

@Hiroshiba
こちらコメントできておらず失礼しました!

もしかすると議題が二種類あるかもですが


1. いまの編集操作でノート選択→シーケンサクリックで選択キャンセルできるようにする

→ シーケンサクリック時の挙動をオプションで切り替えるようにする?
→ このIssueで行う

シーケンサークリック時の挙動を制御する設定を用意して、玄人モードとしてシーケンサーfocusとするのが丸いのかなと思いました!

この方針をまずは取る形

※ 派生として選択中のノートの再クリックで選択キャンセルもありそう


2. 編集優先・選択優先モードを切り替えられるようにする

→ モード切り替え(ペン/選択)を追加する
→ 前の調査だと以下のC列の部分3つを入れ替えれば選択優先モードにできそう
https://docs.google.com/spreadsheets/d/1ltGxtvCoUhDiX06F8E1-Tf1TWlC9XM98ESBNOIHUYjw/edit?gid=0#gid=0


で、いったん1を解消できればと思います…!

@Hiroshiba
Copy link
Member

編集優先モード・選択優先モードも面白いなと思いました!
変わる動作としてはクリックのデフォルト挙動とトラックのデフォルト挙動だけでしょうか 👀
(それくらいだったら別にモードを用意するほどではないのかも・・・?)

@romot-co
Copy link
Contributor Author

romot-co commented Oct 2, 2024

案A:

  • クリックで追加 / 追加可能時は追加可能カーソルで現在の状態を表現
  • 選択時は外側クリックで選択解除 / カーソルは(個人的にはこの方が良いような気がしている
  • Ctrl + ノートクリックで複数選択/選択解除

ツール選択はまずは考えない(タッチデバイス考えるなら最小限からはじめるのがよさそう)

操作 PC(マウス) PC カーソル(モード) タッチデバイス
ノートの追加 1. クリックでデフォルト長のノートを追加 2. クリック&ドラッグで長さを指定してノートを追加(ドロー) 鉛筆アイコン? 1タップでデフォルト長のノートを追加 2. タップ&ドラッグで長さを指定してノートを追加
ノートの選択 ノートクリックで選択 標準の矢印カーソル ノートタップで選択
ノートの選択解除 1. 空白部分をクリック 2. Escキーを押す 標準の矢印カーソル 空白部分をタップ
ノート範囲の選択 1. Shift + ドラッグで選択範囲を作成 2. Ctrl+クリック 十字カーソル 二本指でドラッグして選択範囲を作成
ノートの移動 選択したノートをドラッグ 十字矢印 選択したノートをドラッグ
ノートのサイズ変更 ノートのエッジをドラッグ 水平方向の両矢印アイコン ノートのエッジをドラッグ?
ノートの削除 選択後にDeleteキー 2. コンテキストメニューから削除 標準矢印 1. 選択後に削除アイコンをタップ 2. コンテキストメニュー(ロングタップ)から削除

@Hiroshiba
Copy link
Member

issue側で選択時は外側クリックで選択解除に関してのコメントを書いたのでこちらからリンクさせていただきます・・・!

#2279 (comment)

@romot-co
Copy link
Contributor Author

romot-co commented Oct 4, 2024

案B:

案Aとの差異: 追加後に追加ノートを自動選択しない

Pros:

  • クリックについて対称的な操作になるはず
  • 連続的な追加が行いやすい

Cons:

  • 追加したノートを即変更したい場合に手間が増える

  • クリックで追加 / 追加可能時は追加可能カーソルで現在の状態を表現
  • 選択時は外側クリックで選択解除
  • Ctrl + ノートクリックで複数選択/選択解除
操作 PC(マウス) PC カーソル(モード) タッチデバイス
ノートの追加 1. クリックでデフォルト長のノートを追加 2. クリック&ドラッグで長さを指定してノートを追加(ドロー) 鉛筆アイコン? 1タップでデフォルト長のノートを追加 2. タップ&ドラッグで長さを指定してノートを追加
ノートの選択 ノートクリックで選択 標準の矢印カーソル ノートタップで選択
ノートの選択解除 1. 空白部分をクリック 2. Escキーを押す 標準の矢印カーソル 空白部分をタップ
ノート範囲の選択 1. Shift + ドラッグで選択範囲を作成 2. Ctrl+クリック 十字カーソル 二本指でドラッグして選択範囲を作成
ノートの移動 選択したノートをドラッグ 十字矢印 選択したノートをドラッグ
ノートのサイズ変更 ノートのエッジをドラッグ 水平方向の両矢印アイコン ノートのエッジをドラッグ(エッジをわかるように表示)
ノートの削除 選択後にDeleteキー 2. コンテキストメニューから削除 標準矢印 1. 選択後に削除アイコンをタップ 2. コンテキストメニュー(ロングタップ)から削除

実装は仮だが以下
https://github.com/romot-co/voicevox/tree/feature/2039_sequencer_click_mode_plan_b

@romot-co
Copy link
Contributor Author

romot-co commented Oct 4, 2024

ノートを追加後に選択状態にする場合の試行実装:
https://github.com/romot-co/voicevox/tree/feature/2039_sequencer_click_mode_plan_a

ノートを追加後に選択状態にしない場合の試行実装:
https://github.com/romot-co/voicevox/tree/feature/2039_sequencer_click_mode_plan_b

romot-co added a commit to romot-co/voicevox that referenced this issue Oct 12, 2024
@romot-co
Copy link
Contributor Author

romot-co commented Oct 12, 2024

いったん各操作を使えるようにした(実装とカーソルは適当・右クリックはなし)
https://github.com/romot-co/voicevox/tree/feature/2039_sequencer_click_selectable_various_mode_mock

個人的にはBかCが好きなものの
やってみて思うのはこれは好み

スクリーンショット 2024-10-12 16 32 38

ツールなし方向

マルチツール(TOOLLESS_A, TOOLLESS_B, TOOLLESS_C, TOOLLESS_D)

A: #2279 (comment)
B: #2279 (comment)
C: plan_b
D: クリックドラッグで選択・ダブルクリックで追加

操作 TOOLLESS_A TOOLLESS_B TOOLLESS_C TOOLLESS_D
グリッドをクリック ノート追加 ノート追加 ノート追加 すべて選択解除
ノート追加後 該当ノートの選択 該当ノートを選択しない 該当ノートを選択しない 該当ノートを選択する
ノート選択中にCtrl or Command + グリッドをクリック すべて選択解除 すべて選択解除・ノートの追加はしない すべて選択解除 すべて選択解除
グリッドをダブルクリック なし なし なし ノート追加
グリッドをドラッグ ノート追加 ノート追加 ノート追加 矩形選択
グリッドドラッグ後 該当ノートの選択 該当ノートを選択しない 該当ノートを選択しない 矩形選択中のノートの選択
Shift + グリッドをドラッグ 矩形選択 矩形選択 矩形選択 なし
ノートをクリック ノート単体選択 ノート単体選択 ノート単体選択 ノート単体選択
ノート選択中にCtrl or Command + ノートをクリック ノート複数選択 ノート複数選択 ノート複数選択 ノート複数選択
ノートをダブルクリック ノートの歌詞編集 ノートの歌詞編集 ノートの歌詞編集 ノートの歌詞編集
ノートをドラッグ ノート移動 ノート移動 ノート移動 ノート移動
ノートドラッグ後 該当ノートの選択 該当ノートを選択しない 該当ノートを選択する 該当ノートを選択する
ノートの端をドラッグ ノートリサイズ ノートリサイズ ノートリサイズ ノートリサイズ
ノートリサイズ後 該当ノートの選択 該当ノートを選択しない 該当ノートを選択する 該当ノートを選択する
Escキー すべて選択解除 すべて選択解除 すべて選択解除 すべて選択解除
ノートを選択中にDeleteキー 該当ノートの削除 該当ノートの削除 該当ノートの削除 該当ノートの削除

ツールパレットからツールを選択して操作

マルチツール(TOOLSELECT_A)

マルチツール1(選択優先)

クリックドラッグで選択・ダブルクリックで追加

元の状態と操作 マルチツール1(選択優先)
グリッドをクリック すべて選択解除
ノート選択中にグリッドをクリック すべて選択解除
グリッドをダブルクリック ノート追加
ノート追加後 該当ノートを選択する
グリッドをドラッグ 矩形選択
グリッドドラッグ後 選択中のノートの選択
Shift + グリッドをドラッグ 矩形選択
ノートをクリック ノート単体選択
ノート選択中にCtrl or Command + ノートをクリック ノート複数選択
ノートをダブルクリック ノートの歌詞編集
ノートをドラッグ ノート移動
ノートドラッグ後 該当ノートを選択する
ノートの端をドラッグ ノートリサイズ
ノートリサイズ後 該当ノートを選択する
Escキー すべて選択解除
ノートを選択中にDeleteキー 該当ノートの削除

マルチエディットツール2(編集優先)

クリックで追加

元の状態と操作 マルチエディットツール2(編集優先)
グリッドをクリック ノート追加
ノート選択中にグリッドをクリック ノート追加
グリッドをダブルクリック なし
ノート追加後 該当ノートを選択する
グリッドをドラッグ ノート追加
グリッドドラッグ後 選択中のノートを選択する
Shift + グリッドをドラッグ 矩形選択
ノートをクリック ノート単体選択
ノート選択中にCtrl or Command + ノートをクリック ノート複数選択
ノートをダブルクリック ノートの歌詞編集
ノートをドラッグ ノート移動
ノートドラッグ後 該当ノートを選択する
ノートの端をドラッグ ノートリサイズ
ノートリサイズ後 該当ノートを選択する
Escキー すべて選択解除
ノートを選択中にDeleteキー 該当ノートの削除

ツール別モード(TOOLSELECT_B)

選択ツール

選択のみ

元の状態と操作 選択ツール
グリッドをクリック すべて選択解除
ノート選択中にグリッドをクリック すべて選択解除
グリッドをダブルクリック なし
ノート追加後 該当ノートを選択する
グリッドをドラッグ 矩形選択
グリッドドラッグ後 選択中のノートの選択
Shift + グリッドをドラッグ 矩形選択
ノートをクリック ノート単体選択
ノート選択中にCtrl or Command + ノートをクリック ノート複数選択
ノートをダブルクリック ノートの歌詞編集
ノートをドラッグ ノート移動
ノートドラッグ後 該当ノートを選択する
ノートの端をドラッグ ノートリサイズ
ノートリサイズ後 該当ノートを選択する
Escキー すべて選択解除
ノートを選択中にDeleteキー 該当ノートの削除

ペンツール

追加と移動・リサイズ・削除

元の状態と操作 ペンツール
グリッドをクリック ノート追加
ノート選択中にグリッドをクリック ノート追加
グリッドをダブルクリック なし
ノート追加後 該当ノートを選択しない
グリッドをドラッグ ノート追加
グリッドドラッグ後 選択中のノートを選択する
Shift + グリッドをドラッグ なし
ノートをクリック ノート単体選択
ノート選択中にCtrl or Command + ノートをクリック ノート複数選択
ノートをダブルクリック ノートの歌詞編集
ノートをドラッグ ノート移動
ノートドラッグ後 該当ノートを選択する
ノートの端をドラッグ ノートリサイズ
ノートリサイズ後 該当ノートを選択しない
Escキー すべて選択解除
ノートを選択中にDeleteキー 該当ノートの削除

消しゴムツール

削除のみ

元の状態と操作 消しゴムツール
グリッドをクリック なし
ノート選択中にグリッドをクリック すべて選択解除
グリッドをダブルクリック なし
ノート追加後 なし
グリッドをドラッグ なし
グリッドドラッグ後 なし
Shift + グリッドをドラッグ なし
ノートをクリック 該当ノートを削除
ノート選択中にCtrl or Command + ノートをクリック なし
ノートをダブルクリック なし
ノートをドラッグ なし
ノートドラッグ後 なし
ノートの端をドラッグ なし
ノートリサイズ後 なし
Escキー すべて選択解除
ノートを選択中にDeleteキー 該当ノートの削除

@sigprogramming
Copy link
Contributor

sigprogramming commented Oct 13, 2024

@romot-co

実装ありがとうございます!!
とても比較しやすかったです…!

試してみた感想:

  • ツールなし
    • A
      • ツール選択なしの中ではこの形が一番使いやすく感じました
      • 右クリックメニューの選択解除がグレーアウトしてしまうので、グリッドを右クリック時は選択解除しない方が良いかも
        • StudioOneはグリッドを右クリック時に選択解除しないようになっていました
    • B, C
      • 「選択中にグリッドをクリックで選択解除」がなくなっていますね!
        選択の有無で挙動が切り替わらなくなったので、使いやすくなったように感じましたが、「追加等を行った後に選択しない」のメリットがない…かも…?
        (選択されていた方が、インスペクターで値を設定するなどが行いやすくなると思います)
    • D
      • ノート追加がしにくいので、一から打ち込むときに使いにくいかも
      • ダブルクリックでノート追加できることに気づかない人もいるかも(特に初心者)
  • ツールあり
    • A
      • 6つの中ではこれが一番使いやすく感じました(使い慣れた形というのもある)
      • GUIのみで(キーボードを使わずに)操作できて、行えることがアイコンで表示されているので(ツールパレット)、「初めてピアノロールを触る」という人でも分かりやすく使いやすいかなと思います
    • B
      • 選択のみ、編集のみ、削除のみと分ける形は分かりやすいですが、編集効率は下がるので、DAWに慣れている人は少し面倒に感じるかも
      • 削除はノート右クリックで可能なので、消しゴムツールはなくても良いかも…?
        • 「分かりやすさを上げるために消しゴムツールを追加するかどうか」かなと

@romot-co
Copy link
Contributor Author

@sigprogramming
試行ありがとうございます!
急いでみたら間違いもあったので修正いたします…!(あと比較表がくっそわかりづらいので書き直します…

周り回って以下のB列とC列に戻ってきそう…?
https://docs.google.com/spreadsheets/d/1ltGxtvCoUhDiX06F8E1-Tf1TWlC9XM98ESBNOIHUYjw/edit?gid=0#gid=0


A. ツール選択なしの中ではこの形が一番使いやすく感じました
右クリックメニューの選択解除がグレーアウトしてしまうので、グリッドを右クリック時は選択解除しない方が良いかも

→ こちらを採用するのであれば
おっしゃる形にできればと思っています!(右クリックは全般に試行実装の範囲外にしています

B, C
「選択中にグリッドをクリックで選択解除」がなくなっていますね!

こちらごめんなさい、おそらく実装ミスでした…!
「選択中にクリックで選択解除」がいちおうの想定動作なので修正します

選択の有無で挙動が切り替わらなくなったので、使いやすくなったように感じましたが、「追加等を行った後に選択しない」のメリットがない…かも…?
(選択されていた方が、インスペクターで値を設定するなどが行いやすくなると思います)

「追加などの後に選択しない」の

メリット:

  • 即次の動作に移れる
  • マウスでの選択解除と両立できる

デメリット:

  • 追加などの後に即変更しづらい(削除やインスペクタでの詳細設定など、Bにおいては複数コピペ要素の移動)

かなあと
メリットデメリットがありなにを取るかかなのですが
インスペクタについては入力後即詳細設定はあまりしなさそう(歌詞も入力されていない)…という想定ではいます

D
ノート追加がしにくいので、一から打ち込むときに使いにくいかも

SynthV/StudioOne/AbletonLiveなどでデフォルトツールの動作なのですが
こちらはペンツール…編集優先ツールとの併用が必要なのかもです…!

ツールあり
A
6つの中ではこれが一番使いやすく感じました(使い慣れた形というのもある)
GUIのみで(キーボードを使わずに)操作できて、行えることがアイコンで表示されているので(ツールパレット)、「初めてピアノロールを触る」という人でも分かりやすく使いやすいかなと思います

なんだかんだこれが一番いいのかもですね
両方とも複数機能を持つマルチモードなツール(選択優先か・編集優先か)ですが
違和感ないならこれが第一選択かも

いずれツールパレットは必要になるようではあるため / タッチデバイスなら今のところツール選択なしの編集優先でカバーできそうなため

B
選択のみ、編集のみ、削除のみと分ける形は分かりやすいですが、編集効率は下がるので、DAWに慣れている人は少し面倒に感じるかも

VoiSonaなどはこちらのような単一モード切り替え式な方向なものの
個人的には切り替え面倒なので無しかなと思っております

@Hiroshiba
Copy link
Member

Hiroshiba commented Oct 16, 2024

色々試させていただきました!! どれもこれも一長一短なんだなぁと感じました!!

選択ツールは慣れると使いやすいなと感じました。こっちに1回なれると編集モードのみは操作しづらく感じました。
キーボード使う前提だと編集モードだけで問題なさそうでした。Escを使いこなせないとですが・・・。

以下細かい感想!
タスクとして、マウスのみでカエルの歌1番全入力を試しました。手順こんな感じです。

  1. 1/8区切りにする
  2. 1/4音符ドレミファミレドを入力
  3. ↑を範囲選択&コピー&ペーストし、ノートを移動してミファソラソファミにする
  4. ドドドド入力
  5. 2をコピペし、ドレミファだけ範囲選択、1/8音符に短くし、1/8ドレミファをコピーしてペーストし、ドドレレミミファファミレドにする

(操作を誤入力する手順も加えた方が良さそう。間違えてノートを置いた・間違えてノートをクリックした・移動でノートの配置をミスった・選択範囲を間違えたなど)

  • ツールなし系全般
    • 範囲選択は右クリックメニューに必須そう。(範囲選択ができないので↑のタスクが不可能、shift+ドラッグで代替)
    • 範囲選択のたびに右クリック押すのは結構しんどい。左手をキーボードに手を置く前提っぽみ。
  • ツールあり系全般
    • デフォルトで選ばれてるツールは編集ツールのが良い気がする
      • 「ノートを追加する」という基本にたどり着くのに時間がかかっちゃうため
    • となると「選択ツールを選ぶ」という工程が発生し、他のソフトウェアにはなかなかないモードなので(デフォルトがそうなってるものは多いけど。)、これが便利だと気づくのに時間がかかる
    • 慣れてきた人向け。マウス操作のみ前提だとこっちの方が良い。
  • ツールなしA
    • 選択解除という行動を意識しないといけないのが大変
    • コピペ後一部のノートを変える時、「あーえっと右クリックして解除っと」ってなる
      • (経験上、Escに慣れると無意識にEscを押す)
    • それ以外は分かりやすい
  • ツールなしB
    • ノートの移動を間違えると選択し直しになる
    • 複数のノートを連続的に編集しようとすると選び直しが必要になる
    • 「まとめて同じ操作をする」のを多用する人には使いにくめかも
    • でも結構直感的だった
  • ツールなしC
    • 間違えてノートを選択したとき、「なぜかノートが追加されない」クリックが発生する(選択解除してる)
    • 編集後も↑の状態になる(選択中でもグリッドドラッグでノート追加のはずなのでバグかも)、クリックしてノート追加する人には不便そう、ドラッグでノート追加する人にはあまり問題なさそう
    • Bよりは良さそう
  • ツールなしD
    • ノートの長さを指定してノート追加ができない(範囲選択になる)
      • ダブルクリックした後の2回目のクリックをドラッグしたら長さ指定できるようにするとより良くなりそう
    • ↑以外は全部やりやすかった、総合評価は意外と低くない
  • ツールありA
    • 不満なし。快適。しいて言えば画面が広い場合はマウスの移動距離が長くなりそう。
    • 「実際に使ってみれば便利」系。ユーザーが自動的にたどり着かない。
      • 今日強制的に使ってやっと便利さがわかりましたw
  • ツールありB
    • 操作感がツールありAと変わらなかった
      • 選択後にノート編集(リサイズ)ができたので
    • 削除ツールはドラッグ中通過したノート全部消せると便利そう

個人的な結論

  • 選択モードはあった方が良い!
    • 選択モードは使ってみないとわからない系だと感じた
    • ただデフォルトは編集モードの方が良いはず
    • 重要度はmust/should/want/canのうち、shouldとwantの間くらいの気持ち。
  • 編集モードの動作は、デフォルトはツールなしAの動作が良さそう
    • 次点がツールなしC
    • ツールなしAのデメリットは選択解除で、ユーザーの感情は「どうすればいいかわからない」
    • ツールなしCのデメリットは選択後のノート追加で、ユーザーの感情は「どうしてこうなるかわからない」
    • Cのが玄人向けかなと思ったので、Aデフォルトが良さそう
      • (Aに慣れてるから、という私情が入ってるかも。。。。。わからない。。。。)
    • 既存 DTM ソフトに慣れてる人向けにCを用意するのはあり。重要度はwantとcanの間くらいの気持ち。
  • 選択モードの動作は、ツールなしDの動作が良いかも
    • ダブルクリックでノート追加があるかないかという理解
    • まあ存在に気づくのは歌詞入力(ノートをダブルクリック)にミスった時ぐらいな気がしますが・・・!
  • 十分に慣れたとき、左手をキーボードに置かない人は選択ツールに、キーボードに手を置く人はショートカットキーに帰着しそう!

比較するの結構楽しかったです!!! 実装ありがとうございます!!!

@romot-co
Copy link
Contributor Author

romot-co commented Oct 17, 2024

@Hiroshiba @sigprogramming
こちら詳細に試していただきありがとうございます…!(お手間おかけしました・うかがえてよかったです

以下の仕様で実装できればと思いますが、問題あればおしらせください!

共通

  • ツールセレクタの追加
  • 右クリックでもコンテキストに応じたツール選択可能にする

ノート編集

  • 選択ツールの追加
  • 編集ツールをデフォルトとする
  • 編集ツールにツールなしAの動作追加(Ctrl+クリックでキャンセル / 右クリックメニューにも選択解除追加)
  • ショートカットキーは多くのDAWにあわせて1,2

ピッチ編集

  • 編集ツールをデフォルトとする
  • 消しゴムツールを追加(動作は現状同様)
  • ショートカットキーは1,2

@Hiroshiba
Copy link
Member

Hiroshiba commented Oct 19, 2024

@romot-co だいたい同感です!!
ピッチ編集の消しゴムツール、マウスだけだと消せないから確かにあった方がよさそう!

ちょっとショートカットキーはもしかしたら相談させていただくかもです!!
というのもソングソフトは、ツールの切り替えよりも編集ターゲット?の切り替え(ノートとかピッチとか)のほうが重要かもと思ったので・・・!
どっちを単体数字キー操作にしてどっちを修飾キーありにすべきか、もしかしたら考えた方がいいのかも。

まあでもとりあえず実装しちゃうのありだと思います!!
リリースするまでは変えられるので・・・!

(参考までに、Voisona/CeVIOは数字キーでノート・ピッチ・タイミングなど変更、ctrl+数字でツール変更。SynthVはalt+数字でツール変更、編集モード切り替えはショートカットキーが無い・・・?
ど、どっちがいいんだろう。。。)

@romot-co
Copy link
Contributor Author

romot-co commented Nov 4, 2024

進捗:

test-tool.mp4

追加

  • ノート編集で編集優先と選択優先でツール選べるようにする
  • ピッチ側も消しゴム追加

残作業

  • ツールパレットの位置などは仮
    → 少なくともノート/ピッチモード切り替えとあわせて考えたほうが良さそう / もしかしたらツールバー自体もそろそろ機能増えてきたので構成変更
  • ノート側のショートカットキー
  • リファクタリング
  • カーソルとか
  • テスト

@romot-co
Copy link
Contributor Author

進捗:

いったん修正


設計について考える

  • editTargetと各ツール選択selectedTool(仮)はおそらく疎にはできない
    → editTargetと統合前提
    useEditStateなどとする

  • 各ツール選択時の挙動を振る舞いとして定義している

動作表をそのまま定義している

EDIT_FIRST: {
   ...
   // ダブルクリックで追加する
   shouldAddOnDoubleClick: true,
}

→ イベントごとの動作を記述した方がまだわかりやすそう


  • ノート編集の振る舞いであり、ピッチ編集の振る舞いは定義していない
    → まずはノートのみで定義(コメントに残す)

  • カーソル状態やプレビュー状態との兼ね合い
    → 影響しあうが今回スコープ外とする

@romot-co
Copy link
Contributor Author

romot-co commented Nov 16, 2024

進捗:

WIPに対して

useEditなんとかについて

WIPだとcomposableの意味があまりない
(とりあえずコピペなため...)

おそらくは行われるアクションの判定をカプセル化したほうが少なくともScoreSequencerの複雑さは減らせる?
イメージとしては以下のような形

// 関連storeや関連するコンテキスト(キーの状態やプレビュー状態など)を渡す
const { ... } from useEditMode(store, {
   ctrlKey, ShiftKey, nowPreviewing...
})

// マウス押す
const onMouseDown = (event: MouseEvent) => {
  // アクションを判定し取得する
  const action = getActionFromEditMode(event, isSelfEventTarget(event));
  
  switch (action) {
    // 矩形選択開始
    case "START_RECT_SELECT":
      isRectSelecting.value = true;
      rectSelectStartX.value = result.cursorX;
      rectSelectStartY.value = result.cursorY;
      break;
     
    // ノート追加
    case "ADD_NOTE":
      ...
      break;
      
    // ノート全選択解除
    case "DESELECT_ALL":
      ...
      break;     
    default:
      break;
  }
};

useEditState内に振る舞いを直接記述のほうがまだマシ…?

依存注入について

  • まずはstoreと関連コンテキストをすべて渡す

カーソル状態について

  • 編集モード切り替えに依存しているので統合してしまった方がいいかもしれない

プレビュー状態について

  • コンテキストとして渡す

ツールパレットについて

  • コンポーネントとして分離

romot-co added a commit to romot-co/voicevox that referenced this issue Nov 16, 2024
romot-co added a commit to romot-co/voicevox that referenced this issue Nov 17, 2024
romot-co added a commit to romot-co/voicevox that referenced this issue Nov 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
機能向上 要議論 実行する前に議論が必要そうなもの
Projects
None yet
3 participants