From e8e28d19fb05f3360077883b0ea11e59343085c6 Mon Sep 17 00:00:00 2001 From: long <452591453@qq.com> Date: Mon, 25 May 2026 10:53:31 +0800 Subject: [PATCH] =?UTF-8?q?chore(uniapp):=20=E5=86=85=E7=BD=AE=203=20?= =?UTF-8?q?=E7=A7=8D=E8=8A=82=E6=8B=8D=E5=99=A8=20click=20=E9=9F=B3?= =?UTF-8?q?=E8=89=B2=EF=BC=88MIT=20=E5=8D=8F=E8=AE=AE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 来源:johnnysn/chrono-bump 开源节拍器项目(MIT License) - click.mp3 (3.4KB) 默认标准节拍音 - click-soft.mp3 (4.2KB) 柔和音色备选 - click-wood.mp3 (4.6KB) 木鱼质感,节拍器页用作重音 accent - 节拍器页接入 accent 音色:第 1 拍用 click-wood,后续用 click,听感更专业 - README 注明来源、协议、替换说明 Co-authored-by: Cursor --- uniapp/src/pages/training/metronome.vue | 2 ++ uniapp/src/static/training/README.md | 19 +++++++++++------- .../src/static/training/audio/click-soft.mp3 | Bin 0 -> 4280 bytes .../src/static/training/audio/click-wood.mp3 | Bin 0 -> 4697 bytes uniapp/src/static/training/audio/click.mp3 | Bin 0 -> 3444 bytes 5 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 uniapp/src/static/training/audio/click-soft.mp3 create mode 100644 uniapp/src/static/training/audio/click-wood.mp3 create mode 100644 uniapp/src/static/training/audio/click.mp3 diff --git a/uniapp/src/pages/training/metronome.vue b/uniapp/src/pages/training/metronome.vue index 1400dd5c..dcc92b44 100644 --- a/uniapp/src/pages/training/metronome.vue +++ b/uniapp/src/pages/training/metronome.vue @@ -114,6 +114,8 @@ const METER_OPTIONS = [ const metronome = useMetronome({ initialBpm: 80, accentEvery: 4, + clickSrc: '/static/training/audio/click.mp3', + accentSrc: '/static/training/audio/click-wood.mp3', }) const { bpm, diff --git a/uniapp/src/static/training/README.md b/uniapp/src/static/training/README.md index fd9f3c68..f97b585d 100644 --- a/uniapp/src/static/training/README.md +++ b/uniapp/src/static/training/README.md @@ -65,14 +65,19 @@ node scripts/generate-voice.mjs --force ### 2. 节拍器 click 音 -任意金属敲击 / 木鱼短音皆可,要求: -- 时长 30-100ms -- 单声道,44.1kHz -- 文件 < 10KB +**已内置 3 种音色**(来自 [chrono-bump](https://github.com/johnnysn/chrono-bump) MIT 协议项目): -推荐来源: -- [freesound.org](https://freesound.org) 搜 "click" / "tick" -- [pixabay.com/sound-effects](https://pixabay.com/sound-effects/) 搜 "metronome" +| 文件 | 用途 | 大小 | +|------|------|------| +| `audio/click.mp3` | 默认 click(标准节拍器音) | 3.4 KB | +| `audio/click-soft.mp3` | 柔和音色 | 4.2 KB | +| `audio/click-wood.mp3` | 木鱼/原木质感(推荐用于重音 accent) | 4.6 KB | + +如果想换更好听的,可以去: +- [freesound.org](https://freesound.org) 搜 "click" / "tick"(注意 CC 协议) +- [pixabay.com/sound-effects](https://pixabay.com/sound-effects/) 搜 "metronome"(免费可商用) + +替换时保持文件名不变即可,无需改代码。 ### 3. 背景音乐 diff --git a/uniapp/src/static/training/audio/click-soft.mp3 b/uniapp/src/static/training/audio/click-soft.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5c70b9217a6aabde611d97f61f657990ea4b116f GIT binary patch literal 4280 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 A{Qv*} literal 0 HcmV?d00001 diff --git a/uniapp/src/static/training/audio/click-wood.mp3 b/uniapp/src/static/training/audio/click-wood.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a6127c85b8409bcc86b1111f68ca3893b5f1f689 GIT binary patch literal 4697 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 literal 0 HcmV?d00001 diff --git a/uniapp/src/static/training/audio/click.mp3 b/uniapp/src/static/training/audio/click.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a25fa2b0fa13017eb572999424b3756d2c663466 GIT binary patch literal 3444 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 literal 0 HcmV?d00001