Browse Source

feat: 和弦评测修改

TIANYONG 3 months ago
parent
commit
9a79e25fc0

+ 1 - 1
osmd-extended

@@ -1 +1 @@
-Subproject commit 46bdba03a3654e74d0ad2bd61e993a2467d0f80e
+Subproject commit cefcde4b54cc28228e500ac2dc73194f24e92864

+ 12 - 1
src/helpers/formateMusic.ts

@@ -1418,7 +1418,8 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 				xmlMp3BeatFixTime,  //xml上节拍器的时间
 				notBeatFixtime: state.isOpenMetronome ? fixtime - xmlMp3BeatFixTime : fixtime, // 不含节拍器的fixtime值 唱名用
 				notBeatTime: state.isEvxml && evNoteStartTime ? retain(evNoteStartTime) : retain(relativeTime + (state.isOpenMetronome ? fixtime - xmlMp3BeatFixTime : fixtime)), // 不含节拍器的 音符开始时间
-				notBeatEndTime: state.isEvxml && evNoteEndTime ? retain(evNoteEndTime) : retain(relaEndtime + (state.isOpenMetronome ? fixtime - xmlMp3BeatFixTime : fixtime)) // 不含节拍器的 音符结束时间
+				notBeatEndTime: state.isEvxml && evNoteEndTime ? retain(evNoteEndTime) : retain(relaEndtime + (state.isOpenMetronome ? fixtime - xmlMp3BeatFixTime : fixtime)), // 不含节拍器的 音符结束时间
+				frequencyList: [note?.pitch?.frequency || -1], // 如果是和弦音符,需要添加多个音符的频率,用于评测
 			};
 			// console.log(i,'当前的小节',nodeDetail.MeasureNumberXML,totalMultipleRestMeasures,multipleRestMeasures)
 			// 如果是妙极客的曲子,并且第二遍循环播放需要等待时间,并且是第二遍循环的第一个小节的第一个音符
@@ -1429,6 +1430,16 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 			// 	relativeTime = relativeTime + state.secondEvXmlBeginTime;
 			// }
 			// if (state.isEvxml && nodeDetail.repeatIdx && nodeDetail.i > 0 && nodeDetail.MeasureNumberXML === 1 && nodeDetail.noteId === 0) {
+
+			// 如果是和弦音符,需要添加多个音符的频率,用于评测
+			if (note.voiceEntry.notes.length > 1) {
+				note.voiceEntry.notes.forEach((cnote: any) => {
+					if (cnote?.IsChordNote && cnote?.pitch?.frequency) {
+						nodeDetail.frequencyList.push(cnote.pitch.frequency)
+					}
+				})
+			}			
+
 			const firstRepeatNodeId = allNotes.find((item: any) => item.MeasureNumberXML === state.timegapRepeatMeasureIndex)?.noteId || 0;
 			if (state.isEvxml && nodeDetail.repeatIdx && nodeDetail.i > 0 && nodeDetail.MeasureNumberXML === state.timegapRepeatMeasureIndex && nodeDetail.noteId === firstRepeatNodeId) {
 				const currentWaitTime = state.evXmlBeginArr[nodeDetail.repeatIdx] || 0;

+ 1 - 0
src/page-instrument/evaluat-model/index.tsx

@@ -278,6 +278,7 @@ export default defineComponent({
           // isOrnament: !!note?.voiceEntry?.ornamentContainer,
           isTenutoSound,
           isStaccato: item?.voiceEntry?.isStaccato ? true : false, // 是否是重音
+          frequencyList: item.frequencyList, // 如果是和弦音符,需要添加多个音符的频率,用于评测
         };
         datas.push(data);
       }

+ 1 - 1
src/page-instrument/header-top/index.tsx

@@ -55,7 +55,7 @@ export const checkMusicBuy = (item: any, type?: string) => {
      * 如果是vip的曲子,当前用户不是会员时,需要弹窗提醒
      * 如果是vip的曲子,当前用户不是svip会员,点击跟练或评测时,需要弹窗提醒(会员曲子,跟练和评测需要开通svip会员才能使用)
      */
-    if ( (state.vipType === "NOT_VIP" && item.paymentType !== "FREE") || (!state.vipType.includes("SVIP") && (type === "follow" || type === "evaluating")) ) {
+    if ( (state.vipType === "NOT_VIP" && item.paymentType !== "FREE") || (item.paymentType !== "FREE" && !state.vipType.includes("SVIP") && (type === "follow" || type === "evaluating")) ) {
       permissionPopup.active = item.paymentType.includes('CHARGE') ? "memberAndDemand" : "member"
       permissionPopup.musicId = item.id
       permissionPopup.musicPrice = item.musicPrice

+ 1 - 2
vite.config.ts

@@ -52,8 +52,7 @@ export default defineConfig({
     // https: true,
     proxy: {
       "^/instrument/.*": {
-        //target: "https://dev.gym.lexiaoya.cn",
-        target: "https://dev.colexiu.com",
+        target: "https://test.colexiu.com",
         changeOrigin: true,
         rewrite: (path) => path.replace(/^\/instrument/, ""),
       },