扒谱这件事,最考验人的往往不是识谱能力,而是“明明听到了旋律,却不知道它在谱面上对应哪个音”。本文以《Deltarune》OST 中的《Sunset of Seven Suns》为解析对象,整理一套从音频分析、乐理判断到最终出谱的完整扒谱流程。无论你是想复刻游戏音乐、做视频改编,还是单纯想提升听音能力,这套方法都可以直接复用。
文章会覆盖工具选择、音乐基础、降速技巧、Python 辅助分析、常见问题排查等内容,尽量做到每一步都有可执行方案。开始之前先说明一点:这首曲子的具体小节结构、调性和配器,以你手上实际音频版本为准。不同抓轨版本、不同播放器均衡设置都会造成听感差异,所以扒谱过程中的反复校对比“第一次就听准”更重要。
1. 背景与核心概念
1.1 什么是扒谱
“扒谱”这个词在音乐爱好者圈子里很常见,通俗讲就是把别人作品里的音符听写下来。它不只是记录主旋律,还包括和弦、低音、节奏型、力度变化、音色层次等维度。对于游戏音乐爱好者来说,扒谱是还原乐曲、制作 MIDI、进行二次创作的起点;对于音频算法工程师或音视频开发者来说,扒谱思维也能帮助理解音频分析的基本逻辑。
从专业角度定义,扒谱是对录音作品进行逆向分析的行为,输出物可以是五线谱、简谱、MIDI 文件、和弦谱,甚至是一个完整的 DAW 工程。扒谱本身不要求一次听准,更多是依赖系统的分段训练和工具辅助,所以它也经常被拿来当练耳教材。
1.2 为什么选择《Deltarune》音乐作为练习对象
《Deltarune》是 Toby Fox 继《Undertale》之后推出的独立 RPG 作品,其原声带在玩家群体中有很高的讨论度。Toby Fox 的音乐风格很特别,经常在复古电子音色、chiptune 质感和旋律记忆点之间取得平衡,节奏鲜明,和声又不会过于晦涩,非常适合作为扒谱练习素材。
回到《Sunset of Seven Suns》这首曲子,标题里虽然挂着“扒谱”两个字,但真正有价值的不是“把音符抄下来”,而是通过扒谱去理解作曲者如何安排音色、织体和和声进行。尤其对游戏音乐来说,很多听感来自合成器音色和混音处理,谱面只能还原音高与节奏,无法完全还原音色,这就需要我们在扒谱过程中把“听到的声音”和“写下的谱子”做双向对照。
1.3 扒谱的交付物
一次完整的游戏音乐扒谱,交付物通常包括:
- 主旋律五线谱或简谱
- 和弦标记,包括级数和功能
- 低音或贝斯声部
- 节奏型说明
- MIDI 文件
- 音色与力度标注
如果后续要做翻弹、编曲或视频演示,这些信息都会非常有用。本文会以这些交付物为目标,按步骤展开。
2. 环境准备与工具选择
2.1 硬件与系统要求
扒谱对硬件要求不高,关键是一个能听清中低频的耳机或监听音箱。普通耳机可以用,但如果 100Hz 以下的低频听不清,后期就需要借助频谱图或 EQ 滤波来辅助判断。操作系统方面,Windows、macOS、Linux 都可以,下面提到的工具也都有跨平台版本。
2.2 核心软件清单
| 软件 | 用途 | 费用 | 说明 |
|---|---|---|---|
| Audacity | 音频降速、滤波、循环播放 | 免费 | 开源,操作简单,适合快速处理音频 |
| Sonic Visualiser | 频谱观察、峰值标记、谐波分析 | 免费 | 开源,专业音频可视化分析工具 |
| MuseScore | 写谱、导出 PDF/MIDI | 免费 | 开源制谱软件,跨平台 |
| DAW | 多轨扒带、MIDI 编辑 | 部分付费 | 可选 Reaper、FL Studio、Logic Pro、Cubase |
如果不想一开始就装太多软件,可以先从 Audacity 加 MuseScore 的组合开始,这两款足够完成基础的扒谱与制谱。
2.3 Python 辅助环境(可选)
如果你习惯用脚本处理音频,可以安装 Python 3,然后安装几个常用库:
pip install librosa numpy matplotlib其中 librosa 是音频分析库,numpy 负责数值计算,matplotlib 用来画频普图。后续章节会给出几个可直接运行的辅助脚本。
2.4 示例项目目录
建议为每次扒谱单独建一个目录,方便中间版本管理:
sunset-seven-suns/ ├── audio/ │ ├── 01-raw.mp3 │ ├── 02-tempo-75.mp3 │ └── 03-bass-only.mp3 ├── notes/ │ ├── melody.md │ ├── chords.md │ └── bass.md ├── scripts/ │ ├── midi_to_freq.py │ └── inspect_audio.py └── score/ └── sunset_seven_suns.mscz目录里 audio 放原始和处理后的音频,notes 放文字记录,scripts 放辅助脚本,score 放最终谱面工程。这样的结构在项目后期会非常方便回溯。
3. 核心原理:扒谱需要掌握的音乐基础
3.1 音高与 MIDI 音符换算
扒谱最终要把听到的声音映射到谱面,而音高和频率之间的关系是可以精确计算的。MIDI 规范里,69 号音符对应 A4,标准音频率为 440Hz。任意音符频率的计算公式是:
f = 440 * 2^((n - 69) / 12)其中 n 是 MIDI 音符编号,比如中央 C 是 60。用 Python 实现如下:
def midi_note_to_freq(midi_note): return 440.0 * (2 ** ((midi_note - 69) / 12)) for note in [60, 64, 67, 69]: print(note, round(midi_note_to_freq(note), 2))运行结果:
60 261.63 64 329.63 67 392.0 69 440.0这段代码很实用:当你从频谱图上看到某个峰值的频率,就可以反推它最接近哪个音高。比如看到 392Hz 左右的大能量峰值,基本可以判断是 G4。
3.2 调性判断
判断一首曲子是什么调,最直接的方法是听结尾。大多数音乐会在结尾回到主和弦,最后一个音或最后一个和弦往往就是调性中心。之后再结合谱面里的升降号,判断是大调还是小调。
游戏音乐常用自然大调与自然小调,但 Toby Fox 也经常使用多利亚、利底亚这类调式营造特殊氛围。如果你发现结尾和弦“既像大调又像小调”,可以先标记出全曲出现频率最高的几个和弦,再判断是哪种调式。
3.3 节拍与速度判断
扒谱前先确定速度和拍号,否则后续音符时值会一头雾水。操作方法是:在 DAW 或节拍器里按住一个鼓点或低频脉冲对拍,先感觉大致 BPM,再用节拍器微调。确定拍号时,注意重音规律,四拍子重音在每小节第一拍,三拍子是“强、弱、弱”。
如果原曲节奏不稳,或者在乐句之间有自由速度,可以先把明显的小节边界标出来,再逐句处理,不要一开始就强行量化。
3.4 和弦识别策略
和弦识别是扒谱中比较费时间的环节。推荐顺序是:
- 先听低音,确定根音。
- 再听最高音,确定旋律音或和弦外音。
- 用三度叠置关系试出中间音。
- 判断颜色,是大三和弦、小三和弦、七和弦,还是挂留和弦。
以《Sunset of Seven Suns》为例,如果铺底是合成器长音,和弦切换不会太快,可以先抓每小节第一个和弦,再细化后半小节的变化。这里有个经验:不要一次把整个和弦全部听出来,先记录根音和最低音,再逐步补上其他声部。
3.5 配器分层
扒谱前先做“配器分层”,把混音拆成五层:
- 主旋律层:人声、主音合成器、主音吉他
- 和声层:和弦垫底、背景琶音
- 低音层:贝斯、合成器低音
- 节奏层:鼓组、打击乐
- 音效装饰层:过渡音效、噪声、逆播采样
在纸上或者笔记软件里把五层和时间轴对应起来,后面扒每一层时就有一条清晰线索,不会在主旋律里迷失。
4. 完整实战流程
4.1 段落规划
开始扒谱前,先完整听三遍原曲。第一遍整体感受情绪和配器;第二遍标记段落,比如前奏、A 段、B 段、间奏、尾奏;第三遍确定每个段落的开始时间。
在笔记里可以用这样的表格记录:
| 段落 | 时间范围 | 主要乐器 | 备注 |
|---|---|---|---|
| 前奏 | 00:00 - 00:12 | 合成器垫底、鼓 | 柔和进入 |
| A 段 | 00:12 - 00:34 | 主旋律加入 | 速度稳定 |
| 间奏 | 00:34 - 00:40 | 鼓、低音 | 过渡段落 |
有了段落表后,扒谱可以按段落推进,不用从头到尾一次性完成。
4.2 降速与变速处理
慢速听是扒谱最重要的基本功。Audacity 里可以直接用“效果 -> 改变速度”或“效果 -> 改变音高与速度”来处理。其中“改变速度”会同时改变音高,适合辨别旋律走向;如果想要保持音高不变,只放慢节奏,可以用“改变音高与速度”里的“改变速度”选项,或者用 ffmpeg 命令行。
ffmpeg 的处理方式:
ffmpeg -i 01-raw.mp3 -filter:a "atempo=0.75" 02-tempo-75.mp3atempo 参数表示速度倍率,0.75 表示变成原来的 75%。注意老版本 ffmpeg 只支持 0.5 到 2.0,新版本范围更宽。如果一次降速太多,可以连续处理两次:
ffmpeg -i 01-raw.mp3 -filter:a "atempo=0.8,atempo=0.8" 02-tempo-64.mp3这样能避免单次过度变速带来的音质劣化。
4.3 分频段听
混音中不同乐器分布在不同的频段,用滤波器把它们分离开,能降低听辨难度。Audacity 里可以用“效果 -> 低通滤波”和“效果 -> 高通滤波”。
常见频段划分:
- 低音鼓与贝斯:0Hz - 200Hz
- 中低频:200Hz - 800Hz
- 中频主体:800Hz - 2500Hz
- 高频与空气感:2500Hz 以上
比如要抓低音声部,先复制一份音频,加上低通滤波 200Hz,再降速,就能更清楚地听到贝斯音符的振动频率。注意滤波器斜率会影响听感,不同曲目需要微调截止频率。
4.4 主旋律扒谱
段落和速度确定后,开始扒主旋律。在 MuseScore 里新建乐谱,设置好调号和拍号,然后按小节录入。
录入时建议用“单音符试错法”:在原曲播放到某个旋律音时,先在钢琴或 MIDI 键盘上试出候选音,再用 MuseScore 里的同一音符播放对比。如果听起来比原曲高,就向下调整半音,反之向上调整,直到音高重合。
主旋律扒完后,先不要急着处理和弦,把整段的旋律音高和节奏记完整,然后再进入下一层。
4.5 和弦与低音扒谱
主旋律完成之后,开始扒和声层和低音层。推荐使用 DAW 的钢琴卷帘窗,在 MIDI 轨中把低音声部和弦声部分别放在不同的轨道,便于视觉对照。
顺序仍然是先低音后高音。低音确定了根音,和弦中间的填充音会更容易判断。比如低音是 C,主旋律里有 E,那么这个和弦很可能是 C 大三和弦;如果主旋律里有 Eb,那可能是 C 小三和弦或 Ab 大和弦。
4.6 连音与装饰音处理
游戏音乐里经常会有滑音、装饰音和十六分音符琶音,这些在谱面上需要简化还是保留,取决于使用目的。
如果是做还原向谱面,要把明显的装饰音记录成小音符;如果是做改编向谱面,只需要保留和弦骨架和节奏型。建议扒谱时先把听到的装饰音都记下来,后期再根据演奏难度筛选。
4.7 导出与校对
扒完所有声部后,导出 PDF 和 MIDI,然后完整播放一遍 MIDI,对照原曲逐段核对:
- 速度是否一致
- 小节边界是否对齐
- 和弦是否有明显的色彩偏差
- 低音进行是否流畅
如果只听 MIDI 会觉得“差不多”,但在原曲 A/B 切换时发现和弦别扭,就要回到对应小节继续调整。
5. Python 辅助分析实战
如果不想全部用耳朵硬听,可以用 Python 做一些客观辅助分析。下面给出几个可以直接运行的例子。
5.1 读取音频基本信息
import librosa audio_path = "audio/01-raw.mp3" y, sr = librosa.load(audio_path, sr=22050) duration = librosa.get_duration(y=y, sr=sr) print(f"采样率: {sr} Hz") print(f"音频时长: {duration:.2f} 秒") print(f"采样点数: {len(y)}")这里把音频统一重采样到 22050Hz,可以加快计算速度。输出能够帮你确认音频时长是否和笔记表格一致。
5.2 提取整体速度
import librosa import numpy as np audio_path = "audio/01-raw.mp3" y, sr = librosa.load(audio_path, sr=22050) tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr) tempo_val = float(np.mean(tempo)) print(f"自动估计速度: {tempo_val:.2f} BPM")不同版本的 librosa 对 beat_track 的返回值类型有差异,有的是标量,有的是数组,所以这里统一用np.mean取平均。自动估计只能作为参考,最终速度还是要结合你对鼓点的听感。
5.3 用 Chroma 特征观察和弦倾向
Chroma 特征可以把音频映射到 12 个音名,用来观察某个段落中哪些音高出现得比较多,是判断和弦和调性的辅助工具。
import librosa import numpy as np audio_path = "audio/01-raw.mp3" y, sr = librosa.load(audio_path, sr=22050) hop_length = 512 chroma = librosa.feature.chroma_cqt(y=y, sr=sr, hop_length=hop_length) print("chroma 形状:", chroma.shape) print("第 0 帧的 12 维能量:", np.round(chroma[:, 0], 3))输出中 12 维分别对应 C、C#、D、D#、E、F、F#、G、G#、A、A#、B 的能量。如果某段音乐在索引 0、4、7 上能量明显偏高,就暗示 C、E、G 三个音出现的概率较高,可能对应 C 大三和弦。
5.4 绘制频谱峰值
import librosa import numpy as np import matplotlib.pyplot as plt audio_path = "audio/01-raw.mp3" y, sr = librosa.load(audio_path, sr=22050) # 取中间一小段做短时傅里叶变换 start = int(10.0 * sr) end = int(11.0 * sr) window = y[start:end] fft = np.fft.rfft(window * np.hanning(len(window))) freq = np.fft.rfftfreq(len(window), d=1 / sr) amp = np.abs(fft) # 找能量最高的前 5 个频率 top_indices = np.argsort(amp)[-5:][::-1] for idx in top_indices: print(f"{freq[idx]:.2f} Hz, amplitude={amp[idx]:.2f}")这个脚本会输出某一段音频里能量最大的几个频率,你可以对照 3.1 节的 MIDI 频率表判断它们接近哪些音符。需要提示的是,频谱峰值会受到泛音和混音影响,只能作为辅助,不要完全替代听音。
6. 常见问题与排查思路
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| 低音完全听不清 | 耳机低频响应差或混音里低音被掩蔽 | 用低通滤波单独听贝斯频段 |
| 速度忽快忽慢,对不上拍子 | 原曲使用了自由速度或变速 | 先标记段落边界,再逐段处理 |
| 和弦听起来“多一个音” | 中间层可能是经过音或装饰音 | 先保留根音和核心三度音,再判断外音 |
| 降速后音高也变了 | 使用了“改变速度”而不是“改变节拍” | 用 Audacity 的“改变音高与速度”或 ffmpeg atempo |
| MuseScore 里节奏对不齐 | 拍号判断错误 | 重新听重音,确定正确拍号 |
| Python 分析结果和听力不一致 | 分析窗口太大或频谱被泛音干扰 | 缩短分析窗口,结合多个频段观察 |
6.1 低音听不清怎么办
这是最常见的扒谱问题。解决思路是把音频复制一份,用 Audacity 的低通滤波滤掉 200Hz 以上的内容,然后再降速播放。如果没有明显改善,可以再降低截止频率到 150Hz。耳机方面,封闭式头戴耳机通常比普通耳塞更容易表现低频细节。
6.2 和弦总是判断不准确
和弦判断不准往往不是听力问题,而是声部太多导致注意力被干扰。建议先用 MIDI 键盘或者纯音把低音弹出来,然后只关注和弦中最高音和最低音之间的音程。如果最高音是根音上方的大三度,基本可以确定是大三和弦;如果是小三度,则是小三和弦。七和弦和挂留和弦可以在基础三和弦确定后,再逐音添加判断。
6.3 速度特别快的乐段处理
遇到快速琶音或密集音符,不要用 100% 速度死磕。先把速度降到 50%,听完音符轮廓,再逐步提升到 70%、85%。如果降到 50% 依然听不出具体音高,就配合频谱图找峰值频率,把每个峰值对应的 MIDI 音符先列出来,再连成旋律线。
6.4 原曲有轻微跑调
一些抓轨音频或现场版本可能存在微小音高偏差,导致每个音都夹在两个半音之间。这种情况建议在 DAW 里用音高修正插件把段落整体移动若干音分,先对齐到标准调性,再继续扒谱。对游戏 OST 来说这种情况很少,但不同版本的音频确实有可能存在差异。
7. 最佳实践与工程建议
7.1 文件和命名规范
每次扒谱建议把所有音频和工程文件统一归档。处理后的音频可以在名字后缀写明处理方式,比如bass-only-200hz、tempo-75、section-A-loop。这样可以避免扒到一半时搞不清楚某个文件是哪个版本。
7.2 分层记录,不要只记旋律
很多人扒谱只记主旋律,最后发现和声和低音完全没概念。建议在项目开始时就建立melody.md、chords.md、bass.md、drums.md四个笔记文件,每扒完一段就把结果填进去。这个习惯在整理长曲子和多段落曲目时尤其重要。
7.3 用颜色标记不确定内容
在 MuseScore 或 DAW 里,可以用颜色标注听感不确定的音符。比如蓝色表示确定,红色表示存疑。完成后把红色音符集中复核一遍。这样能减少“整体扒完但某几个和弦错得离谱”的情况。
7.4 定期备份工程文件
MuseScore 和 DAW 工程文件建议做好多版本备份,可以手动复制,也可以用 Git 管理。虽然谱面文件体积不大,但频繁修改后还是容易覆盖重要版本。建议每完成一个段落就另存一个版本。
7.5 注意版权边界
扒谱本身是学习行为,但公开发布谱面、MIDI 或改编视频时,要注意原曲版权的约定。Deltarune 的 OST 属于游戏官方版权所有,个人学习与交流使用通常没问题,但商用或大规模传播需要谨慎。在 CSDN 等平台分享时,建议注明原曲来源与作者,并且不把扒谱成果包装成原创曲目。
7.6 不要迷信频谱分析
音频分析工具能显示能量分布,但不能直接告诉你调性和音乐语法。一个 440Hz 的峰值可能是 A4,也可能是 A3 的二次谐波,甚至可能来自失真的互调产物。所以频谱图适合做参考,但最终判断一定要用自己的耳朵和乐理知识。
7.7 保持听感校准习惯
练耳是一个积累过程。可以每隔一段时间做一次基础听音练习,比如听单音、听音程、听三和弦,这样扒谱时反应速度会明显提升。扒谱学到的音高感,本质上是一次次“听-判断-验证”循环积累出来的。
8. 总结与学习路线
扒谱是一项需要耐心和系统方法的技能。从《Sunset of Seven Suns》这首曲子入手,你至少可以完整经历“音频准备 -> 段落规划 -> 降速听辨 -> 旋律和弦低音记录 -> 制谱导出 -> 校对调整”的全流程。这篇文章的核心是让你掌握一套可复用的方法,而不是只针对某一首曲子。
完成第一次扒谱后,下一步可以尝试:
- 换一首同样来自《Deltarune》的曲子,练习不同配器和节奏型。
- 尝试给扒出的旋律配上自己的和弦进行,做一个小改编。
- 学习更多音乐理论,比如调式互换、转调、重属和弦,这些都会让扒谱时的“猜和弦”变成“推导和弦”。
- 了解 DAW 里的 MIDI 编辑和音色调制,探索游戏音乐音色是如何合成的。
我的个人建议是:扒谱的时候,每完成一段就用 MIDI 播放一遍,闭上眼睛听,感受这段和声是否站得住。如果哪里感觉多余或空泛,不要急着改谱面,先回到原曲听三遍,再决定是保留还是调整。多次循环之后,你对音乐的判断力会明显提升。
如果这篇文章对你有帮助,可以先收藏,然后打开 Audacity 和 MuseScore 实际动手扒一段八小节的主旋律。扒谱这件事,听十篇教程,不如完整扒完一首曲子。