關於這個工具
要排歌單的 DJ 想知道每首歌的速度和 Camelot 代碼;歌手或翻唱樂團想先知道原曲是什麼調,再決定要移到哪裡;在編跑步歌單的人想找穩穩維持 170 BPM 的歌。這一頁一次回答這些問題,而且可以一次處理很多檔案。把 MP3、M4A、WAV、OGG 或 FLAC 丟進來——一次丟很多首也行——表格就會一列列填上檔名、長度、精確到 0.1 的 BPM、可信度、調性(例如 A minor)、它的 Camelot 代碼(8A)和 Open Key 代碼(1m),以及第二候選的調。檔案在瀏覽器裡的 Web Worker 一首一首分析,沒有任何一首會上傳,所以第一個結果在第一個檔案解碼完就出現,不用等傳輸。
速度是怎麼算出來的
預設分析每首歌中間的 60 秒,跳過常常沒有節拍或節拍不清楚的前奏和尾奏;你也可以切換成分析整首。音訊先轉成頻譜通量的起音包絡——聲音裡每出現新東西就冒出一個尖峰的曲線——再對這條包絡做自相關,看起音之間哪個間距重複得最強。候選有好幾個時,用一個偏好 120 BPM 附近的先驗來拍板,最後再做一次精細搜尋,把數值在 60–200 BPM 的範圍內定到 0.1 BPM。半拍和倍拍是真的分不出來——174 BPM 的 drum and bass,在 87 也有一個實實在在的脈動——所以兩種讀法都很強的時候,表格會同時列出兩個數字(87 / 174),而不是假裝只有一個答案。
調性是怎麼判斷的
分析的那一段會縮成 12 格的 chroma:十二個音級各自分到多少能量,再對時間取平均。這個輪廓拿去跟 Krumhansl–Kessler(1982)的 24 組調性輪廓——大調、小調各 12 個——做相關,相關最高的就是顯示的調。第二高的也會顯示,因為最常見的混淆就是關係大小調:C major 和 A minor 用的是同樣七個音,光靠 chroma 平均常常分不出來。如果第二候選是關係調、分數又跟第一名很接近,先聽聽歌曲最後停在哪個音,再決定要信哪一個。Camelot 代碼依照 Mixed In Key 的慣例:數字相鄰、或同一個數字的 A 和 B,混在一起和聲上是順的;Open Key 是其他軟體用的同一套東西的另一種寫法。
手動修正速度
偵測結果不對的時候,跟著音樂按下 tap 按鈕或空白鍵至少四下,最近八下的平均就會取代那一列的 BPM。要解決半拍/倍拍的讀法,或是幫節拍很輕的歌定速度,這是最快的方法。表格看起來都對了,就匯出成 CSV 給試算表用,或複製成 JSON——兩種都包含檔名、長度、BPM、可信度、調性、Camelot 與 Open Key 代碼和第二候選的調。
哪些情況數字不可靠
偵測器假設一首歌只有一個速度、一個調。中途變速的歌、越彈越快的現場錄音、彈性速度的古典樂,都只會得到一個平均值和偏低的可信度,而那個低的可信度就是在提醒你自己聽一遍。調式音樂、無調性音樂、轉調很多的音樂跟 24 組大小調輪廓都對不太上;中間轉調的歌整首只會給一個調,目前沒有做轉調追蹤。可信度那一欄請照字面理解:高,代表節拍和調中心都很清楚;低,代表這首歌本來就沒有一個清楚的答案可以給。