|
@@ -175,6 +175,8 @@ const state = reactive({
|
|
|
speed: 0,
|
|
|
/** 曲谱音频正常的速度 */
|
|
|
originSpeed: 0,
|
|
|
+ /** 播放过程中显示的速度 */
|
|
|
+ playIngSpeed: 0,
|
|
|
/** 分轨名称 */
|
|
|
track: "",
|
|
|
/** 当前显示声部索引 */
|
|
@@ -275,9 +277,11 @@ const state = reactive({
|
|
|
/** 重播小节集合信息 */
|
|
|
repeatInfo: [],
|
|
|
/** 多分轨的曲子,可支持筛选的分轨 */
|
|
|
- canSelectTracks: "",
|
|
|
+ canSelectTracks: [] as any,
|
|
|
/** 声部codeId,用于匹配乐器指法、声部转调、特殊声部处理等 */
|
|
|
subjectCodeId: 0 as number,
|
|
|
+ /** 合奏曲目是否合并展示 */
|
|
|
+ isCombineRender: false,
|
|
|
});
|
|
|
const browserInfo = browser();
|
|
|
let offset_duration = 0;
|
|
@@ -352,6 +356,11 @@ const handlePlaying = () => {
|
|
|
state.playProgress = (currentTime / duration) * 100;
|
|
|
let item = getNote(currentTime);
|
|
|
// console.log(11111,currentTime,duration,state.playSource, item.i)
|
|
|
+ // console.log(item.i,item.noteId,item.measureSpeed)
|
|
|
+ // 练习模式下,实时刷新小节速度
|
|
|
+ if (state.modeType === "practise" && state.playState === "play" && item.measureSpeed && item.measureSpeed !== state.playIngSpeed) {
|
|
|
+ state.playIngSpeed = item.measureSpeed
|
|
|
+ }
|
|
|
if (item) {
|
|
|
// 选段状态下
|
|
|
if (state.sectionStatus && state.section.length === 2) {
|
|
@@ -756,7 +765,6 @@ const getMusicInfo = (res: any) => {
|
|
|
};
|
|
|
console.log("🚀 ~ musicInfo:", musicInfo);
|
|
|
setState(musicInfo, index);
|
|
|
- setCustom();
|
|
|
};
|
|
|
|
|
|
const setState = (data: any, index: number) => {
|
|
@@ -775,6 +783,8 @@ const setState = (data: any, index: number) => {
|
|
|
state.examSongId = data.id + "";
|
|
|
state.examSongName = data.name;
|
|
|
state.coverImg = data.musicCover ?? "";
|
|
|
+ state.isCombineRender = data.musicSheetType === "SINGLE" && data.musicSheetSoundList?.length > 1
|
|
|
+ setCustom(state.isCombineRender ? data.musicSheetSoundList?.length : 0);
|
|
|
// 解析扩展字段
|
|
|
if (data.extConfigJson) {
|
|
|
try {
|
|
@@ -796,9 +806,9 @@ const setState = (data: any, index: number) => {
|
|
|
state.originSpeed = state.speed = data.playSpeed;
|
|
|
const track = data.code || data.track;
|
|
|
state.track = track ? track.replace(/ /g, "").toLocaleLowerCase() : "";
|
|
|
- state.enableNotation = data.isConvertibleScore ? true : false;
|
|
|
+ state.enableNotation = data.isConvertibleScore === null ? true : data.isConvertibleScore;
|
|
|
state.isConcert = data.musicSheetType === "CONCERT" ? true : false;
|
|
|
- state.canSelectTracks = data.multiTracksSelection;
|
|
|
+ state.canSelectTracks = data.multiTracksSelection?.split(',');
|
|
|
// 开启预备小节
|
|
|
state.isOpenPrepare = true;
|
|
|
state.extStyleConfigJson = data.extStyleConfigJson || {}
|
|
@@ -840,8 +850,8 @@ const setState = (data: any, index: number) => {
|
|
|
console.log("state对象", state);
|
|
|
};
|
|
|
|
|
|
-const setCustom = () => {
|
|
|
- if (state.extConfigJson.multitrack) {
|
|
|
- setGlobalData("multitrack", state.extConfigJson.multitrack);
|
|
|
+const setCustom = (trackNum?: number) => {
|
|
|
+ if (trackNum || state.extConfigJson.multitrack) {
|
|
|
+ setGlobalData("multitrack", trackNum || state.extConfigJson.multitrack);
|
|
|
}
|
|
|
};
|