|
@@ -140,6 +140,10 @@ const state = reactive({
|
|
|
} as {[key: string]: () => void},
|
|
|
|
|
|
delayCheckFirst: false,
|
|
|
+
|
|
|
+ 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,isSave)
|
|
|
|
|
|
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,6 +373,26 @@ export const refreshIndexBase = (index: number) => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+export const initSetPlayRate = () => {
|
|
|
+ const item: any = detailState.times[state.activeIndex];
|
|
|
+ if (item && modelType.value === "practice" && item.measureSpeed) {
|
|
|
+ const ratio = state.speed / item.measureSpeed
|
|
|
+
|
|
|
+ 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)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
export const refreshIndex = (ctime?: number) => {
|
|
|
const { osmd }: any = state
|
|
|
if (osmd && (ctime || state.audiosInstance.audio)) {
|
|
@@ -379,6 +404,7 @@ export const refreshIndex = (ctime?: number) => {
|
|
|
const index = getIndex(detailState.times, currentTimeNum)
|
|
|
|
|
|
|
|
|
+ dynamicShowPlaySpeed(index);
|
|
|
state.activeIndex = index
|
|
|
removeRepateBackground(index)
|
|
|
|
|
@@ -613,6 +639,7 @@ let nowTime = 0
|
|
|
|
|
|
let prevTime: number = 0
|
|
|
|
|
|
+
|
|
|
const accelerateRefreshPlayer = () => {
|
|
|
if (timer || !state.audiosInstance) {
|
|
|
return
|
|
@@ -1062,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
|