Переглянути джерело

Merge branch 'gyt-feature-tianyong' into gyt-test

TIANYONG 1 рік тому
батько
коміт
a5f8f47436

+ 5 - 0
osmd-extended/src/MusicalScore/Graphical/VexFlow/VexFlowConverter.ts

@@ -601,6 +601,11 @@ export class VexFlowConverter {
             if (stemDirection && typeof stemDirection?.direction === 'number') {
                 wantedStemDirection = stemDirection.direction
             }
+            const DYMusicSheetId = (window as any).DYMusicSheetId
+            // 长笛教程2-5-2,符杆全部朝下
+            if (DYMusicSheetId === 904) {
+                wantedStemDirection = 1
+            }
             switch (wantedStemDirection) {
                 case(StemDirectionType.Up):
                     vfnote.setStemDirection(VF.Stem.UP);

+ 7 - 0
src/pages/detail/runtime.ts

@@ -532,6 +532,8 @@ export const resetPlayStatus = async (notStop?: boolean) => {
 }
 
 export const play = async () => {
+  // 评测是app播放,非h5播放
+  if (modelType.value === 'evaluation') return
   if (state.isFirstPlay) {
     resetPlayStatus()
     detailState.fixedKey = 0
@@ -880,6 +882,11 @@ export const testPlay = async () => {
   //setTick(setTickStop)
 }
 
+// 有系统节拍器的,评测需要播放系统节拍器
+export const setEvaluatTick = async () => {
+  await setTick(setTickStop)
+}
+
 export const stopTick = () => {
   if (state.tickPlayer) {
     state.tickPlayer.destroy()

+ 9 - 2
src/subpages/colexiu/buttons/evaluating.tsx

@@ -577,10 +577,13 @@ const setPlayer = async () => {
     runtime.evaluatingStatus = false
     Toast.clear()
   }
-  evaluatStart()
+  // midi音频播放不需要再次调用此方法,而是通过监听tickEnd回调事件调用
+  if (!detailState.isAppPlay && !detailState.needTick) {
+    evaluatStart()
+  }
 }
 
-const togglePlay = () => {
+const togglePlay = async () => {
   if (detailState.isPauseRecording) {
     evaluating.value = false
     startPlay()
@@ -589,6 +592,10 @@ const togglePlay = () => {
   if (evaluating.value) {
     stopPlay()
   } else {
+    // 评测模式,如果有系统节拍器,需要先播放系统节拍器
+    if (detailState.needTick) {
+      await RuntimeUtils.setEvaluatTick()
+    }
     setPlayer()
   }
 }

+ 1 - 0
src/subpages/colexiu/uses/use-app.ts

@@ -184,6 +184,7 @@ export const useDetail = (id: number | string): [Ref<ShaeetStatusType>, Ref<Musi
         setGlobalData('multitrack', res.data.background?.length)
       }
       ;(window as any).DYSubjectId = formatId(data.value.code as any)
+      ;(window as any).DYMusicSheetId = Number(id)
       status.value = 'success'
 
       // 额外配置