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

楽譜情報とsingerの持ち方を変更する #1820

Merged
merged 2 commits into from
Feb 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 6 additions & 10 deletions src/components/Sing/CharacterMenuButton.vue
Original file line number Diff line number Diff line change
Expand Up @@ -198,15 +198,11 @@ const getDefaultStyle = (speakerUuid: string) => {
};

const selectedCharacterInfo = computed(() => {
if (
userOrderedCharacterInfos.value == undefined ||
store.state.singer == undefined
)
const singer = store.state.tracks[0].singer;
if (userOrderedCharacterInfos.value == undefined || !singer) {
return undefined;
return store.getters.CHARACTER_INFO(
store.state.singer.engineId,
store.state.singer.styleId
);
}
return store.getters.CHARACTER_INFO(singer.engineId, singer.styleId);
});

const selectedSpeakerUuid = computed(() => {
Expand All @@ -217,8 +213,8 @@ const selectedStyleId = computed(
() =>
selectedCharacterInfo.value?.metas.styles.find(
(style) =>
style.styleId === store.state.singer?.styleId &&
style.engineId === store.state.singer?.engineId
style.styleId === store.state.tracks[0].singer?.styleId &&
style.engineId === store.state.tracks[0].singer?.engineId
)?.styleId
);

Expand Down
2 changes: 1 addition & 1 deletion src/components/Sing/CharacterPortrait.vue
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const isShowSinger = computed(() => store.state.isShowSinger);
const portraitPath = computed(() => {
const userOrderedCharacterInfos =
store.getters.USER_ORDERED_CHARACTER_INFOS("singerLike");
const singer = store.state.singer;
const singer = store.state.tracks[0].singer;
if (!userOrderedCharacterInfos || !singer) {
return undefined;
}
Expand Down
10 changes: 5 additions & 5 deletions src/components/Sing/ScoreSequencer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -228,13 +228,13 @@ const isSelfEventTarget = (event: UIEvent) => {
const store = useStore();
const state = store.state;
// 分解能(Ticks Per Quarter Note)
const tpqn = computed(() => state.score.tpqn);
const tpqn = computed(() => state.tpqn);
// テンポ
const tempos = computed(() => state.score.tempos);
const tempos = computed(() => state.tempos);
// 拍子
const timeSignatures = computed(() => state.score.timeSignatures);
const timeSignatures = computed(() => state.timeSignatures);
// ノート
const notes = computed(() => state.score.notes);
const notes = computed(() => state.tracks[0].notes);
const unselectedNotes = computed(() => {
const selectedNoteIds = state.selectedNoteIds;
return notes.value.filter((value) => !selectedNoteIds.has(value.id));
Expand Down Expand Up @@ -330,7 +330,7 @@ let dragStartNoteNumber = 0;
let dragStartGuideLineTicks = 0;
let draggingNoteId = ""; // FIXME: 無効状態はstring以外の型にする
let executePreviewProcess = false;
let edited = false; // プレビュー終了時にScoreの変更を行うかどうかを表す変数
let edited = false; // プレビュー終了時にstore.stateの更新を行うかどうかを表す変数
// ダブルクリック
let mouseDownNoteId: string | undefined;
const clickedNoteIds: [string | undefined, string | undefined] = [
Expand Down
4 changes: 2 additions & 2 deletions src/components/Sing/SequencerNote.vue
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ const emit =

const store = useStore();
const state = store.state;
const tpqn = computed(() => state.score.tpqn);
const tpqn = computed(() => state.tpqn);
const zoomX = computed(() => state.sequencerZoomX);
const zoomY = computed(() => state.sequencerZoomY);
const positionX = computed(() => {
Expand Down Expand Up @@ -150,7 +150,7 @@ const onLyricInputKeyDown = (event: KeyboardEvent) => {
if (event.key === "Tab") {
event.preventDefault();
const noteId = props.note.id;
const notes = state.score.notes;
const notes = state.tracks[0].notes;
const index = notes.findIndex((value) => value.id === noteId);
if (index === -1) {
return;
Expand Down
4 changes: 2 additions & 2 deletions src/components/Sing/SequencerRuler.vue
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,8 @@ const store = useStore();
const state = store.state;
const height = ref(32);
const playheadTicks = ref(0);
const tpqn = computed(() => state.score.tpqn);
const timeSignatures = computed(() => state.score.timeSignatures);
const tpqn = computed(() => state.tpqn);
const timeSignatures = computed(() => state.timeSignatures);
const zoomX = computed(() => state.sequencerZoomX);
const measureWidth = computed(() => {
const measureDuration = getMeasureDuration(
Expand Down
22 changes: 10 additions & 12 deletions src/components/Sing/ToolBar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -125,32 +125,30 @@ const userOrderedCharacterInfos = computed(() =>
store.getters.USER_ORDERED_CHARACTER_INFOS("singerLike")
);
const selectedCharacterInfo = computed(() => {
if (!userOrderedCharacterInfos.value || !store.state.singer) {
const singer = store.state.tracks[0].singer;
if (!userOrderedCharacterInfos.value || !singer) {
return undefined;
}
return store.getters.CHARACTER_INFO(
store.state.singer.engineId,
store.state.singer.styleId
);
return store.getters.CHARACTER_INFO(singer.engineId, singer.styleId);
});
const selectedCharacterName = computed(() => {
return selectedCharacterInfo.value?.metas.speakerName;
});
const selectedCharacterStyleDescription = computed(() => {
const style = selectedCharacterInfo.value?.metas.styles.find((style) => {
const singer = store.state.tracks[0].singer;
return (
style.styleId === store.state.singer?.styleId &&
style.engineId === store.state.singer?.engineId
style.styleId === singer?.styleId && style.engineId === singer?.engineId
);
});
return style != undefined ? getStyleDescription(style) : "";
});
const selectedStyleIconPath = computed(() => {
const styles = selectedCharacterInfo.value?.metas.styles;
const singer = store.state.tracks[0].singer;
return styles?.find((style) => {
return (
style.styleId === store.state.singer?.styleId &&
style.engineId === store.state.singer?.engineId
style.styleId === singer?.styleId && style.engineId === singer?.engineId
);
})?.iconPath;
});
Expand Down Expand Up @@ -197,8 +195,8 @@ const playheadPositionStr = computed(() => {
return `${minStr}:${secStr}.${milliSecStr}`;
});

const tempos = computed(() => store.state.score.tempos);
const timeSignatures = computed(() => store.state.score.timeSignatures);
const tempos = computed(() => store.state.tempos);
const timeSignatures = computed(() => store.state.timeSignatures);
const nowPlaying = computed(() => store.state.nowPlaying);

watch(
Expand Down Expand Up @@ -263,7 +261,7 @@ const volume = computed({
});

const snapTypeSelectOptions = computed(() => {
const tpqn = store.state.score.tpqn;
const tpqn = store.state.tpqn;
return getSnapTypes(tpqn)
.sort((a, b) => {
if (isTriplet(a) === isTriplet(b)) {
Expand Down
27 changes: 5 additions & 22 deletions src/sing/storeHelper.ts
Original file line number Diff line number Diff line change
@@ -1,33 +1,16 @@
import { Note, Score, Singer } from "@/store/type";
import { Note, Singer, Tempo } from "@/store/type";
import { generateHash } from "@/sing/utility";

export const DEFAULT_TPQN = 480;
export const DEFAULT_BPM = 120;
export const DEFAULT_BEATS = 4;
export const DEFAULT_BEAT_TYPE = 4;

export const copyScore = (score: Score): Score => {
return {
tpqn: score.tpqn,
tempos: score.tempos.map((value) => ({ ...value })),
timeSignatures: score.timeSignatures.map((value) => ({ ...value })),
notes: score.notes.map((value) => ({ ...value })),
};
};

export const copySinger = (singer?: Singer): Singer | undefined => {
if (!singer) {
return undefined;
}
return {
engineId: singer.engineId,
styleId: singer.styleId,
};
};

export const generateSingerAndScoreHash = async (obj: {
export const generatePhraseHash = async (obj: {
singer: Singer | undefined;
score: Score;
tpqn: number;
tempos: Tempo[];
notes: Note[];
}) => {
return generateHash(obj);
};
Expand Down
Loading
Loading