Browse Source

feat: midi播放1.1

TIANYONG 1 year ago
parent
commit
a5c4568c64
2 changed files with 13 additions and 8 deletions
  1. 6 1
      src/state.ts
  2. 7 7
      src/view/audio-list/index.tsx

+ 6 - 1
src/state.ts

@@ -9,7 +9,7 @@ import { handleStartTick } from "./view/tick";
 import { audioListStart, getAudioCurrentTime, getAudioDuration, setAudioCurrentTime, setAudioPlaybackRate } from "./view/audio-list";
 import { toggleFollow } from "./view/follow-practice";
 import { browser, setStorageSpeed, setGlobalData } from "./utils";
-import { api_cloudGetMediaStatus, api_createMusicPlayer } from "./helpers/communication";
+import { api_cloudGetMediaStatus, api_createMusicPlayer, api_cloudChangeSpeed } from "./helpers/communication";
 import { verifyCanRepeat, getDuration } from "./helpers/formateMusic";
 import { getMusicSheetDetail } from "./utils/baseApi"
 import { getQuery } from "/src/utils/queryString";
@@ -595,6 +595,11 @@ export const skipNotePlay = (itemIndex: number, isStart = false) => {
 export const togglePlay = async (playState?: "play" | "paused") => {
   // midi播放
   if (state.isAppPlay) {
+    await api_cloudChangeSpeed({
+      speed: state.speed,
+      originalSpeed: state.originSpeed,
+      songID: state.examSongId,
+    });
     const cloudGetMediaStatus = await api_cloudGetMediaStatus();
     const status = cloudGetMediaStatus?.content.status
     state.playState = status

+ 7 - 7
src/view/audio-list/index.tsx

@@ -56,10 +56,10 @@ export const setAudioPlaybackRate = (rate: number) => {
 export const getAudioCurrentTime = () => {
 	// 如果是midi播放
 	if (audioData.midiRender) {
-		const c = getMidiCurrentTime();
-		return c;
+		// const c = getMidiCurrentTime();
+		return audioData.progress;
 	}
-	// console.log('返回的时间',audioData.songEle?.currentTime,audioData.progress)
+	// console.log('返回的时间',state.playSource, audioData.songEle?.currentTime,audioData.progress)
 	if (state.playSource === "music") return audioData.songEle?.currentTime || audioData.progress;
 	if (state.playSource === "background") return audioData.backgroundEle?.currentTime || audioData.progress;
 	
@@ -69,8 +69,9 @@ export const getAudioCurrentTime = () => {
 export const getAudioDuration = () => {
 	// 如果是midi播放
 	if (audioData.midiRender) {
-		const d = getMidiDuration();
-		return d;
+		// const d = getMidiDuration();
+		const songEndTime = state.times[state.times.length - 1 || 0]?.endtime || 0
+		return audioData.duration || songEndTime;
 	}
 	return audioData.songEle?.duration || audioData.backgroundEle?.duration || audioData.duration;
 };
@@ -170,12 +171,11 @@ export default defineComponent({
 
 		// midi播放进度回调
 		const midiProgress = (res: any) => {
+			console.log('api',res)
 			const currentTime = res?.currentTime || res?.content?.currentTime;
 			const total = res?.totalDuration || res?.content?.totalDuration;
 			const time = currentTime / 1000;
 			audioData.progress = time;
-			audioData.songEle && (audioData.songEle.currentTime = time);
-			audioData.backgroundEle && (audioData.backgroundEle.currentTime = time);
 			audioData.duration = total / 1000;
 			if (
 				res?.content?.totalDuration > 1000 &&