Skip to content

Commit

Permalink
楽譜情報とsingerの持ち方を変更する (#1820)
Browse files Browse the repository at this point in the history
* Score型をstateで使用しない形に変更、Track型を追加、コメントを追加

* singerをTrack型が持つように変更
  • Loading branch information
sigprogramming authored Feb 3, 2024
1 parent 24a1b1b commit 16cd5ac
Show file tree
Hide file tree
Showing 10 changed files with 177 additions and 188 deletions.
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

0 comments on commit 16cd5ac

Please sign in to comment.