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

ソング:マルチトラック機能を追加 #1971

Closed
wants to merge 121 commits into from

Conversation

sevenc-nanashi
Copy link
Member

@sevenc-nanashi sevenc-nanashi commented Apr 1, 2024

内容

マルチトラック機能を追加します。

  • トラック一覧
    • 表示
    • 選択
    • ミュート/ソロ
    • 音量
    • パン
    • 削除
  • シーケンサー
    • 他トラックの表示
  • 再生
    • 合成
    • ミュート/ソロ
    • 音量
    • パン
  • マイグレーション
  • 出力
    • 音声
      • 合成
      • ミュート/ソロ
      • 音量
      • パン
    • トラック毎に出力
  • インポート:後で実装?
    • UST
    • MIDI
    • MusicXML

関連 Issue

スクリーンショット・動画など

image

その他

(なし)

@@ -419,6 +419,68 @@
>
</QBtn>
</QCardActions>

<QCardActions class="q-px-md bg-surface">
<div>ソング:「元に戻す」機能の対象にするトラック操作</div>
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DTM鯖の方々に聞いてみたところ、

無しでいい、Undoで戻ってほしい所につくまで時間がかかって面倒

どこでもミスが多いので全部Undoさせろ

数値いじりにundoがついてて欲しいのでソロミュートは不要、パン・音量は必要

と分かれたので切り替えできるようにしました。

@sevenc-nanashi sevenc-nanashi marked this pull request as ready for review April 2, 2024 09:32
@sevenc-nanashi sevenc-nanashi requested a review from a team as a code owner April 2, 2024 09:32
@sevenc-nanashi sevenc-nanashi requested review from y-chan and removed request for a team April 2, 2024 09:32
@sevenc-nanashi
Copy link
Member Author

一通りは完成しました。

@sevenc-nanashi
Copy link
Member Author

sevenc-nanashi commented Apr 2, 2024

メモ:

ピアノロールはSynthVのUIを参考にしています。
image

トラックの音量操作の隙間は子要素感を出すために付けています。Cakewalkを参考にしています:
image

これはもっといい演出方法がありそう。

@sevenc-nanashi sevenc-nanashi changed the title Add: マルチトラック機能を追加 ソング:マルチトラック機能を追加 Apr 2, 2024
@sigprogramming
Copy link
Contributor

SET_SCOREなくすのをやってみます!

Comment on lines 963 to 973
SET_VOLUME: {
mutation(state, { volume }) {
state.volume = volume;
if (!globalChannelStrip) {
throw new Error("globalChannelStrip is undefined.");
}
globalChannelStrip.volume = volume;
},
async action({ commit }, { volume }) {
if (!channelStrip) {
throw new Error("channelStrip is undefined.");
}
commit("SET_VOLUME", { volume });

channelStrip.volume = volume;
},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

おっ mutationでstateじゃないのを変更するのは今のとこやってなかった気がします。
念の為避けておくのはどうでしょうか。(後出しで申し訳ない 🙇 )

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sevenc-nanashi こちらどうでしょう・・・? 🙇

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

あっ見逃してました
家帰ったら変えておきます

Comment on lines +166 to +168
// Undoしたときに不明なトラックを参照してしまうので、DefaultMapを使う。
// TODO: 通常のMapに変更する
const channelStrips = new DefaultMap<TrackId, ChannelStrip>(() => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

「一元管理されてる状態変数のみが状態を持っているべき」的な法則からすると、trackをwatchして変更時にこっちも変更する形が良さそうに感じました。
SingEditor.vue内でcomposable作るとかすればできそうですが、いろいろ大変だと思うので、とりあえずちょっとTODOを補強するのはどうでしょう。

Suggested change
// Undoしたときに不明なトラックを参照してしまうので、DefaultMapを使う。
// TODO: 通常のMapに変更する
const channelStrips = new DefaultMap<TrackId, ChannelStrip>(() => {
// Undoしたときに不明なトラックを参照してしまうので、DefaultMapを使う。
// TODO: 通常のMapにし、state.tracksをwatchして逐次変更する
const channelStrips = new DefaultMap<TrackId, ChannelStrip>(() => {

@Hiroshiba
Copy link
Member

@sevenc-nanashi 提案です!

UIが重くなっていてレビューやりとりに支障が出始めているなと感じました!
お手数ですが、PRを作り直していただくとかどうでしょうか・・・?
あとそのタイミングでUI系の変更(.vueの見た目変更とstore/singing.tsのSIDE_BAR関連)は別のPRにするのをお願いできるといろいろ進みやすいのかなと思いました!

レビューコメントが不連続になってしまったりしますが、GithubのUIがとても重いのはどうしようもないのと、1回実験的にPRを作り直すことでやり取りなどにどう影響が出るか試してみたく。
お手数おかけしちゃってすみません 🙇
@sigprogramming さんもすみません 🙇 )

@sevenc-nanashi
Copy link
Member Author

ですねぇ…分解したほうが良さそう。Closeします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[ソング] マルチトラック機能の実装
3 participants