Prechádzať zdrojové kódy

fix: midi播放bug修复

TIANYONG 1 rok pred
rodič
commit
61eb34c627

+ 1 - 1
src/helpers/midiPlay.tsx

@@ -98,7 +98,7 @@ export const cloudToggleState = async (type: "play" | "paused") => {
       songID: state.examSongId,
       startTime: audioData.progress * 1000,
       originalSpeed: state.originSpeed, // midi初始速度
-      speed: state.speed, // 实际速度
+      speed: state.modeType === "evaluating" ? state.originSpeed : state.speed,
       hertz: 440, //SettingState.sett.hertz,
     })
     // startCapture()

+ 8 - 2
src/state.ts

@@ -586,6 +586,9 @@ export const skipNotePlay = (itemIndex: number, isStart = false) => {
     setAudioCurrentTime(itemTime, itemIndex);
     gotoNext(item);
     metronomeData.metro?.sound(itemTime);
+    if (state.isAppPlay) {
+      audioData.progress = itemTime
+    }
   }
 };
 
@@ -598,7 +601,7 @@ export const togglePlay = async (playState?: "play" | "paused") => {
   if (state.isAppPlay) {
     if( playState === "paused" ) return
     await api_cloudChangeSpeed({
-      speed: state.speed,
+      speed: state.modeType === "evaluating" ? state.originSpeed : state.speed,
       originalSpeed: state.originSpeed,
       songID: state.examSongId,
     });
@@ -928,7 +931,10 @@ export const handleRessetState = () => {
   // 切换模式,清除选段
   skipNotePlay(0, true);
   clearSelection();
-  console.log(2222222)
+  // midi 重置播放进度
+  if (state.isAppPlay) {
+    audioData.progress = 0;
+  }
   if (state.modeType === "evaluating") {
     handleStartEvaluat();
   } else if (state.modeType === "practise") {

+ 1 - 0
src/view/audio-list/index.tsx

@@ -46,6 +46,7 @@ export const audioListStart = (type: "play" | "paused") => {
 export const setAudioPlaybackRate = (rate: number) => {
 	// 如果是midi播放
 	if (state.isAppPlay) {
+		if (state.modeType === "evaluating") return
 		hanldeSetMidiPlaybackRate(rate);
 		return;
 	}

+ 6 - 0
src/view/evaluating/index.tsx

@@ -31,6 +31,7 @@ import {
 	api_disconnectSocket,
 	api_midiMicDelay,
 	api_cloudSetCurrentTime,
+	api_cloudChangeSpeed,
 } from "/src/helpers/communication";
 import state, {
 	IPlayState,
@@ -388,6 +389,11 @@ export const handleStartBegin = async (preTimes?: number) => {
 	}
 	// 如果是midi音频评测,需要调用cloudPlay
 	if (state.isAppPlay) {
+		await api_cloudChangeSpeed({
+			speed: state.originSpeed,
+			originalSpeed: state.originSpeed,
+			songID: state.examSongId,
+		});
 		audioData.progress = 0
 		audioListStart(state.playState);
 	}