VOICEVOX / voicevox

無料で使える中品質なテキスト読み上げソフトウェア、VOICEVOXのエディター
https://voicevox.hiroshiba.jp/
Other
2.49k stars 306 forks source link

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

Open romot-co opened 5 months ago

romot-co commented 5 months ago

内容

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

Pros 良くなる点

Cons 悪くなる点

実現方法

考慮中

VOICEVOXのバージョン

0.?.0

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

その他

Hiroshiba commented 5 months ago

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

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

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

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

romot-co commented 2 months ago

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

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


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

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

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

この方針をまずは取る形

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


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

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


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

Hiroshiba commented 2 months ago

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

romot-co commented 2 weeks ago

案A:

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

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

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

https://github.com/VOICEVOX/voicevox/pull/2279#issuecomment-2391882089

romot-co commented 2 weeks ago

案B:

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

Pros:

Cons:


操作 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 commented 2 weeks ago

ノートを追加後に選択状態にする場合の試行実装: 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 commented 1 week ago

いったん各操作を使えるようにした(実装とカーソルは適当・右クリックはなし) 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: https://github.com/VOICEVOX/voicevox/pull/2279#issuecomment-2404572615 B: https://github.com/VOICEVOX/voicevox/pull/2279#issuecomment-2399991802 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 commented 6 days ago

@romot-co

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

試してみた感想:

romot-co commented 4 days ago

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

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


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

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

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

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

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

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

メリット:

デメリット:

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

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

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

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

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

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

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

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

Hiroshiba commented 3 days ago

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

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

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

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

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

個人的な結論

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

romot-co commented 2 days ago

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

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

共通

ノート編集

ピッチ編集

Hiroshiba commented 15 hours ago

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

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

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

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