指南)
扒譜這件事最考驗人的往往不是識譜能力而是“明明聽到了旋律卻不知道它在譜面上對應(yīng)哪個音”。本文以《Deltarune》OST 中的《Sunset of Seven Suns》為解析對象整理一套從音頻分析、樂理判斷到最終出譜的完整扒譜流程。無論你是想復(fù)刻游戲音樂、做視頻改編還是單純想提升聽音能力這套方法都可以直接復(fù)用。文章會覆蓋工具選擇、音樂基礎(chǔ)、降速技巧、Python 輔助分析、常見問題排查等內(nèi)容盡量做到每一步都有可執(zhí)行方案。開始之前先說明一點這首曲子的具體小節(jié)結(jié)構(gòu)、調(diào)性和配器以你手上實際音頻版本為準(zhǔn)。不同抓軌版本、不同播放器均衡設(shè)置都會造成聽感差異所以扒譜過程中的反復(fù)校對比“第一次就聽準(zhǔn)”更重要。1. 背景與核心概念1.1 什么是扒譜“扒譜”這個詞在音樂愛好者圈子里很常見通俗講就是把別人作品里的音符聽寫下來。它不只是記錄主旋律還包括和弦、低音、節(jié)奏型、力度變化、音色層次等維度。對于游戲音樂愛好者來說扒譜是還原樂曲、制作 MIDI、進行二次創(chuàng)作的起點對于音頻算法工程師或音視頻開發(fā)者來說扒譜思維也能幫助理解音頻分析的基本邏輯。從專業(yè)角度定義扒譜是對錄音作品進行逆向分析的行為輸出物可以是五線譜、簡譜、MIDI 文件、和弦譜甚至是一個完整的 DAW 工程。扒譜本身不要求一次聽準(zhǔn)更多是依賴系統(tǒng)的分段訓(xùn)練和工具輔助所以它也經(jīng)常被拿來當(dāng)練耳教材。1.2 為什么選擇《Deltarune》音樂作為練習(xí)對象《Deltarune》是 Toby Fox 繼《Undertale》之后推出的獨立 RPG 作品其原聲帶在玩家群體中有很高的討論度。Toby Fox 的音樂風(fēng)格很特別經(jīng)常在復(fù)古電子音色、chiptune 質(zhì)感和旋律記憶點之間取得平衡節(jié)奏鮮明和聲又不會過于晦澀非常適合作為扒譜練習(xí)素材?;氐健禨unset of Seven Suns》這首曲子標(biāo)題里雖然掛著“扒譜”兩個字但真正有價值的不是“把音符抄下來”而是通過扒譜去理解作曲者如何安排音色、織體和和聲進行。尤其對游戲音樂來說很多聽感來自合成器音色和混音處理譜面只能還原音高與節(jié)奏無法完全還原音色這就需要我們在扒譜過程中把“聽到的聲音”和“寫下的譜子”做雙向?qū)φ铡?.3 扒譜的交付物一次完整的游戲音樂扒譜交付物通常包括主旋律五線譜或簡譜和弦標(biāo)記包括級數(shù)和功能低音或貝斯聲部節(jié)奏型說明MIDI 文件音色與力度標(biāo)注如果后續(xù)要做翻彈、編曲或視頻演示這些信息都會非常有用。本文會以這些交付物為目標(biāo)按步驟展開。2. 環(huán)境準(zhǔn)備與工具選擇2.1 硬件與系統(tǒng)要求扒譜對硬件要求不高關(guān)鍵是一個能聽清中低頻的耳機或監(jiān)聽音箱。普通耳機可以用但如果 100Hz 以下的低頻聽不清后期就需要借助頻譜圖或 EQ 濾波來輔助判斷。操作系統(tǒng)方面Windows、macOS、Linux 都可以下面提到的工具也都有跨平臺版本。2.2 核心軟件清單軟件用途費用說明Audacity音頻降速、濾波、循環(huán)播放免費開源操作簡單適合快速處理音頻Sonic Visualiser頻譜觀察、峰值標(biāo)記、諧波分析免費開源專業(yè)音頻可視化分析工具MuseScore寫譜、導(dǎo)出 PDF/MIDI免費開源制譜軟件跨平臺DAW多軌扒帶、MIDI 編輯部分付費可選 Reaper、FL Studio、Logic Pro、Cubase如果不想一開始就裝太多軟件可以先從 Audacity 加 MuseScore 的組合開始這兩款足夠完成基礎(chǔ)的扒譜與制譜。2.3 Python 輔助環(huán)境可選如果你習(xí)慣用腳本處理音頻可以安裝 Python 3然后安裝幾個常用庫pip install librosa numpy matplotlib其中 librosa 是音頻分析庫numpy 負責(zé)數(shù)值計算matplotlib 用來畫頻普圖。后續(xù)章節(jié)會給出幾個可直接運行的輔助腳本。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 放最終譜面工程。這樣的結(jié)構(gòu)在項目后期會非常方便回溯。3. 核心原理扒譜需要掌握的音樂基礎(chǔ)3.1 音高與 MIDI 音符換算扒譜最終要把聽到的聲音映射到譜面而音高和頻率之間的關(guān)系是可以精確計算的。MIDI 規(guī)范里69 號音符對應(yīng) A4標(biāo)準(zhǔn)音頻率為 440Hz。任意音符頻率的計算公式是f 440 * 2^((n - 69) / 12)其中 n 是 MIDI 音符編號比如中央 C 是 60。用 Python 實現(xiàn)如下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))運行結(jié)果60 261.63 64 329.63 67 392.0 69 440.0這段代碼很實用當(dāng)你從頻譜圖上看到某個峰值的頻率就可以反推它最接近哪個音高。比如看到 392Hz 左右的大能量峰值基本可以判斷是 G4。3.2 調(diào)性判斷判斷一首曲子是什么調(diào)最直接的方法是聽結(jié)尾。大多數(shù)音樂會在結(jié)尾回到主和弦最后一個音或最后一個和弦往往就是調(diào)性中心。之后再結(jié)合譜面里的升降號判斷是大調(diào)還是小調(diào)。游戲音樂常用自然大調(diào)與自然小調(diào)但 Toby Fox 也經(jīng)常使用多利亞、利底亞這類調(diào)式營造特殊氛圍。如果你發(fā)現(xiàn)結(jié)尾和弦“既像大調(diào)又像小調(diào)”可以先標(biāo)記出全曲出現(xiàn)頻率最高的幾個和弦再判斷是哪種調(diào)式。3.3 節(jié)拍與速度判斷扒譜前先確定速度和拍號否則后續(xù)音符時值會一頭霧水。操作方法是在 DAW 或節(jié)拍器里按住一個鼓點或低頻脈沖對拍先感覺大致 BPM再用節(jié)拍器微調(diào)。確定拍號時注意重音規(guī)律四拍子重音在每小節(jié)第一拍三拍子是“強、弱、弱”。如果原曲節(jié)奏不穩(wěn)或者在樂句之間有自由速度可以先把明顯的小節(jié)邊界標(biāo)出來再逐句處理不要一開始就強行量化。3.4 和弦識別策略和弦識別是扒譜中比較費時間的環(huán)節(jié)。推薦順序是先聽低音確定根音。再聽最高音確定旋律音或和弦外音。用三度疊置關(guān)系試出中間音。判斷顏色是大三和弦、小三和弦、七和弦還是掛留和弦。以《Sunset of Seven Suns》為例如果鋪底是合成器長音和弦切換不會太快可以先抓每小節(jié)第一個和弦再細化后半小節(jié)的變化。這里有個經(jīng)驗不要一次把整個和弦全部聽出來先記錄根音和最低音再逐步補上其他聲部。3.5 配器分層扒譜前先做“配器分層”把混音拆成五層主旋律層人聲、主音合成器、主音吉他和聲層和弦墊底、背景琶音低音層貝斯、合成器低音節(jié)奏層鼓組、打擊樂音效裝飾層過渡音效、噪聲、逆播采樣在紙上或者筆記軟件里把五層和時間軸對應(yīng)起來后面扒每一層時就有一條清晰線索不會在主旋律里迷失。4. 完整實戰(zhàn)流程4.1 段落規(guī)劃開始扒譜前先完整聽三遍原曲。第一遍整體感受情緒和配器第二遍標(biāo)記段落比如前奏、A 段、B 段、間奏、尾奏第三遍確定每個段落的開始時間。在筆記里可以用這樣的表格記錄段落時間范圍主要樂器備注前奏00:00 - 00:12合成器墊底、鼓柔和進入A 段00:12 - 00:34主旋律加入速度穩(wěn)定間奏00:34 - 00:40鼓、低音過渡段落有了段落表后扒譜可以按段落推進不用從頭到尾一次性完成。4.2 降速與變速處理慢速聽是扒譜最重要的基本功。Audacity 里可以直接用“效果 - 改變速度”或“效果 - 改變音高與速度”來處理。其中“改變速度”會同時改變音高適合辨別旋律走向如果想要保持音高不變只放慢節(jié)奏可以用“改變音高與速度”里的“改變速度”選項或者用 ffmpeg 命令行。ffmpeg 的處理方式ffmpeg -i 01-raw.mp3 -filter:a atempo0.75 02-tempo-75.mp3atempo 參數(shù)表示速度倍率0.75 表示變成原來的 75%。注意老版本 ffmpeg 只支持 0.5 到 2.0新版本范圍更寬。如果一次降速太多可以連續(xù)處理兩次ffmpeg -i 01-raw.mp3 -filter:a atempo0.8,atempo0.8 02-tempo-64.mp3這樣能避免單次過度變速帶來的音質(zhì)劣化。4.3 分頻段聽混音中不同樂器分布在不同的頻段用濾波器把它們分離開能降低聽辨難度。Audacity 里可以用“效果 - 低通濾波”和“效果 - 高通濾波”。常見頻段劃分低音鼓與貝斯0Hz - 200Hz中低頻200Hz - 800Hz中頻主體800Hz - 2500Hz高頻與空氣感2500Hz 以上比如要抓低音聲部先復(fù)制一份音頻加上低通濾波 200Hz再降速就能更清楚地聽到貝斯音符的振動頻率。注意濾波器斜率會影響聽感不同曲目需要微調(diào)截止頻率。4.4 主旋律扒譜段落和速度確定后開始扒主旋律。在 MuseScore 里新建樂譜設(shè)置好調(diào)號和拍號然后按小節(jié)錄入。錄入時建議用“單音符試錯法”在原曲播放到某個旋律音時先在鋼琴或 MIDI 鍵盤上試出候選音再用 MuseScore 里的同一音符播放對比。如果聽起來比原曲高就向下調(diào)整半音反之向上調(diào)整直到音高重合。主旋律扒完后先不要急著處理和弦把整段的旋律音高和節(jié)奏記完整然后再進入下一層。4.5 和弦與低音扒譜主旋律完成之后開始扒和聲層和低音層。推薦使用 DAW 的鋼琴卷簾窗在 MIDI 軌中把低音聲部和弦聲部分別放在不同的軌道便于視覺對照。順序仍然是先低音后高音。低音確定了根音和弦中間的填充音會更容易判斷。比如低音是 C主旋律里有 E那么這個和弦很可能是 C 大三和弦如果主旋律里有 Eb那可能是 C 小三和弦或 Ab 大和弦。4.6 連音與裝飾音處理游戲音樂里經(jīng)常會有滑音、裝飾音和十六分音符琶音這些在譜面上需要簡化還是保留取決于使用目的。如果是做還原向譜面要把明顯的裝飾音記錄成小音符如果是做改編向譜面只需要保留和弦骨架和節(jié)奏型。建議扒譜時先把聽到的裝飾音都記下來后期再根據(jù)演奏難度篩選。4.7 導(dǎo)出與校對扒完所有聲部后導(dǎo)出 PDF 和 MIDI然后完整播放一遍 MIDI對照原曲逐段核對速度是否一致小節(jié)邊界是否對齊和弦是否有明顯的色彩偏差低音進行是否流暢如果只聽 MIDI 會覺得“差不多”但在原曲 A/B 切換時發(fā)現(xiàn)和弦別扭就要回到對應(yīng)小節(jié)繼續(xù)調(diào)整。5. Python 輔助分析實戰(zhàn)如果不想全部用耳朵硬聽可以用 Python 做一些客觀輔助分析。下面給出幾個可以直接運行的例子。5.1 讀取音頻基本信息import librosa audio_path audio/01-raw.mp3 y, sr librosa.load(audio_path, sr22050) duration librosa.get_duration(yy, srsr) print(f采樣率: {sr} Hz) print(f音頻時長: {duration:.2f} 秒) print(f采樣點數(shù): {len(y)})這里把音頻統(tǒng)一重采樣到 22050Hz可以加快計算速度。輸出能夠幫你確認音頻時長是否和筆記表格一致。5.2 提取整體速度import librosa import numpy as np audio_path audio/01-raw.mp3 y, sr librosa.load(audio_path, sr22050) tempo, beat_frames librosa.beat.beat_track(yy, srsr) tempo_val float(np.mean(tempo)) print(f自動估計速度: {tempo_val:.2f} BPM)不同版本的 librosa 對 beat_track 的返回值類型有差異有的是標(biāo)量有的是數(shù)組所以這里統(tǒng)一用np.mean取平均。自動估計只能作為參考最終速度還是要結(jié)合你對鼓點的聽感。5.3 用 Chroma 特征觀察和弦傾向Chroma 特征可以把音頻映射到 12 個音名用來觀察某個段落中哪些音高出現(xiàn)得比較多是判斷和弦和調(diào)性的輔助工具。import librosa import numpy as np audio_path audio/01-raw.mp3 y, sr librosa.load(audio_path, sr22050) hop_length 512 chroma librosa.feature.chroma_cqt(yy, srsr, hop_lengthhop_length) print(chroma 形狀:, chroma.shape) print(第 0 幀的 12 維能量:, np.round(chroma[:, 0], 3))輸出中 12 維分別對應(yīng) C、C#、D、D#、E、F、F#、G、G#、A、A#、B 的能量。如果某段音樂在索引 0、4、7 上能量明顯偏高就暗示 C、E、G 三個音出現(xiàn)的概率較高可能對應(yīng) 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, sr22050) # 取中間一小段做短時傅里葉變換 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), d1 / 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 節(jié)的 MIDI 頻率表判斷它們接近哪些音符。需要提示的是頻譜峰值會受到泛音和混音影響只能作為輔助不要完全替代聽音。6. 常見問題與排查思路問題現(xiàn)象常見原因解決思路低音完全聽不清耳機低頻響應(yīng)差或混音里低音被掩蔽用低通濾波單獨聽貝斯頻段速度忽快忽慢對不上拍子原曲使用了自由速度或變速先標(biāo)記段落邊界再逐段處理和弦聽起來“多一個音”中間層可能是經(jīng)過音或裝飾音先保留根音和核心三度音再判斷外音降速后音高也變了使用了“改變速度”而不是“改變節(jié)拍”用 Audacity 的“改變音高與速度”或 ffmpeg atempoMuseScore 里節(jié)奏對不齊拍號判斷錯誤重新聽重音確定正確拍號Python 分析結(jié)果和聽力不一致分析窗口太大或頻譜被泛音干擾縮短分析窗口結(jié)合多個頻段觀察6.1 低音聽不清怎么辦這是最常見的扒譜問題。解決思路是把音頻復(fù)制一份用 Audacity 的低通濾波濾掉 200Hz 以上的內(nèi)容然后再降速播放。如果沒有明顯改善可以再降低截止頻率到 150Hz。耳機方面封閉式頭戴耳機通常比普通耳塞更容易表現(xiàn)低頻細節(jié)。6.2 和弦總是判斷不準(zhǔn)確和弦判斷不準(zhǔn)往往不是聽力問題而是聲部太多導(dǎo)致注意力被干擾。建議先用 MIDI 鍵盤或者純音把低音彈出來然后只關(guān)注和弦中最高音和最低音之間的音程。如果最高音是根音上方的大三度基本可以確定是大三和弦如果是小三度則是小三和弦。七和弦和掛留和弦可以在基礎(chǔ)三和弦確定后再逐音添加判斷。6.3 速度特別快的樂段處理遇到快速琶音或密集音符不要用 100% 速度死磕。先把速度降到 50%聽完音符輪廓再逐步提升到 70%、85%。如果降到 50% 依然聽不出具體音高就配合頻譜圖找峰值頻率把每個峰值對應(yīng)的 MIDI 音符先列出來再連成旋律線。6.4 原曲有輕微跑調(diào)一些抓軌音頻或現(xiàn)場版本可能存在微小音高偏差導(dǎo)致每個音都夾在兩個半音之間。這種情況建議在 DAW 里用音高修正插件把段落整體移動若干音分先對齊到標(biāo)準(zhǔn)調(diào)性再繼續(xù)扒譜。對游戲 OST 來說這種情況很少但不同版本的音頻確實有可能存在差異。7. 最佳實踐與工程建議7.1 文件和命名規(guī)范每次扒譜建議把所有音頻和工程文件統(tǒng)一歸檔。處理后的音頻可以在名字后綴寫明處理方式比如bass-only-200hz、tempo-75、section-A-loop。這樣可以避免扒到一半時搞不清楚某個文件是哪個版本。7.2 分層記錄不要只記旋律很多人扒譜只記主旋律最后發(fā)現(xiàn)和聲和低音完全沒概念。建議在項目開始時就建立melody.md、chords.md、bass.md、drums.md四個筆記文件每扒完一段就把結(jié)果填進去。這個習(xí)慣在整理長曲子和多段落曲目時尤其重要。7.3 用顏色標(biāo)記不確定內(nèi)容在 MuseScore 或 DAW 里可以用顏色標(biāo)注聽感不確定的音符。比如藍色表示確定紅色表示存疑。完成后把紅色音符集中復(fù)核一遍。這樣能減少“整體扒完但某幾個和弦錯得離譜”的情況。7.4 定期備份工程文件MuseScore 和 DAW 工程文件建議做好多版本備份可以手動復(fù)制也可以用 Git 管理。雖然譜面文件體積不大但頻繁修改后還是容易覆蓋重要版本。建議每完成一個段落就另存一個版本。7.5 注意版權(quán)邊界扒譜本身是學(xué)習(xí)行為但公開發(fā)布譜面、MIDI 或改編視頻時要注意原曲版權(quán)的約定。Deltarune 的 OST 屬于游戲官方版權(quán)所有個人學(xué)習(xí)與交流使用通常沒問題但商用或大規(guī)模傳播需要謹(jǐn)慎。在 CSDN 等平臺分享時建議注明原曲來源與作者并且不把扒譜成果包裝成原創(chuàng)曲目。7.6 不要迷信頻譜分析音頻分析工具能顯示能量分布但不能直接告訴你調(diào)性和音樂語法。一個 440Hz 的峰值可能是 A4也可能是 A3 的二次諧波甚至可能來自失真的互調(diào)產(chǎn)物。所以頻譜圖適合做參考但最終判斷一定要用自己的耳朵和樂理知識。7.7 保持聽感校準(zhǔn)習(xí)慣練耳是一個積累過程??梢悦扛粢欢螘r間做一次基礎(chǔ)聽音練習(xí)比如聽單音、聽音程、聽三和弦這樣扒譜時反應(yīng)速度會明顯提升。扒譜學(xué)到的音高感本質(zhì)上是一次次“聽-判斷-驗證”循環(huán)積累出來的。8. 總結(jié)與學(xué)習(xí)路線扒譜是一項需要耐心和系統(tǒng)方法的技能。從《Sunset of Seven Suns》這首曲子入手你至少可以完整經(jīng)歷“音頻準(zhǔn)備 - 段落規(guī)劃 - 降速聽辨 - 旋律和弦低音記錄 - 制譜導(dǎo)出 - 校對調(diào)整”的全流程。這篇文章的核心是讓你掌握一套可復(fù)用的方法而不是只針對某一首曲子。完成第一次扒譜后下一步可以嘗試換一首同樣來自《Deltarune》的曲子練習(xí)不同配器和節(jié)奏型。嘗試給扒出的旋律配上自己的和弦進行做一個小改編。學(xué)習(xí)更多音樂理論比如調(diào)式互換、轉(zhuǎn)調(diào)、重屬和弦這些都會讓扒譜時的“猜和弦”變成“推導(dǎo)和弦”。了解 DAW 里的 MIDI 編輯和音色調(diào)制探索游戲音樂音色是如何合成的。我的個人建議是扒譜的時候每完成一段就用 MIDI 播放一遍閉上眼睛聽感受這段和聲是否站得住。如果哪里感覺多余或空泛不要急著改譜面先回到原曲聽三遍再決定是保留還是調(diào)整。多次循環(huán)之后你對音樂的判斷力會明顯提升。如果這篇文章對你有幫助可以先收藏然后打開 Audacity 和 MuseScore 實際動手扒一段八小節(jié)的主旋律。扒譜這件事聽十篇教程不如完整扒完一首曲子。