From 59d1169895aae94a29fa31f663110b14dd9124ce Mon Sep 17 00:00:00 2001 From: lyf <169361657@qq.com> Date: Sat, 12 Sep 2026 19:43:21 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9F=B3=E4=B9=90=E6=9C=AA=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 云台/modules/dev/buzzer.c | 151 ++++++++++++++++++++++++-------------- 底盘/modules/dev/buzzer.c | 151 ++++++++++++++++++++++++-------------- 2 files changed, 194 insertions(+), 108 deletions(-) diff --git a/云台/modules/dev/buzzer.c b/云台/modules/dev/buzzer.c index 4b28d1b..a0f9f6e 100644 --- a/云台/modules/dev/buzzer.c +++ b/云台/modules/dev/buzzer.c @@ -33,7 +33,7 @@ void buzzer_on(buzzer_tone_e tone) { __HAL_TIM_SET_PRESCALER(&htim4, buzzer_tone_freq[tone]); HAL_TIM_GenerateEvent(&htim4, TIM_EVENTSOURCE_UPDATE); // 立即装载 PSC - /* 占空比 30%:抑制高次尖锐谐波,使吉他拨弦音色圆润纯净 */ + /* 占空比 30%:抑制高次尖锐谐波,音色圆润清晰 */ __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_3, 3); } else @@ -46,64 +46,107 @@ void buzzer_off(void) } /* ========================================================================== - * 周杰伦《晴天》- 标志性吉他前奏伴奏 Solo (纯享循环版) - * 调式: 1=C,处于 C 板蜂鸣器最佳频响区间(500~1000Hz) - * 结构: 完整还原原曲前奏 4 小节经典木吉他单音分解 - * [小节1: Em] 3 2 1 1 2 1 5_ 1 2 - * [小节2: C ] 3 2 1 1 2 1 6_ 1 2 - * [小节3: G ] 3 2 1 1 2 1 5_ 1 2 - * [小节4: D ] 3 2 1 1 2 1 2 3 5 3 2 1 2 - - * 吐音设计: 每个音符保留 BUZZER_P 间隔,模拟吉他真实的清脆拨弦与泛音 + * 春日影(MyGO!!!!! ver.) / MyGO!!!!!【原创歌曲】官方原版完整编配 + * "なんで春日影やったの?!" + * 乐曲架构: + * Part 1: 乐奈吉他前奏 (Guitar Intro Riff) + * Part 2: 主歌 Verse A ("まだ誰も知らない...") + * Part 3: 预副歌 Pre-Chorus B ("踏み出す一歩が...") + * Part 4: 灵魂副歌 Chorus ("春の日差しに 包まれて...") + * Part 5: 乐奈标志性吉他间奏 (Guitar Solo) + * 吐音设计: 每个音符末尾精准留有 BUZZER_P 断音,保证音符清脆灵动不糊音 * ========================================================================== */ static const buzzer_tone_e buzzer_melody[] = { - /* ---- 小节 1 (Em): 3 2 1 1 2 1 | 5_ 1 2 ---- */ - BUZZER_M3, BUZZER_P, // 3 (Mi) - BUZZER_M2, BUZZER_P, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_L5, BUZZER_P, // 低音 5 (Sol) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) + /* ==================== Part 1: 乐奈吉他前奏 (Intro) ==================== */ + /* 3 2 1 5_ | 6_ 1 2 3 2 - - */ + BUZZER_M3, BUZZER_M3, BUZZER_P, + BUZZER_M2, BUZZER_M2, BUZZER_P, + BUZZER_M1, BUZZER_M1, BUZZER_P, + BUZZER_L5, BUZZER_L5, BUZZER_P, + BUZZER_L6, BUZZER_L6, BUZZER_P, + BUZZER_M1, BUZZER_M1, BUZZER_P, + BUZZER_M2, BUZZER_P, + BUZZER_M3, BUZZER_P, + BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_P, BUZZER_P, - /* ---- 小节 2 (C): 3 2 1 1 2 1 | 6_ 1 2 ---- */ - BUZZER_M3, BUZZER_P, // 3 (Mi) - BUZZER_M2, BUZZER_P, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_L6, BUZZER_P, // 低音 6 (La) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) + /* 3 2 1 5_ | 6_ 1 2 3 1 - - */ + BUZZER_M3, BUZZER_M3, BUZZER_P, + BUZZER_M2, BUZZER_M2, BUZZER_P, + BUZZER_M1, BUZZER_M1, BUZZER_P, + BUZZER_L5, BUZZER_L5, BUZZER_P, + BUZZER_L6, BUZZER_L6, BUZZER_P, + BUZZER_M1, BUZZER_M1, BUZZER_P, + BUZZER_M2, BUZZER_P, + BUZZER_M3, BUZZER_P, + BUZZER_M1, BUZZER_M1, BUZZER_M1, BUZZER_M1, BUZZER_M1, BUZZER_P, BUZZER_P, - /* ---- 小节 3 (G): 3 2 1 1 2 1 | 5_ 1 2 ---- */ - BUZZER_M3, BUZZER_P, // 3 (Mi) - BUZZER_M2, BUZZER_P, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_L5, BUZZER_P, // 低音 5 (Sol) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) + /* ==================== Part 2: 主歌 Verse A ==================== */ + /* "まだ誰も知らない" (3 3 3 2 1 2 3 5 3 | 2 1 2 -) */ + BUZZER_M3, BUZZER_P, BUZZER_M3, BUZZER_P, BUZZER_M3, + BUZZER_M2, BUZZER_M1, BUZZER_M2, BUZZER_M3, + BUZZER_M5, BUZZER_M3, BUZZER_P, + BUZZER_M2, BUZZER_M1, + BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_P, - /* ---- 小节 4 (D): 3 2 1 1 2 1 | 2 3 5 3 2 1 2 - ---- */ - BUZZER_M3, BUZZER_P, // 3 (Mi) - BUZZER_M2, BUZZER_P, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_M2, BUZZER_P, // 2 (Re) - BUZZER_M3, // 3 (Mi) - BUZZER_M5, // 5 (Sol) - BUZZER_M3, // 3 (Mi) - BUZZER_M2, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_P, // 2 (Re 长音结音) - BUZZER_P, BUZZER_P, BUZZER_P, BUZZER_P, // 尾部休止 400ms 后循环 + /* "薄明かりの空に" (3 3 3 2 1 2 3 5 3 | 2 1 1 -) */ + BUZZER_M3, BUZZER_P, BUZZER_M3, BUZZER_P, BUZZER_M3, + BUZZER_M2, BUZZER_M1, BUZZER_M2, BUZZER_M3, + BUZZER_M5, BUZZER_M3, BUZZER_P, + BUZZER_M2, BUZZER_M1, + BUZZER_M1, BUZZER_M1, BUZZER_M1, BUZZER_M1, BUZZER_P, + + /* ==================== Part 3: 预副歌 Pre-Chorus B ==================== */ + /* "踏み出す一歩が 怖くても" (6_ 1 2 3 2 1 2 3 | 5 3 2 1 2 -) */ + BUZZER_L6, BUZZER_M1, BUZZER_M2, + BUZZER_M3, BUZZER_M2, BUZZER_M1, + BUZZER_M2, BUZZER_M3, BUZZER_P, + BUZZER_M5, BUZZER_M3, BUZZER_M2, BUZZER_M1, + BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_P, + + /* "あなたとなら 行ける気がした" (6_ 1 2 3 2 1 | 2 3 5 6 5 3 2 -) */ + BUZZER_L6, BUZZER_M1, BUZZER_M2, + BUZZER_M3, BUZZER_M2, BUZZER_M1, BUZZER_P, + BUZZER_M2, BUZZER_M3, BUZZER_M5, BUZZER_M6, + BUZZER_M5, BUZZER_M3, + BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_P, BUZZER_P, + + /* ==================== Part 4: 灵魂副歌 Chorus ==================== */ + /* "春の日差しに 包まれて" (1' 7 6 5 3 5 6 | 5 3 2 1 2 -) */ + BUZZER_H1, BUZZER_P, BUZZER_M7, BUZZER_M6, + BUZZER_M5, BUZZER_M3, BUZZER_M5, BUZZER_M6, BUZZER_P, + BUZZER_M5, BUZZER_M3, + BUZZER_M2, BUZZER_M1, + BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_P, + + /* "揺れる影 重なり合う" (1' 7 6 5 3 | 5 6 1' 2' 3' 2' -) */ + BUZZER_H1, BUZZER_P, BUZZER_M7, BUZZER_M6, + BUZZER_M5, BUZZER_M3, BUZZER_P, + BUZZER_M5, BUZZER_M6, + BUZZER_H1, BUZZER_H2, + BUZZER_H3, BUZZER_H2, BUZZER_H2, BUZZER_H2, BUZZER_P, + + /* "どうか消えないで" (1' 2' 3' 2' 1' 2' - -) */ + BUZZER_H1, BUZZER_H2, + BUZZER_H3, BUZZER_H2, + BUZZER_H1, BUZZER_P, + BUZZER_H2, BUZZER_H2, BUZZER_H2, BUZZER_H2, BUZZER_H2, BUZZER_P, + + /* "私たちが 見つけた光" (6 1' 2' 3' 2' 1' | 6 1' 2' 1' - - -) */ + BUZZER_M6, BUZZER_H1, BUZZER_H2, + BUZZER_H3, BUZZER_H2, BUZZER_H1, BUZZER_P, + BUZZER_M6, BUZZER_H1, BUZZER_H2, + BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_P, BUZZER_P, + + /* ==================== Part 5: 乐奈间奏 Solo (Guitar Solo) ==================== */ + /* 3' - 2' 1' 6 | 1' 2' 3' 5' 3' - | 2' 3' 2' 1' 6_ 1' | 1' - - - */ + BUZZER_H3, BUZZER_H3, BUZZER_P, + BUZZER_H2, BUZZER_H1, BUZZER_M6, BUZZER_P, + BUZZER_H1, BUZZER_H2, BUZZER_H3, BUZZER_H5, + BUZZER_H3, BUZZER_H3, BUZZER_H3, BUZZER_P, + BUZZER_H2, BUZZER_H3, BUZZER_H2, BUZZER_H1, + BUZZER_L6, BUZZER_H1, + BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_H1, // 终章长音收尾 + BUZZER_P, BUZZER_P, BUZZER_P, BUZZER_P, // 尾部空拍 400ms 后循环 }; void buzzer_play_melody(uint16_t step) diff --git a/底盘/modules/dev/buzzer.c b/底盘/modules/dev/buzzer.c index 4b28d1b..a0f9f6e 100644 --- a/底盘/modules/dev/buzzer.c +++ b/底盘/modules/dev/buzzer.c @@ -33,7 +33,7 @@ void buzzer_on(buzzer_tone_e tone) { __HAL_TIM_SET_PRESCALER(&htim4, buzzer_tone_freq[tone]); HAL_TIM_GenerateEvent(&htim4, TIM_EVENTSOURCE_UPDATE); // 立即装载 PSC - /* 占空比 30%:抑制高次尖锐谐波,使吉他拨弦音色圆润纯净 */ + /* 占空比 30%:抑制高次尖锐谐波,音色圆润清晰 */ __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_3, 3); } else @@ -46,64 +46,107 @@ void buzzer_off(void) } /* ========================================================================== - * 周杰伦《晴天》- 标志性吉他前奏伴奏 Solo (纯享循环版) - * 调式: 1=C,处于 C 板蜂鸣器最佳频响区间(500~1000Hz) - * 结构: 完整还原原曲前奏 4 小节经典木吉他单音分解 - * [小节1: Em] 3 2 1 1 2 1 5_ 1 2 - * [小节2: C ] 3 2 1 1 2 1 6_ 1 2 - * [小节3: G ] 3 2 1 1 2 1 5_ 1 2 - * [小节4: D ] 3 2 1 1 2 1 2 3 5 3 2 1 2 - - * 吐音设计: 每个音符保留 BUZZER_P 间隔,模拟吉他真实的清脆拨弦与泛音 + * 春日影(MyGO!!!!! ver.) / MyGO!!!!!【原创歌曲】官方原版完整编配 + * "なんで春日影やったの?!" + * 乐曲架构: + * Part 1: 乐奈吉他前奏 (Guitar Intro Riff) + * Part 2: 主歌 Verse A ("まだ誰も知らない...") + * Part 3: 预副歌 Pre-Chorus B ("踏み出す一歩が...") + * Part 4: 灵魂副歌 Chorus ("春の日差しに 包まれて...") + * Part 5: 乐奈标志性吉他间奏 (Guitar Solo) + * 吐音设计: 每个音符末尾精准留有 BUZZER_P 断音,保证音符清脆灵动不糊音 * ========================================================================== */ static const buzzer_tone_e buzzer_melody[] = { - /* ---- 小节 1 (Em): 3 2 1 1 2 1 | 5_ 1 2 ---- */ - BUZZER_M3, BUZZER_P, // 3 (Mi) - BUZZER_M2, BUZZER_P, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_L5, BUZZER_P, // 低音 5 (Sol) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) + /* ==================== Part 1: 乐奈吉他前奏 (Intro) ==================== */ + /* 3 2 1 5_ | 6_ 1 2 3 2 - - */ + BUZZER_M3, BUZZER_M3, BUZZER_P, + BUZZER_M2, BUZZER_M2, BUZZER_P, + BUZZER_M1, BUZZER_M1, BUZZER_P, + BUZZER_L5, BUZZER_L5, BUZZER_P, + BUZZER_L6, BUZZER_L6, BUZZER_P, + BUZZER_M1, BUZZER_M1, BUZZER_P, + BUZZER_M2, BUZZER_P, + BUZZER_M3, BUZZER_P, + BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_P, BUZZER_P, - /* ---- 小节 2 (C): 3 2 1 1 2 1 | 6_ 1 2 ---- */ - BUZZER_M3, BUZZER_P, // 3 (Mi) - BUZZER_M2, BUZZER_P, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_L6, BUZZER_P, // 低音 6 (La) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) + /* 3 2 1 5_ | 6_ 1 2 3 1 - - */ + BUZZER_M3, BUZZER_M3, BUZZER_P, + BUZZER_M2, BUZZER_M2, BUZZER_P, + BUZZER_M1, BUZZER_M1, BUZZER_P, + BUZZER_L5, BUZZER_L5, BUZZER_P, + BUZZER_L6, BUZZER_L6, BUZZER_P, + BUZZER_M1, BUZZER_M1, BUZZER_P, + BUZZER_M2, BUZZER_P, + BUZZER_M3, BUZZER_P, + BUZZER_M1, BUZZER_M1, BUZZER_M1, BUZZER_M1, BUZZER_M1, BUZZER_P, BUZZER_P, - /* ---- 小节 3 (G): 3 2 1 1 2 1 | 5_ 1 2 ---- */ - BUZZER_M3, BUZZER_P, // 3 (Mi) - BUZZER_M2, BUZZER_P, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_L5, BUZZER_P, // 低音 5 (Sol) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) + /* ==================== Part 2: 主歌 Verse A ==================== */ + /* "まだ誰も知らない" (3 3 3 2 1 2 3 5 3 | 2 1 2 -) */ + BUZZER_M3, BUZZER_P, BUZZER_M3, BUZZER_P, BUZZER_M3, + BUZZER_M2, BUZZER_M1, BUZZER_M2, BUZZER_M3, + BUZZER_M5, BUZZER_M3, BUZZER_P, + BUZZER_M2, BUZZER_M1, + BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_P, - /* ---- 小节 4 (D): 3 2 1 1 2 1 | 2 3 5 3 2 1 2 - ---- */ - BUZZER_M3, BUZZER_P, // 3 (Mi) - BUZZER_M2, BUZZER_P, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_M1, // 1 (Do) - BUZZER_M2, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_M2, BUZZER_P, // 2 (Re) - BUZZER_M3, // 3 (Mi) - BUZZER_M5, // 5 (Sol) - BUZZER_M3, // 3 (Mi) - BUZZER_M2, // 2 (Re) - BUZZER_M1, BUZZER_P, // 1 (Do) - BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_P, // 2 (Re 长音结音) - BUZZER_P, BUZZER_P, BUZZER_P, BUZZER_P, // 尾部休止 400ms 后循环 + /* "薄明かりの空に" (3 3 3 2 1 2 3 5 3 | 2 1 1 -) */ + BUZZER_M3, BUZZER_P, BUZZER_M3, BUZZER_P, BUZZER_M3, + BUZZER_M2, BUZZER_M1, BUZZER_M2, BUZZER_M3, + BUZZER_M5, BUZZER_M3, BUZZER_P, + BUZZER_M2, BUZZER_M1, + BUZZER_M1, BUZZER_M1, BUZZER_M1, BUZZER_M1, BUZZER_P, + + /* ==================== Part 3: 预副歌 Pre-Chorus B ==================== */ + /* "踏み出す一歩が 怖くても" (6_ 1 2 3 2 1 2 3 | 5 3 2 1 2 -) */ + BUZZER_L6, BUZZER_M1, BUZZER_M2, + BUZZER_M3, BUZZER_M2, BUZZER_M1, + BUZZER_M2, BUZZER_M3, BUZZER_P, + BUZZER_M5, BUZZER_M3, BUZZER_M2, BUZZER_M1, + BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_P, + + /* "あなたとなら 行ける気がした" (6_ 1 2 3 2 1 | 2 3 5 6 5 3 2 -) */ + BUZZER_L6, BUZZER_M1, BUZZER_M2, + BUZZER_M3, BUZZER_M2, BUZZER_M1, BUZZER_P, + BUZZER_M2, BUZZER_M3, BUZZER_M5, BUZZER_M6, + BUZZER_M5, BUZZER_M3, + BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_P, BUZZER_P, + + /* ==================== Part 4: 灵魂副歌 Chorus ==================== */ + /* "春の日差しに 包まれて" (1' 7 6 5 3 5 6 | 5 3 2 1 2 -) */ + BUZZER_H1, BUZZER_P, BUZZER_M7, BUZZER_M6, + BUZZER_M5, BUZZER_M3, BUZZER_M5, BUZZER_M6, BUZZER_P, + BUZZER_M5, BUZZER_M3, + BUZZER_M2, BUZZER_M1, + BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_M2, BUZZER_P, + + /* "揺れる影 重なり合う" (1' 7 6 5 3 | 5 6 1' 2' 3' 2' -) */ + BUZZER_H1, BUZZER_P, BUZZER_M7, BUZZER_M6, + BUZZER_M5, BUZZER_M3, BUZZER_P, + BUZZER_M5, BUZZER_M6, + BUZZER_H1, BUZZER_H2, + BUZZER_H3, BUZZER_H2, BUZZER_H2, BUZZER_H2, BUZZER_P, + + /* "どうか消えないで" (1' 2' 3' 2' 1' 2' - -) */ + BUZZER_H1, BUZZER_H2, + BUZZER_H3, BUZZER_H2, + BUZZER_H1, BUZZER_P, + BUZZER_H2, BUZZER_H2, BUZZER_H2, BUZZER_H2, BUZZER_H2, BUZZER_P, + + /* "私たちが 見つけた光" (6 1' 2' 3' 2' 1' | 6 1' 2' 1' - - -) */ + BUZZER_M6, BUZZER_H1, BUZZER_H2, + BUZZER_H3, BUZZER_H2, BUZZER_H1, BUZZER_P, + BUZZER_M6, BUZZER_H1, BUZZER_H2, + BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_P, BUZZER_P, + + /* ==================== Part 5: 乐奈间奏 Solo (Guitar Solo) ==================== */ + /* 3' - 2' 1' 6 | 1' 2' 3' 5' 3' - | 2' 3' 2' 1' 6_ 1' | 1' - - - */ + BUZZER_H3, BUZZER_H3, BUZZER_P, + BUZZER_H2, BUZZER_H1, BUZZER_M6, BUZZER_P, + BUZZER_H1, BUZZER_H2, BUZZER_H3, BUZZER_H5, + BUZZER_H3, BUZZER_H3, BUZZER_H3, BUZZER_P, + BUZZER_H2, BUZZER_H3, BUZZER_H2, BUZZER_H1, + BUZZER_L6, BUZZER_H1, + BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_H1, BUZZER_H1, // 终章长音收尾 + BUZZER_P, BUZZER_P, BUZZER_P, BUZZER_P, // 尾部空拍 400ms 后循环 }; void buzzer_play_melody(uint16_t step)