|
@@ -140,6 +140,10 @@ const state = reactive({
|
|
|
} as {[key: string]: () => void},
|
|
|
/** 阶段评测,延迟检测是否检测过 */
|
|
|
delayCheckFirst: false,
|
|
|
+ /** 开始播放时,记录的mp3播放倍率,用户当前设置的速度/当前小节的速度 */
|
|
|
+ basePlayRate: 1,
|
|
|
+ /** 播放中,更加当前小节速度动态计算的展示速度 */
|
|
|
+ playIngSpeed: 90,
|
|
|
})
|
|
|
|
|
|
const syncStepIndex = (i: number) => {
|
|
@@ -299,7 +303,7 @@ export const changeAllMode = () => {
|
|
|
}
|
|
|
|
|
|
export const changeSpeed = (speed: number, isSave: boolean = true) => {
|
|
|
- // console.log(speed)
|
|
|
+ console.log('速度设置',speed,isSave)
|
|
|
// const route: any = router.currentRoute.value
|
|
|
const speeds = store.get('speeds') || {}
|
|
|
if (isSave){
|
|
@@ -307,6 +311,7 @@ export const changeSpeed = (speed: number, isSave: boolean = true) => {
|
|
|
store.set('speeds', speeds)
|
|
|
}
|
|
|
state.speed = speed
|
|
|
+ state.playIngSpeed = speed
|
|
|
if (!detailState.activeDetail) return
|
|
|
state.audiosInstance?.setSpeed(speed / detailState.baseSpeed)
|
|
|
promisefiyPostMessage({
|
|
@@ -368,12 +373,23 @@ export const refreshIndexBase = (index: number) => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// 练习模式下,变速的曲子,根据当前小节速度,设置音频播放倍率
|
|
|
-const dynamicSetPlayRate = (index: number) => {
|
|
|
- const item: any = detailState.times[index];
|
|
|
- if (item && modelType.value === "practice" && state.playState === "play" && item.measureSpeed && item.measureSpeed !== detailState.baseSpeed) {
|
|
|
+// 练习模式下,开始播放时,记录mp3的播放倍率
|
|
|
+export const initSetPlayRate = () => {
|
|
|
+ const item: any = detailState.times[state.activeIndex];
|
|
|
+ if (item && modelType.value === "practice" && item.measureSpeed) {
|
|
|
const ratio = state.speed / item.measureSpeed
|
|
|
- state.audiosInstance?.setSpeed(ratio)
|
|
|
+ // state.audiosInstance?.setSpeed(ratio)
|
|
|
+ state.basePlayRate = ratio || 1;
|
|
|
+ console.log('播放倍率',state.basePlayRate)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 根据当前小节动态设置,右上角展示的速度
|
|
|
+const dynamicShowPlaySpeed = (index: number) => {
|
|
|
+ const item: any = detailState.times[index];
|
|
|
+
|
|
|
+ if (item && modelType.value === "practice" && state.playState === "play" && item.measureSpeed ) {
|
|
|
+ state.playIngSpeed = Math.floor(state.basePlayRate * item.measureSpeed)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -388,7 +404,7 @@ export const refreshIndex = (ctime?: number) => {
|
|
|
const index = getIndex(detailState.times, currentTimeNum)
|
|
|
// 监听app返回的ctime
|
|
|
// console.log(777777777,index,ctime)
|
|
|
- dynamicSetPlayRate(index);
|
|
|
+ dynamicShowPlaySpeed(index);
|
|
|
state.activeIndex = index
|
|
|
removeRepateBackground(index)
|
|
|
// console.log(currentTimeNum, index, detailState.times[detailState.times.length - 1]?.endtime)
|
|
@@ -623,6 +639,7 @@ let nowTime = 0
|
|
|
|
|
|
let prevTime: number = 0
|
|
|
|
|
|
+// 播放中一直触发
|
|
|
const accelerateRefreshPlayer = () => {
|
|
|
if (timer || !state.audiosInstance) {
|
|
|
return
|
|
@@ -1072,8 +1089,14 @@ export const noteClick = (evt: MouseEvent) => {
|
|
|
return
|
|
|
}
|
|
|
let activeNote = getNoteBySlursStart(getActtiveNoteByTimes(evt))
|
|
|
+ console.log('点击音符',activeNote)
|
|
|
if (activeNote) {
|
|
|
const time = activeNote.sourceStartTime || activeNote.time
|
|
|
+ // 点击音符,动态设置右上角的速度
|
|
|
+ if (activeNote.measureSpeed) {
|
|
|
+ state.speed = Math.floor(state.basePlayRate * activeNote.measureSpeed)
|
|
|
+ state.playIngSpeed = state.speed
|
|
|
+ }
|
|
|
setCurrentTime(time)
|
|
|
setStepView(activeNote.i, time)
|
|
|
detailState.fixedKey = activeNote.realKey
|