|
@@ -335,7 +335,7 @@ export const changeSpeed = (speed: number, isSave: boolean = true) => {
|
|
|
state.speed = speed
|
|
|
state.playIngSpeed = speed
|
|
|
// 当前的音符
|
|
|
- const currentItem: any = (detailState.sectionStatus && detailState.section.length === 2) ? detailState.section[0] : detailState.times[state.activeIndex];
|
|
|
+ const currentItem: any = (detailState.sectionStatus && detailState.section.length === 2) ? detailState.befireSection || detailState.section[0] : detailState.times[state.activeIndex];
|
|
|
state.basePlayRate = currentItem?.measureSpeed ? state.speed / currentItem.measureSpeed : state.speed / detailState.baseSpeed;
|
|
|
if (!detailState.activeDetail) return
|
|
|
state.audiosInstance?.setSpeed(state.basePlayRate)
|
|
@@ -364,7 +364,8 @@ export const resetCursor = () => {
|
|
|
} else {
|
|
|
state.osmd.cursor.reset()
|
|
|
}
|
|
|
- state.osmd.cursor.hide()
|
|
|
+ // 隐藏音符指针
|
|
|
+ // state.osmd.cursor.hide()
|
|
|
detailState.fixedKey = 0
|
|
|
}
|
|
|
}
|
|
@@ -400,8 +401,8 @@ export const refreshIndexBase = (index: number) => {
|
|
|
|
|
|
// 练习模式下,开始播放时,记录mp3的播放倍率
|
|
|
export const initSetPlayRate = () => {
|
|
|
- const item: any = (detailState.sectionStatus && detailState.section.length === 2) ? detailState.section[0] : detailState.times[state.activeIndex];
|
|
|
- if (item && modelType.value === "practice" && item.measureSpeed) {
|
|
|
+ const item: any = (detailState.sectionStatus && detailState.section.length === 2) ? detailState.befireSection || detailState.section[0] : detailState.times[state.activeIndex];
|
|
|
+ if (item && item.measureSpeed) {
|
|
|
const ratio = state.speed / item.measureSpeed
|
|
|
// state.audiosInstance?.setSpeed(ratio)
|
|
|
state.basePlayRate = ratio || 1;
|
|
@@ -674,7 +675,7 @@ const setDelayTime = async (time: number) => {
|
|
|
*/
|
|
|
export const pause = async () => {
|
|
|
if (detailState.sectionStatus) {
|
|
|
- state.osmd.cursor.hide()
|
|
|
+ // state.osmd.cursor.hide()
|
|
|
}
|
|
|
if (detailState.activeDetail.isAppPlay) {
|
|
|
await syncPlayState()
|
|
@@ -790,19 +791,21 @@ export const getFirsrNoteByMeasureListIndex = (index: number, tie = true) => {
|
|
|
return null
|
|
|
}
|
|
|
|
|
|
+// 设置当前的播放时间,和光标的位置
|
|
|
export const setSectionModeCurrentTime = () => {
|
|
|
- if (detailState.needTick) {
|
|
|
- setCurrentTime(detailState.section[0].sourceStartTime || detailState.section[0].time)
|
|
|
- } else {
|
|
|
- const measureListIndex = detailState.section[0].noteElement?.sourceMeasure?.measureListIndex
|
|
|
- if (measureListIndex > 0) {
|
|
|
- setCurrentTime(getFirsrNoteByMeasureListIndex(measureListIndex - 1).time)
|
|
|
- // 如果没有节拍器,默认提前一个小节
|
|
|
- // setCurrentTime(getFirsrNoteByMeasureListIndex(measureListIndex).time)
|
|
|
- detailState.sectionFlash = true
|
|
|
- } else {
|
|
|
- setCurrentTime(0)
|
|
|
+ console.log(detailState.needTick, 'setSectionModeCurrentTime')
|
|
|
+ if (detailState.section.length === 2) {
|
|
|
+ // 预备小节的小节数
|
|
|
+ const preMeasureNum = detailState.befireSection?.measureNumberPrinted;
|
|
|
+ let preNoteNum = detailState.section[0].i - 1;
|
|
|
+ while (preMeasureNum === detailState.times[preNoteNum]?.measureNumberPrinted && preNoteNum >= 1 && preMeasureNum === detailState.times[preNoteNum-1].measureNumberPrinted) {
|
|
|
+ preNoteNum -= 1;
|
|
|
}
|
|
|
+ const preTime = detailState.befireSection ? detailState.times[preNoteNum].time : detailState.section[0].time
|
|
|
+ detailState.sectionFlash = true
|
|
|
+ setCurrentTime(preTime)
|
|
|
+ } else {
|
|
|
+ setCurrentTime(0)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -987,6 +990,7 @@ export const setPlayState = async () => {
|
|
|
await toggleState()
|
|
|
return
|
|
|
}
|
|
|
+ initSetPlayRate();
|
|
|
setPlayerView()
|
|
|
setTick(setTickStop)
|
|
|
}
|