|
@@ -12,6 +12,7 @@ import detailState from '/src/pages/detail/state'
|
|
|
import iconFollwBtn from './icons/icon-follwBtn.png'
|
|
|
import { unitTestData } from '/src/subpages/colexiu/unitTest/index'
|
|
|
import { formatPitch } from '/src/subpages/colexiu/buttons/evaluating'
|
|
|
+import SettingState from '/src/pages/detail/setting-state'
|
|
|
|
|
|
// 显示或隐藏播放按钮
|
|
|
const togglePlayer = (show: boolean = false) => {
|
|
@@ -106,6 +107,7 @@ const getDefaultIndex = () => {
|
|
|
|
|
|
// 开始
|
|
|
const handleStart = () => {
|
|
|
+ checking = false;
|
|
|
onClear()
|
|
|
data.start = true
|
|
|
openToggleRecord(true)
|
|
@@ -126,6 +128,36 @@ const handleEnd = () => {
|
|
|
getNoteIndex()
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * 2024.7.9 新增自动结束跟练模式功能
|
|
|
+ * 如果跟练模式,唱完了最后一个有频率的音符,需要自动结束掉跟练模式
|
|
|
+ * 需要判断当前音符的后面是否都是休止音符(休止音符的频率都是-1),或者是否是最后一个音符了
|
|
|
+ */
|
|
|
+const autoEndFollow = () => {
|
|
|
+ if (data.index >= detailState.times.length) {
|
|
|
+ // 如果开了自动循环需要重新开始跟练
|
|
|
+ if (SettingState.sett.loop) {
|
|
|
+ handleStart()
|
|
|
+ } else {
|
|
|
+ handleEnd()
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let nextIndex = data.index + 1;
|
|
|
+ const rightTimes = detailState.times.slice(data.index,detailState.times.length)
|
|
|
+ // 后面的音符是否都是休止音符
|
|
|
+ const isAllRest = !rightTimes.some((item: any) => item.frequency > 1);
|
|
|
+ if (isAllRest && detailState.times[data.index].frequency < 1) {
|
|
|
+ // 如果开了自动循环需要重新开始跟练
|
|
|
+ if (SettingState.sett.loop) {
|
|
|
+ handleStart()
|
|
|
+ } else {
|
|
|
+ handleEnd()
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
// 下一个
|
|
|
const next = () => {
|
|
|
if (state.osmd.product) {
|
|
@@ -134,6 +166,7 @@ const next = () => {
|
|
|
state.osmd.cursor.next()
|
|
|
}
|
|
|
refreshView()
|
|
|
+ autoEndFollow()
|
|
|
}
|
|
|
|
|
|
// 获取当前音符
|