 longandCursor
|
edc9993403
|
fix(metronome): 修复 iOS 真机静音键模式下无声音
iOS 微信小程序的 InnerAudioContext 默认会受系统侧边静音键影响,
单实例 obeyMuteSwitch = false 在 iOS 上不可靠,必须调用全局
API setInnerAudioOption 才能正常发声。
- App.vue onLaunch 调用 uni.setInnerAudioOption({
obeyMuteSwitch: false, mixWithOther: true })
- useMetronome.preload() 进页面时再调一次保险
- AudioPool.play() 改用 stop() + play() 替代 seek(0) + play(),
iOS 上 seek(0) 不一定能复位播放进度
- 预热改用 volume 0.01 极小音量替代 volume 0,iOS 上音量为 0
可能不会真正完成音频解码
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 11:48:16 +08:00 |
|
 longandCursor
|
8f14f3190e
|
fix(metronome): 修复第二拍延迟两倍间隔的 bug
drift correction 逻辑写反了:
drift = now - nextTickAt (此时为负数,下一拍还在未来)
nextDelay = intervalMs - drift ❌ = 2 × intervalMs
正确做法直接计算"目标时刻距现在还有多久":
nextDelay = nextTickAt - now ✅
现象:点击开始,第一拍立即响,但第二拍要等两倍拍间隔才响。
现在第一拍响完就立刻按 BPM 节奏进入第二拍。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 11:44:06 +08:00 |
|
 longandCursor
|
2beace89f4
|
feat(TUICallKit-Vue3): 迁入节拍器与练一练训练模块
之前误将训练模块加在 uniapp 项目,实际目标项目是 TUICallKit-Vue3
(甄养堂主小程序壳),整体迁入:
- hooks/useMetronome.ts 节拍器(音频实例池+预热,无冷启动延迟)
- hooks/useTrainingSession.ts 训练 Session 状态机
- hooks/useVoiceCoach.ts 语音教练队列
- hooks/useTrainingBgm.ts 训练/休息 BGM 切换+渐变
- pages/training/index.vue 练一练主页(器械跟练)
- pages/training/metronome.vue 独立节拍器(老人友好版,
中央圆即开始/暂停按钮,纯 CSS 几何 icon,大字大按钮)
- pages/training/components/exercise-anim.vue CSS 动作动画
- pages/training/exercises.ts 5 个器械动作预设
- static/training/audio/*.mp3 3 种 click 音色(MIT 协议)
- scripts/generate-voice.mjs MiMo TTS 批量生成语音脚本
- pages.json 注册 pages/training/index 与 pages/training/metronome
- 「我的」页加 DevTrainingEntry 悬浮入口,生产环境自动隐藏
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 11:28:55 +08:00 |
|