
如果你第一次认真去扒《Deltarune》第二章 OST 里的《Sunset of Seven Suns》很容易遇到一个尴尬局面曲子听起来很好听但打开编辑器后不知道从哪下手。主旋律似乎能哼出来底下的和声却像蒙了一层雾。反复拖播放器的进度条听了几十遍记下来的东西还是几个零散片段。这个场景才是大多数人扒谱的真实起点。它考验的并不是“绝对音感”而是你有没有一套稳定、可复现的工程流程先拆结构再分频段逐轨精听最后用 MIDI 回放验证。把扒谱当成一个“音频分析加工程复刻”任务来做很多原本模糊的音高和和弦会变得可验证、可修改、可追溯。这篇文章围绕《Sunset of Seven Suns》的扒谱过程梳理一套通用扒谱方法论。你会得到具体的工具选择、目录规划、Python 辅助分析脚本、MuseScore 记谱结构、FluidSynth 回放验证方式以及一张高频问题排查表。整篇文章不要求你拥有绝对音感只要求你愿意把听音过程拆细。1. 扒谱不是拼耳朵而是拼流程很多人对扒谱有一个误解觉得这是“天赋型选手”才能做的事。实际上扒谱的本质是转录是把一段连续的音频信号转换成离散的、可编辑的符号化信息。这个过程和做数据处理非常像先采样再分析再结构化输出。如果只靠耳朵硬听会面临三个问题。第一音频是多种乐器同时发声的混合信号人耳很难直接把叠加在一起的和声分离出来。第二记忆是短时的听完前一句后一句还没记完前面已经模糊了。第三没有验证手段你记下的谱面到底是 100% 正确还是 70% 相似完全凭感觉。加入工具之后流程会变成这样用剪辑工具把音频按段落切片减少每次处理的信息量用半速播放或频谱图观察音高位置辅助确认耳朵的判断用乐谱软件把结果记录成结构化文件用合成器播放 MIDI与原始音频做拼接对比逐轨修正。所以这篇为《Sunset of Seven Suns》或任何一首类似氛围感较强的曲目扒谱时建议把它当成“音频工程任务”来处理。你的目标不是“一次听准”而是“快速建立草案然后通过工具逼近正确结果”。这篇文章特别适合以下几类读者想复刻游戏原声带氛围的编曲爱好者需要分析竞品音乐结构、想从经典配乐里学配器思路的独立开发者以及正在练习扒谱、但一直卡在“听不出低音”阶段的音乐学习者。2. 扒谱之前需要掌握的核心概念在进入实操前先把几个容易混淆的概念理清楚。2.1 音高、频谱与基频一个音符之所以听起来有确定音高是因为它的振动存在周期性。我们可以把复杂声音分解成多个频率分量其中最低的那个通常被称为基频它决定我们感知到的音高。频谱图就是把声音的频率随时间变化可视化出来纵轴是频率横轴是时间颜色深浅代表能量强弱。扒谱时看频谱图最大的价值在于当耳朵无法确定某个音到底是大字组的 C 还是小字组的 C 时频谱图上能量最强的位置可以给你一个客观参照。当然要注意某些乐器的高音区泛音可能比基频更突出主观听感和频谱图结合才能减少误判。2.2 半速播放与时间拉伸把音频播放速度降低一半并不会改变音高只是把时间拉长。它会让你突然“听”出很多之前被忽略的细节尤其是低音进行和和声内声部。早期的播放器通过采样率转换实现慢放会导致音高变低现在主流工具都支持时间拉伸可以在不改变音高的前提下调整速度。扒谱时尽量选择带 time-stretch 功能的软件避免音高失真误导判断。2.3 MIDI 与音色MIDI 不是音频而是一套指令协议描述“什么时间、什么音高、多大力度、持续多久”。MIDI 本身不包含声音必须通过音源合成器播放才能听到结果。扒谱的最终产物通常是记谱或 MIDI两者本质上是同一种信息的不同呈现方式。理解这一点后你就会知道回放验证时MIDI 音色和原曲不同是正常的你要对比的是音高、节奏与和声结构而不是音色本身。2.4 曲式结构和声层概念任何一首音乐都可以按段落拆解比如前奏、主题、过渡、间奏、尾声。段落拆分会直接影响扒谱效率。和声层则可以通过空间位置来理解低音是地基决定了调性色彩中音区是填充和衔接高音区负责旋律和记忆点。如果把《Sunset of Seven Suns》这类游戏配乐当作分析对象曲式结构的标记通常比传统古典作品更简单因为游戏音乐往往是循环播放的段落化设计。你不需要一开始就还原完整的曲式报告只需要在工程文件里标记出 A 段、B 段、尾奏的边界保证每次只处理一个小块。2.5 自动转录技术的边界现在有一些模型可以直接把音频转成 MIDI也有音源分离工具可以把人声、鼓、贝斯拆开。这类工具作为辅助很有价值但直接输出的结果往往存在两个问题低音容易错八度复杂和声会被简化。所以这篇文章推荐的主路径是“人耳判断 工具验证”自动转录可以作为预听草稿不建议直接作为最终谱面。3. 工具链选择与工程目录规划扒谱工具不需要多花钱下面这套组合足够完成《Sunset of Seven Suns》这类曲目的完整流程Audacity 或任意 DAW负责音频切片、半速播放、EQ 过滤MuseScore免费开源记谱软件负责生成乐谱FluidSynth轻量 MIDI 合成器用于命令行走谱和回放Python 与 librosa负责节拍估计、音频切片、频谱图绘制ffmpeg负责音频格式转换。工具版本不锁定建议以官方最新稳定版为准。Python 环境基础要求是 3.9 或更高librosa 需要配合 soundfile、numpy 使用。以下是一个最小化的依赖文件可以在项目环境里执行# requirements.txt librosa0.10.0 soundfile0.12.0 numpy1.24.0安装命令pip install -r requirements.txt3.1 素材目录规划扒谱过程中会产生大量中间文件如果全部堆在桌面很容易混乱。推荐按下面的目录结构组织deltarune_sunset_piano/ ├── audio/ │ ├── source.wav # 从合法音频源转换后的文件 │ ├── intro_loop.wav # 切片后的前奏片段 │ └── main_theme_half.wav # 半速片段 ├── analysis/ │ ├── spectrogram.png # 频谱图 │ └── beat_track.txt # librosa 输出的节拍信息 ├── score/ │ ├── sunset.mscz # MuseScore 工程 │ └── sunset.mid # 导出的 MIDI └── verification/ └── compare.wav # 原曲与 MIDI 回放的对比片段audio 目录只放合法获取的音频其他分析输出与最终工程分开方便你随时重跑流程。4. 扒谱完整流程拆解现在进入核心流程。以《Sunset of Seven Suns》为例整个扒谱过程可以分成六个阶段。如果你是第一次尝试建议严格按这个顺序走不要跳过低频层直接扒旋律。4.1 阶段一先定目标你最终要交付什么不同目标对应完全不同的工作量。只扒主旋律只需要一条高音声部工作量和难度都最低钢琴简化版需要旋律加和弦伴奏是多数人的首选目标完整复刻版需要尽量还原原曲的配器声部包括打击乐、贝斯、Pad 等工作量最大。对《Sunset of Seven Suns》这类氛围曲我建议第一次先做“钢琴简化版”。它既能把曲子的和声轮廓梳理清楚又不会陷入音色复刻的无底洞。4.2 阶段二结构分段不要从第一秒开始逐音符扒。先把整首曲子从头到尾听三遍第一遍只标段落第二遍只记主旋律轮廓第三遍记录明显的节奏变化。段落边界通常可以通过音量变化、乐器增减、和弦转换来判断。分段完成后在 Audacity 里使用标记点工具把前奏、主题、间奏、终段分别标出来。之后所有精听操作都只针对某个片段处理信息量会大幅下降。4.3 阶段三先抓低频再抓高频这是一个容易被新手忽略的顺序问题。很多人的习惯是从主旋律开始结果旋律扒出来了和弦却怎么都对不上。原因很简单和声由低音决定低音错了上面的和弦判断全部会偏移。所以低音区优先。先反复听低声部确定每一段的根音进行再把根音填入五线谱。得到低音线以后调性往往已经比较清晰比如 A 小调还是 C 大调这为后续和弦判断提供了骨架。4.4 阶段四逐段精听精听阶段要灵活运用三个技巧循环播放、半速播放、EQ 过滤。循环播放把 4 到 8 秒的片段设为循环反复听同一句半速播放降低速度但不改变音高专门听内声部和低音EQ 过滤用高通或低通滤波单独听低频层或高频层。Audacity 里可以直接对选区做低通或高通滤波也可以通过“效果”菜单里的速度与音调工具实现半速播放。4.5 阶段五边听边记精听结果及时写入 MuseScore不要等“全曲听完了再记”。边听边记的好处是能在短时间内对照音频检查节奏坏处是容易陷入局部细节。折中方案是先记录音高骨架暂时不写复杂的节奏型然后统一修正节奏。4.6 阶段六回放验证最后把 MIDI 导出用 FluidSynth 播放并与原始音频拼接对比。回放验证时不要只看音高要重点对比四点低音是否贴合、旋律轮廓是否一致、段落衔接处的和声是否自然、节奏密度是否符合原曲听感。5. 用 Python 辅助音频分析节拍与切片Audacity 适合手动精听Python 则适合批量分析和粗略定位。下面提供两个实际可用的脚本。5.1 估计节拍位置假设音频文件路径为audio/source.wav以下脚本用 librosa 计算每分钟节拍数并输出节拍时间点。# analysis/estimate_beat.py import librosa audio_path audio/source.wav y, sr librosa.load(audio_path, sr22050) tempo, beat_frames librosa.beat.beat_track(yy, srsr) beat_times librosa.frames_to_time(beat_frames, srsr) print(fEstimated tempo: {tempo:.2f} BPM) print(fBeat count: {len(beat_times)}) with open(analysis/beat_track.txt, w, encodingutf-8) as f: for t in beat_times: f.write(f{t:.3f}\n)运行python analysis/estimate_beat.py这个脚本的价值在于给你一个客观的节奏参考。对于氛围类曲目自动节拍检测有时会给出不稳定的结果比如速度恰好是原曲的一半或两倍。如果出现这种情况优先相信听觉不要盲目照搬 BPM。5.2 按时间范围切片当你确定某个段落的起止时间后可以用 ffmpeg 快速切出循环片段避免每次都在 Audacity 里重新选择。ffmpeg -i audio/source.wav -ss 00:12.500 -to 00:28.000 -c copy audio/intro_loop.wav其中-ss是起始时间-to是结束时间。时间格式为分:秒.毫秒。如果是做半速练习直接用 ffmpeg 的atempo滤镜降低速度ffmpeg -i audio/intro_loop.wav -filter:a atempo0.5 audio/intro_loop_half.wav注意atempo滤镜支持的范围通常是 0.5 到 2.0。如果需要更低速度可以连续调用两次。切片和慢放都是离线处理运行完成后重新听文件即可。6. 用 MuseScore 记录并沉淀乐谱精听结果必须落到结构化文档里。MuseScore 是免费工具支持直接导出 MIDI 和 MusicXML非常适合扒谱工程。6.1 新建工程的基本设置打开 MuseScore 后新建乐谱需要先设定乐器和调号。扒《Sunset of Seven Suns》这类曲目建议至少建立两个声部一个用于旋律一个用于和声或低音。乐器可以选择钢琴因为钢琴在回放时能同时呈现和弦与旋律方便对照。具体设置方式如下键盘快捷键CtrlN或CmdN新建乐谱选择钢琴模板在调号面板中暂时可以选 C 大调后续根据实际判断再调整拍号可以先选 4/4后续通过小节修改。6.2 MusicXML 的结构化编写MuseScore 保存的是.mscz工程文件其内部本质是压缩后的 XML。如果希望用代码生成或批量处理乐谱可以直接操作 MusicXML 格式。下面是一个最小两小节示例展示两个声部的基础结构?xml version1.0 encodingUTF-8? score-partwise version4.0 part-list score-part idP1 part-namePiano/part-name /score-part /part-list part idP1 measure number1 attributes divisions1/divisions key fifths0/fifths /key time beats4/beats beat-type4/beat-type /time clef signG/sign line2/line /clef /attributes note pitch stepC/step octave5/octave /pitch duration1/duration voice1/voice typequarter/type /note /measure /part /score-partwise这个 XML 不是《Sunset of Seven Suns》的真实乐谱只是一个用于说明 MusicXML 结构的模板。实际扒谱时你不需要手工写 XML直接用 MuseScore 的图形界面录入即可。但理解这个结构会让你明白乐谱本质上就是带时间与音高属性的数据和你平时处理 JSON 没有本质区别。6.3 在 MuseScore 中逐轨录入在 MuseScore 中输入音符之前建议先用 4.3 阶段得到的低音进行建立和声骨架。录入顺序是第一遍输入低音声部只输入每小节根音第二遍根据低音判断和弦性质填入中间声部第三遍输入主旋律最后检查跨小节的连线、休止符、附点节奏。录入过程中如果听到不和谐音不要急着改旋律先检查低音。低音是判断和弦的基础它偏移时旋律的任何修正都没有意义。7. 用 FluidSynth 做回放验证记谱完成后下一步就是把乐谱变成声音和原始音频做对比。MuseScore 内置播放器可以直接播放但它的音色可能不够轻量更工程化的方式是从 MuseScore 导出 MIDI再用 FluidSynth 命令行走谱。7.1 导出 MIDI 与回放在 MuseScore 中通过菜单“文件 - 导出 - MIDI”得到score/sunset.mid然后执行fluidsynth -a alsa -g 0.8 /usr/share/sounds/sf2/FluidR3_GM.sf2 score/sunset.mid如果你的系统没有安装 SF2 音色库命令中的路径需要替换成你本地实际路径。Windows 用户可以优先考虑安装 FluidR3 或 GeneralUser GS 音色库。-g 0.8调的是音量增益数值可以让回放音量与原始音频更接近。7.2 生成原曲与回放的对比文件回放只是第一步更有效的验证方法是用 ffmpeg 把原始音频和 MIDI 回放录到同一个文件里形成 A/B 对比。可以把原始片段切割成 20 秒再把自己的 MIDI 回放也录成 20 秒然后用 ffmpeg 交叉拼接ffmpeg -i audio/original_cut.wav -i audio/midi_playback.wav \ -filter_complex [0:a]atrim0:10,asetptsPTS-STARTPTS[a0];[1:a]atrim0:10,asetptsPTS-STARTPTS[a1];[a0][a1]concatn2:v0:a1 \ audio/compare.wav播放compare.wav时前 10 秒是原曲后 10 秒是你的 MIDI 回放。通过快速切换能明显听出旋律线和低音是否错位。这里需要注意的是MIDI 回放与原始音色必然存在差异对比重点不是“像不像”而是“音高与节奏对不对”。7.3 验证通过的标准如何判断一次扒谱是不是成功了可以从三个维度打分旋律线和原曲哼唱起来完全一致低音走向每一小节的根音与原曲贴合和声色彩听感上的“明亮”和“阴暗”变化方向一致。前两条是硬标准第三条相对主观。如果前两条都通过这首曲子的扒谱就已经达到可交付状态。8. 常见问题与排查思路在扒谱过程中最高频的问题往往集中在低音、调性、节奏、自动转录这几个方向。可以参考下面这张排查表问题现象可能原因排查方式解决方案低音听不出只有嗡嗡声耳机低频响应不足或贝斯与底鼓重叠使用 EQ 低通滤波只看频谱图 100Hz 附近的能量位置换监听耳机或把音频降低八度播放辅助判断调性始终定不下来没有先抓根音直接去听旋律回头整理每个段落的低音线标出根音先写低音再判断大小调和弦听起来“似对非对”只判断了和弦性质忽略了转位低音检查低音声部是否写了非根音位置把低音和和弦拆开分别验证节奏与音频对不齐半速播放时以循环片段为单位导致拍点漂移用 librosa 节拍检测作为起始参考重新标记节拍点或手动调整小节边界MIDI 回放音色与原曲差异过大音源音色不同更换 SF2 音色库或仅对比音高节奏不要执着于音色音色属于编曲层面自动转录结果杂乱模型无法处理复杂混音先做音源分离再分别转录把自动转录结果当草稿人工重做低音以上每个问题都建立在“耳朵和工具互相验证”的前提下。如果某一项实在听不出来比较稳妥的做法是暂时标记为不确定继续处理下一段过一段时间再回来听。耳朵也需要“冷却时间”。9. 工程化扒谱的最佳实践扒谱本身是技术活但如果只是“扒完一首就没然后了”经验很难沉淀。下面这些工程建议能让你的扒谱过程更稳定也更适合后续复用到其他曲目。9.1 每个声部独立建轨在 MuseScore 或 DAW 里不要把所有内容写进同一轨。至少分成旋律、和声、低音三轨。独立音轨的好处是后续可以单独静音某一轨用来检查单独声部是否与原曲某层吻合。比如只播放低音轨和原曲的低通滤波结果对比会容易很多。9.2 记录不确定点扒谱过程中一定会出现“这个和弦好像对又好像不对”的时刻。建议在乐谱或工程笔记里专门维护一个不确定点列表记录小节号、音名和当时的判断依据。等技术提升后回来复查往往能快速修正。9.3 小步验证不要一次性写完全曲每完成四到八个小节就做一次回放验证。这看起来会拖慢速度实际上能避免“整曲完成后发现低音整体偏移八度”这类推翻性返工。尤其是低音声部越早验证越好。9.4 善用 EQ 分离听感如果音频里贝斯和钢琴的低音区互相覆盖可以用 Audacity 的 EQ 效果把 200Hz 以下单独保存一份再用高音量耳机听。同样如果想听清主旋律可以做一个 1000Hz 以上的高通滤波版本。这比反复拖动时间轴更可靠。9.5 对素材来源保持合规意识扒谱只能基于你自己合法拥有的音频文件。无论是从购买的 OST 数字版中提取还是从已拥有的游戏文件中解包都应该只用于个人学习、研究和非商业交流。不要将复刻程度极高的 MIDI 重新打包并以商业形式发布这涉及音乐著作权问题。扒谱的价值在于练习分析能力而不是绕过版权获取可商用素材。9.6 为自动化工具留出验证环节现在音源分离和自动转录工具已经很强但它们的输出仍然需要人工确认。更推荐的做法是用自动转录得到一份“粗稿”再按第 4 节的流程人工校对低音和和声最后用 MIDI 回放做终检。工具只能替代重复劳动不能替代判断。10. 总结与下一步回到最开始的问题为什么你听了很多遍《Sunset of Seven Suns》还是记不下一段完整的谱子因为你在用耳朵硬扛整首曲子的复杂度。一旦把流程改成“曲式分段、低频优先、逐段精听、回放验证”难度就会大幅下降。这篇文章里值得记住的结论有三条扒谱的顺序比天赋重要低音永远优先于旋律工具能帮你验证听觉但不能替代听觉可验证的 MIDI 回放比主观感觉更接近正确结果。如果你也打算尝试扒这首曲子建议从“只扒前奏的钢琴和声层”开始。不用管完整曲式不用一次到位先用半速播放加频谱图确认前四个小节的低音再把结果导成 MIDI 和原曲循环对比。跑通这一小段流程后再扩展到全曲你会发现整套流程已经变得自然了。下一步可以继续深入的方向包括用音源分离工具做分轨预听研究自动转录模型的低音误差规律以及把同一套流程应用到更多慢速氛围类游戏配乐中。扒谱本质上是一个持续迭代信号分析能力的过程每次实践都会让你对音乐结构的判断更稳。