ByteScope

BPM & Key Finder

一次把一堆歌丟進來,速度、調性、Camelot 與 Open Key 代碼、第二候選的調,一張表全部看完。每首歌都在瀏覽器的 Web Worker 裡分析,完全不上傳。速度抓錯了就跟著拍幾下修正,再匯出 CSV 或複製 JSON 到你的歌單或試算表。

檔案不會離開你的瀏覽器 — 全部在本機處理。

把歌拖到這裡,或點一下選檔案

音訊或影片檔都可以,一次可以丟好幾首。不會上傳。

分析範圍

中段 60 秒會跳過前奏和結尾。切換之後,已經分析完的歌會重新解碼、重新分析。

加入歌曲之後,BPM 和調性會列在這裡。

手動點拍

跟著節拍點按鈕,或是在這個區塊有焦點時按空白鍵。點滿 4 下就會覆寫所選歌曲的 BPM;只算最後 8 下,停超過 2 秒就重新開始算。

先加入一首歌。

這個工具判斷不了的事

  • BPM 常常有半速、倍速的歧義(87 還是 174),分析看到兩個都有可能時,兩個都會列出來。
  • 速度會變的歌(現場錄音、古典樂、自由速度)只會得到一個平均值,信心也會很低。
  • 調式音樂、無調性音樂、中途轉調的歌,調性偵測都不可靠。最常搞混的是關係大小調(C 大調和 A 小調),所以會一起列出第二名。
  • 檔案的解碼和分析都在這個分頁裡完成,不會上傳。

歌在影片裡?先把音軌抽出來 →

關於這個工具

要排歌單的 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 組大小調輪廓都對不太上;中間轉調的歌整首只會給一個調,目前沒有做轉調追蹤。可信度那一欄請照字面理解:高,代表節拍和調中心都很清楚;低,代表這首歌本來就沒有一個清楚的答案可以給。

常見問題

我的歌會被上傳嗎?

不會。每個檔案都由瀏覽器裡的 Web Worker 解碼、分析,什麼都不會送到伺服器,這一頁也沒有伺服器。所以不用等傳輸——一次丟進來的歌就在你自己的機器上一首接一首算完。檔案和結果都不會被記錄下來。

BPM 剛好是我預期的一半或兩倍,為什麼?

因為兩個都是真的。起音偵測找的是重複出現的脈動,而 87 BPM 的脈動在 174 一樣重複得很好;聽的人會把哪一個叫做速度,要看曲風和律動,演算法沒辦法知道。非選不可的時候,這一頁會偏好 120 BPM 附近的值;兩種讀法強度接近時就兩個數字都列出來。如果你要的那個沒出現,自己拍速度——按鈕或空白鍵拍四下以上,那一列的值就會被取代。

它說是 C major,但這首歌明明是 A minor,是錯了嗎?

不一定,而這正是為什麼要顯示第二候選。C major 和 A minor 共用同樣七個音,所以一分鐘平均下來的 chroma 輪廓兩者看起來幾乎一樣;Krumhansl–Kessler 的輪廓對主音和五度加了權重,大多數情況分得開,但不是每次。第二候選是關係大調或小調、分數又很接近時,去聽樂句結尾落在哪個音。對 DJ 混音來說其實差別不大:8B 和 8A 在 Camelot 輪上是相鄰的,本來就能混在一起。

Camelot 和 Open Key 代碼是什麼意思?

同一個概念的兩種寫法——把 24 個調排在一個輪子上,讓合得來的調彼此相鄰。Mixed In Key 推廣的 Camelot 系統把調編成 1 到 12 號,小調是 A、大調是 B;號碼差一、或同號的 A 和 B,共用大部分的音,混在一起不會打架。Open Key 是 Traktor 等軟體用的,一樣是 1 到 12,小調標 m、大調標 d,輪子的轉法不同。A minor 在 Camelot 是 8A,在 Open Key 是 1m。

為什麼只分析中間的 60 秒?

因為前奏和尾奏最容易誤導:沒有節拍的前奏、淡出、現場錄音的掌聲、講話的尾奏,都會削弱起音的規律和 chroma,卻不能代表這首歌。中間那一分鐘通常是副歌或主要的律動。歌短於一兩分鐘、懷疑中途變速、或中段剛好是 breakdown 的時候,再切換成整首分析。

可信度的數字代表什麼?

代表這首歌給出單一答案的清楚程度。數值高,表示節拍和調中心都很明顯;數值低,表示節拍很輕或在飄、中途變速,或是調性跟 24 組大小調輪廓對不上——古典、彈性速度、調式、無調性的音樂常落在這裡。它衡量的不是歌好不好,而是偵測器有多確定;數值低就是在提醒你自己聽一遍。

中途變速或轉調的歌跟得上嗎?

還不行。這一頁每首歌只給一個速度、一個調。變化的速度會被平均,轉調的歌會拿到分析區段裡佔上風的那個調中心,兩種情況的可信度都會比較低。已知會轉調的歌,用整首分析看看整體是哪個調勝出,然後把第二候選當成「另一段」的提示,不要當成錯誤。