DESIGN DOC · 10 版权与合规 · #s143

原创音乐规格表 · 每个场景一种风格,全部自制

致敬边界 · 过审红线 · 自查清单 — 《热血骑手·物语》设计案按节成页:一个 section 一个文件,左侧目录全站可跳。

本页只是10 册的第 2/2 节
本册 2 节#s14 · #s143
14·3

原创音乐规格表 · 每个场景一种风格,全部自制

三段动机贯穿全作 · WebAudio 芯片合成器实时渲染 · 零版权风险

这一节是"我自己做音乐"的可执行规格:写完这张表就能直接开工,不需要再找作曲。核心思路有三条:① 全作只有 3 个原创动机(情义 / 爱情 / 热血),所有曲目都是它们的变奏 —— 这样玩家通关后能哼出主题曲,这是"记忆点"的唯一来源;② 场景风格差异靠曲风与配器而不是靠换素材库,所以 17 个格子听起来各不相同、但拆开听仍然是同一个游戏;③ 分层 + 实时渲染,包体极小(微信端 BGM 总量控制在 ≤ 3MB),并且天然满足"随时暂停"的要求。

14.3.1 三个动机(先写动机的音程性格,再写曲子)

代号名称音程性格调式 / BPM用在哪
M-01情义动机
"兄弟"
纯五度上行 + 大二度回坠(像喊人名字的那两声)。只用两个音就能认出来。D 大调骨架
♩= 96
CH.01 口哨主题曲、CH.09 救援、CH.13 天台决斗中段、CH.14 驰援。杨洋沸线里出现最多。
M-02爱情动机
"燕子"
五声音阶下行级进 + 大七度悬停不解决("话到嘴边咽回去")。永远不给完满终止。A 羽调式
♩= 72
花店街、直播基地、她哼的那段、Y1/Y2 外传。§03C 三条外传全部以它为主料。
M-03热血动机
"打"
十六分音符同音反复 + 小三度尖叫音(吉他/方波 bend)。节奏型比音高更重要,一听就想动手。E 小调 / 混合利底亚
♩= 152
所有战斗叠层、狗群关、地下拳馆、竞速赛、门禁警报。它是"叠加层",不是独立曲。
全作情绪最高点(技术活):CH.13 天台上,两兄弟开打的第三阶段让 M-01 与 M-02 同时演奏(一个在方波通道、一个在三角波通道,同拍对位)。因为 M-02 从不解决,所以打完之后音乐也不会给终止和弦——直接用一声街道环境音收尾。这个"没解决"就是玩家心里那根刺。CH.14 结局 A 才第一次让它解决到主和弦。

14.3.2 场景 × 曲风对照表(对应 §04C 的 17 个格子)

场景(§04C 编号)曲风BPM调式配器层(4 通道内)循环叠层触发 / 备注
① 骑手站(晨)口哨民谣 chiptune96D 大调PULSE1 主旋律(口哨) · PULSE2 三度和声 · TRI 贝斯 · NOISE 沙锤32 小节
≈ 80s
无叠层。M-01 首次完整呈现,是全作的"家"。晚班版去掉和声层、加蟋蟀 NOISE。
② 懦夫救星拳馆训练蒙太奇 funk118G 混合利底亚PULSE1 staccato riff · PULSE2 反拍 stab · TRI walking bass · NOISE 军鼓边击24 小节上课中自动加一层沙袋撞击(NOISE 通道复用 SFX);缴满一阶 → 加一段 4 小节胜利 jingle。
③ 芳姨面馆温暖 Bossa104F 大调(属七多)TRI 主旋律 · PULSE2 切分和弦 · 无贝斯(留白)· NOISE 锅铲/水沸16 小节
≈ 45s
厨房 QTE 时把鼓换成刀砧节奏,节拍即 QTE 判定线 —— 音乐就是玩法。
③B 辣条妹的御膳房市井 funk / disco-lite
= ⑬夜市那首的近亲,但更"贵"一点
126F 宫 · 加蓝色音("有钱的味道")PULSE1 锣点切分 riff · PULSE2 four-on-floor · TRI slap 贝斯 · NOISE 叫号广播采样 + 铁盘 + 排队人群的"嘶——"12 小节
≈ 35s
它亮着的时候永远只有一段循环、不铺满 —— 玩家是路过,不是入住。唯一一次停灶(D7)时这首曲子被完整倒放并降速到 60 BPM,那是全作最不安的一刻。CH.03-B「一单双送」的取餐窗段落把鼓点直接做成倒计时(每两拍一口锅),送出窗外瞬间切成竞速层的 M-03。
④ 花店街轻快华尔兹♩=132 (3/4)B♭ 大调PULSE1 旋律(M-02 变形) · PULSE2 低音八分 · TRI 琶音24 小节买花档位越高,加一层钟琴音色(同一首曲子的"豪华版")—— 钱花在听觉上看得见。
⑤ 高架桥洞 · 狗群阴郁 surf rock142C 小调PULSE1 颤音(reverb 长尾) · PULSE2 六连音 riff · TRI 低音嗡鸣 · NOISE 远处狗吠16 小节遭遇战瞬间叠入 M-03 鼓层;打退大黄后整首降速到 84 并转大调(同一素材的"和平版",省一半工时)。
⑥ 城中村逼仄 lo-fi82A 小调TRI 失谐钢琴感(慢 attack) · NOISE 楼道脚步 · 极少 PULSE12 小节硬约束:这一格永远不许抽掉鼓——它是全作最暖的一格,不是最惨的一格。毛雄妈出场段落反而换成提速版 + 木鱼/锅铲打击乐(喜剧节拍);CH.10 之后回访时同一首曲子加回一层暖色和声 = 心境变化。
⑦ 五金街工业打击乐128D 弗里吉亚NOISE 主导(钢管敲击采样=程序合成的短噪声)· PULSE2 riff · 无贝斯8 小节
极洗脑
陈伯递工具的瞬间静音 0.4 秒再接上 —— 热血物语式的幽默重音。
⑧ 人民公园东门(门禁)间谍爵士 / 紧张拨弦126E 小调(和声)PULSE2 pizzicato 走句 · TRI 站立贝斯 · NOISE 刷镲 rim · 主旋律留给玩家脚步声16 小节巡逻者靠近 → 音量自动 duck 到 30% 并切低通 900Hz;被发现瞬间鼓点炸开 + M-03。倒计时最后 60 秒叠 8 分音符 hi-hat。
⑨ 别墅区冷色 synthwave110F# 小调PULSE1 pad 化长音 · TRI 八度琶音 · NOISE 电子军鼓16 小节与⑧共用节奏逻辑但音色更"塑料",暗示这里的人有钱但没人味。
⑩ 地下拳馆 / 洗浴顶层硬核 8-bit 格斗158B 小调PULSE1+PULSE2 双旋律八度齐奏 · TRI 快速根音 · NOISE 全场鼓20 小节BOSS 每掉一段气血升半音(原版 FC 的经典手法,成本极低效果极好)。车轮战每人换一次鼓 pattern。
⑪ 直播基地可爱 future bass chiptune100C 大调 → 关系小调游移TRI supersaw 替代(多 detune 脉冲)· PULSE1 主旋律(M-02) · NOISE 弹幕"叮"声24 小节在线人数每涨 1,000 加一层 sparkle arpeggio;人气暴跌时整首降调 + 抖混响 —— §03C 的核心反馈。
⑫ 城南江堤极简 ambient自由速度
(chime 制)
D 多利亚TRI 长音 + 缓慢 LFO · 极远 PULSE 回声 · NOISE 江水白噪24 小节
≈ 2min
CH.10 那一跳全程静音,只有水声(唯一一次关掉 BGM)。之后回访时 M-01 由一个人慢慢吹出来。
⑬ 夜市 / 强叔烧烤市井 disco + 中国锣鼓122五声 C 宫PULSE1 锣点旋律 · PULSE2 four-on-floor · TRI slap 贝斯 · NOISE 串签/铁盘16 小节周六夜封街成赛道时同一首曲子提速到 150 并加 M-03 —— 一格两用的听觉证明。
⑭ 便利店电梯音乐 parody88E♭ 大调单通道 TRI bossa 简化版 · 其余静音8 小节故意做得很"廉价好笑",玩家买东西会笑。深夜版加制冷机 hum。
⑮ 城隍庙街 / 天台终章管弦 chiptune138D 小调 → D 大调四通道全部铺满,M-01 铜管化 · M-03 定音鼓 · 中途插入 M-02 独奏32 小节最终 BOSS 三阶段:①纯 M-03 ②加入 M-01 对抗 ③驰援名单每来一批人叠一层和声(S 评价 24 人 = 24 层,实际按 6 层分组实现)。

14.3.3 特殊功能曲(非场景)

竞速 §09D

R 系列「引擎鼓」

R0「一单双送」是唯一例外:它不用引擎鼓,用 ③B 那首 funk 提速到 150 + 心跳式底鼓,因为这一场没有观众、没有奖金,只有两个人和六份不能洒的面。⑧公园东门那一秒(QTE「等」)全部通道静音 0.8 秒,只留一个红灯的电流声。之后 R1–R5 才上引擎鼓:150→170 BPM 逐圈递增;压弯成功踩在重音上(音乐即操作反馈)。被超车时短暂 duck + 反向滤波。

隐藏单 §09E

H 系列静默

发现隐藏单的瞬间不放音乐,只有一声 UI 提示 + 环境音突然清晰。越安静越像秘密。

倒地 / KO

2 小节 jingle

M-01 的倒置(音程上下翻转)—— 主题还在,只是摔了。致敬原作又完全原创。

结算 / 分享卡

4 音上行

朋友圈海报生成时的短音效,做成可辨识的品牌声(4 个音,绝不与任何平台提示音相似)。

14.3.4 实现方案(一套合成器,两端出法)

运行时

自研 4 通道芯片合成器(WebAudio)

通道固定为 PULSE1 / PULSE2 / TRIANGLE / NOISE(FC 质感但不追求像素级还原,因为我们画面是漫画 Q 版)。
· 曲目数据 = JSON 音序(note on/off、通道、滑音、颤音、音量包络),一首约 6~14KB,15 首场景曲总计 < 200KB
· 波形用 OscillatorNode + 自定义 PeriodicWave;噪声用缓冲的伪随机 PCM
· 包体几乎为零,这是微信小游戏 4MB 首包红线下的最优解

交付

Steam 端离线渲染成 .ogg

同一份 JSON 音序在构建期跑一遍离线渲染(headless Node + OfflineAudioContext)导出 .ogg 高码率轨,桌面端播放音频文件而非实时合成 —— CPU 占用归零,还能顺便产出 OST DLC(§15)。
· 微信/iOS 端:实时合成(省流量、支持分层与动态升降调)
· 同一份源,两种输出,不会出现"两端听到的不一样"

分层与动态

预烘分层轨 + 小节对齐切换

每首拆 2~3 层,切换只在小节边界发生(对齐 1/1 拍),不做实时混音台。动态手段四件:加/减层、整体升降调(BOSS 阶段)、降速(和平版)、低通 duck(潜行)。这四招足够覆盖本作全部需求,且都是纯参数。

暂停行为

与 §13.4 完全一致

L1 软暂停:音量 → 60% + 低通 1200Hz,继续播放;L0 硬暂停 / onHide:suspend() AudioContext 并记录 tick 位置,onShow 恢复。实时合成的好处是"恢复"= 从任意小节重新起播也听不出破绽(不像录音会有明显接缝)。

14.3.5 生产排期与凭证

阶段产出说明
M0(1 周)M-03 热血动机 + 狗群关 1 首 + KO jingle原型只需要"打起来带不带劲",先做战斗曲。
M1(3 周)M-01/M-02 定稿 + 骑手站/拳馆/面馆/花店/桥洞 共 5 首垂直切片用到的场景。这三段动机一旦定死,后面全是变奏,速度会很快。
M2(5 周)剩余 10 首场景曲 + 竞速/门禁/主播线三首功能曲此时开始清除所有 CC0 占位素材,台账里的临时条目必须归零。
M3离线渲染 .ogg 全套 + OST 曲目单顺带产出 Steam 商店页背景乐与预告片配乐(用 M-01,不用外部授权曲)。
凭证CREDITS.json + 工程源文件入库每首曲子保留 MIDI/LMMS 工程 + 创作日期 + 作者。万一遇到恶意 DMCA,工程文件就是最硬的自证。这一步很多人不做,Steam 上被误下架时非常被动。
唯一的版权风险残留:余浪的奥特曼头饰属于视觉梗,已在 §14.2 做了"圆钝 Q 版 + 配色偏移 + 不出现官方名号"的处理;音乐侧不留任何风险——全作没有一个音来自外部。若日后想要一首真人演唱的主题曲,那是 §16 #10 之外的新决策,现阶段不考虑。

《热血骑手·物语》设计案 v1.0 — 分册制 · 域名 hot-blood.infinityfly.xin · 目标平台 Steam / WeGame / 微信小游戏 / iOS·Android

本页是 design/index.html 里 一个 <section> 拆出来的独立页面(一节一文件)。改内容请改 index.html 对应 section,再跑 node split-docs.js 重建;也可以直接改 docs/NN-*-sX.html,但那样下次重建会被覆盖 —— 事实源永远是 index.html。

致敬 FC《热血物语》的结构与气质,角色、世界观、美术均为原创。