|
@@ -330,6 +330,7 @@ const formatTimes = () => {
|
|
}
|
|
}
|
|
let measureIndex = -1
|
|
let measureIndex = -1
|
|
let recordMeasure = -1
|
|
let recordMeasure = -1
|
|
|
|
+ let firstNoteTime = times[0].time * 1000
|
|
for (let index = 0; index < times.length; index++) {
|
|
for (let index = 0; index < times.length; index++) {
|
|
const item = times[index]
|
|
const item = times[index]
|
|
const note = getNoteByMeasuresSlursStart(item)
|
|
const note = getNoteByMeasuresSlursStart(item)
|
|
@@ -385,16 +386,21 @@ const formatTimes = () => {
|
|
// console.log('时间1111', data)
|
|
// console.log('时间1111', data)
|
|
datas.push(data)
|
|
datas.push(data)
|
|
}
|
|
}
|
|
- return datas
|
|
|
|
|
|
+ return {
|
|
|
|
+ datas,
|
|
|
|
+ firstNoteTime
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+const calculateInfo = formatTimes()
|
|
|
|
+
|
|
const connect = async () => {
|
|
const connect = async () => {
|
|
const search = useOriginSearch()
|
|
const search = useOriginSearch()
|
|
connentLoading.value = true
|
|
connentLoading.value = true
|
|
const behaviorId = sessionStorage.getItem('behaviorId') || search.behaviorId || initBehaviorId
|
|
const behaviorId = sessionStorage.getItem('behaviorId') || search.behaviorId || initBehaviorId
|
|
const rate = runtime.speed / detailState.baseSpeed //1
|
|
const rate = runtime.speed / detailState.baseSpeed //1
|
|
-
|
|
|
|
const content = {
|
|
const content = {
|
|
- musicXmlInfos: formatTimes(),
|
|
|
|
|
|
+ musicXmlInfos: calculateInfo.datas,
|
|
|
|
+ firstNoteTime: calculateInfo.firstNoteTime,
|
|
subjectId: detailState.subjectId ? detailState.subjectId : detailState.isPercussion ? 1 : detailState.subjectId,
|
|
subjectId: detailState.subjectId ? detailState.subjectId : detailState.isPercussion ? 1 : detailState.subjectId,
|
|
detailId: detailState.activeDetail?.id,
|
|
detailId: detailState.activeDetail?.id,
|
|
examSongId: search.id,
|
|
examSongId: search.id,
|
|
@@ -516,7 +522,7 @@ const setPlayer = async () => {
|
|
})
|
|
})
|
|
try {
|
|
try {
|
|
await connect()
|
|
await connect()
|
|
- startPlay()
|
|
|
|
|
|
+ //startPlay()
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
console.log('关闭弹窗')
|
|
console.log('关闭弹窗')
|
|
Toast.clear()
|
|
Toast.clear()
|
|
@@ -526,6 +532,7 @@ const setPlayer = async () => {
|
|
runtime.evaluatingStatus = false
|
|
runtime.evaluatingStatus = false
|
|
Toast.clear()
|
|
Toast.clear()
|
|
}
|
|
}
|
|
|
|
+ evaluatStart()
|
|
}
|
|
}
|
|
|
|
|
|
const togglePlay = () => {
|
|
const togglePlay = () => {
|
|
@@ -645,13 +652,15 @@ const evaluatStart = () => {
|
|
{
|
|
{
|
|
api: 'startRecording',
|
|
api: 'startRecording',
|
|
content: {
|
|
content: {
|
|
- accompanimentState: SettingState.eva.mute ? 1 : 0
|
|
|
|
|
|
+ accompanimentState: SettingState.eva.mute ? 1 : 0,
|
|
|
|
+ firstNoteTime: calculateInfo.firstNoteTime,
|
|
}
|
|
}
|
|
},
|
|
},
|
|
() => {
|
|
() => {
|
|
// console.log('开始录音app回调时间', Date.now())
|
|
// console.log('开始录音app回调时间', Date.now())
|
|
backtime = Date.now()
|
|
backtime = Date.now()
|
|
evaluating.value = true
|
|
evaluating.value = true
|
|
|
|
+ runtime.playState = "play";
|
|
if (detailState.activeDetail?.midiUrl) {
|
|
if (detailState.activeDetail?.midiUrl) {
|
|
console.log('midiUrl', detailState.activeDetail?.midiUrl)
|
|
console.log('midiUrl', detailState.activeDetail?.midiUrl)
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
@@ -663,6 +672,11 @@ const evaluatStart = () => {
|
|
RuntimeUtils.startCapture()
|
|
RuntimeUtils.startCapture()
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /** 音频播放完结束评测 */
|
|
|
|
+ const playEnd_endEvalute = () => {
|
|
|
|
+ playerStop()
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 酷乐秀活动接口,Url中有设置并且仅在学生端提评分交数据
|
|
* 酷乐秀活动接口,Url中有设置并且仅在学生端提评分交数据
|
|
* 管乐团单元测验, url中有单元测验ID仅在学生端提评分交数据
|
|
* 管乐团单元测验, url中有单元测验ID仅在学生端提评分交数据
|
|
@@ -869,6 +883,7 @@ export default defineComponent({
|
|
listenerMessage('cloudTimeUpdae', onProgress)
|
|
listenerMessage('cloudTimeUpdae', onProgress)
|
|
RuntimeUtils.event.on('tickDestroy', cloudMetronome)
|
|
RuntimeUtils.event.on('tickDestroy', cloudMetronome)
|
|
RuntimeUtils.event.on('tickEnd', evaluatStart)
|
|
RuntimeUtils.event.on('tickEnd', evaluatStart)
|
|
|
|
+ runtime.playEndCallback.endEvaluat = playEnd_endEvalute
|
|
hideComplexButton(handleComplexButton, true);
|
|
hideComplexButton(handleComplexButton, true);
|
|
// 开始效验
|
|
// 开始效验
|
|
checkEvaluating()
|
|
checkEvaluating()
|