音乐未成

This commit is contained in:
lyf
2026-09-12 19:43:21 +08:00
parent 79a545b379
commit 59d1169895
2 changed files with 194 additions and 108 deletions
+97 -54
View File
@@ -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)
+97 -54
View File
@@ -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)