MIDI 與五線譜轉譜
把 MIDI 檔、五線譜的 PDF 或照片,變成瑪奇能演奏的樂譜
為什麼不能直接轉
MIDI 與 MML 表達能力差很多,這是整件事的根源:
| MIDI | 瑪奇 MML | |
|---|---|---|
| 同時發聲 | 一個聲部可以同時響好幾個音 | 一軌同時只能響一個音 |
| 聲部數量 | 16 個 channel,各自不限 | 一份樂譜 4 軌(旋律、和音1、和音2、歌唱) |
| 樂器 | 同一軌中途可以換 | 一軌一個樂器,中途不能換 |
| 時間精度 | 非常細,可以記錄真人演奏的微小誤差 | 要落在格子上才寫得出來 |
所以轉換的本質是取捨:從每個瞬間好幾個音裡挑一個留下來。轉出來的東西一定比原曲少,問題只在於「少掉的是不是你在意的那些」——而那正是採樣模式在決定的事。
五線譜也是同一回事,而且多背一層。一份鋼琴譜的兩隻手、一個和弦的四個音,落到瑪奇的 4 軌上照樣得挑;差別在五線譜還要先過一道「把圖看成音符」的辨識,而那一層會讀錯——MIDI 不會,MIDI 裡的音高與時間是寫死的數字。所以五線譜比 MIDI 多一項要檢查的東西,見已知的限制。
操作步驟:MIDI 檔與五線譜
兩種來源送進去的方式不一樣,但送進去之後走的是同一條路——都會開出同一份音軌清單、用同一組採樣模式、受同一個 16 份的額度管。挑你手上那一種看,看完接著讀音軌清單怎麼讀。
MIDI 檔
- 在編輯器標題列點檔案
- 在匯入區塊選你的
.mid檔 - 檔案框會自己關掉,換成音軌清單
- 勾選要匯入的列,每一列各自選一種採樣模式
- 按匯入
五線譜圖片或 PDF
這一條要先登入。辨識跑在我們的伺服器上,是全站唯一需要登入的匯入方式。那顆按鈕在你選檔之前就會擋下來,不會等你把圖排好了才說。
- 在編輯器標題列點檔案
- 在匯入區塊按選擇 PDF 或圖片…——跟
.mid選檔同一塊,在它下面 - 選檔案進來,縮圖可以拖曳排順序
- 按開始辨識,等它跑完
- 接下來就是音軌清單,跟 MIDI 完全一樣
有 PDF 就傳 PDF。整份一次辨識,速度與拍號跟著整首曲子走,也不用自己挑解析度。只有圖片的話,一首曲子就是一疊圖,掃描建議 300 DPI 以上——手機翻拍明顯比掃描差。
縮圖的順序就是頁序,排錯整首就錯。由左上到右下就是它讀的頁數順序。第 3 頁排到第 5 頁去,接出來的曲子是錯的,而且辨識本身不會報錯——它只是照著你給的順序讀。送出前對一次。
| 能傳什麼 | |
|---|---|
| 圖片 | 最多 12 張,PNG 或 JPEG |
| 一份,40 頁以內。不能跟圖片混著傳 | |
| 大小 | 每個檔最大 20 MB,全部加起來 25 MB |
辨識要幾十秒到幾分鐘,中途不要關掉那個框。離線也不行——圖片照樣排得起來,但開始辨識會停用,要等回到有網路。中間任何一頁失敗都不會匯入半份結果;原本那疊檔案會留在畫面上,換掉出問題的那一張再試就好。
音軌清單怎麼讀
兩種來源開出來的是同一個框,最上面先決定一件事:匯入預設是新採譜,會取代全部樂譜。要接在現有內容後面,得改選追加採譜——真的會蓋掉東西時那個框自己會先警告。所以想分次匯入不同聲部,第二次起記得改選追加。
清單上每一列會顯示 Ch 3 · Bright Acoustic Piano 這樣的格式。兩個地方值得說明:
一列不是一個 channel
一列代表一組(MIDI 音軌, channel)的組合,不是單純照 channel 分。原因是鋼琴譜常常把左右手寫成兩個音軌卻共用同一個 channel——照 channel 合併會把左右手混在一起,採樣器要在兩隻手之間挑,採出來的東西沒辦法聽。
同樣地,也不會因為一軌中途換了樂器就把它拆開。瑪奇本來就做不到軌中途換樂器,拆了也表達不出那個變化,只會白白佔掉兩個軌位而且兩軌都半空。這種列會標上「▸ N 種音色」提醒你。
顯示的是 GM 音色名,不是軌名
這是刻意的。軌名是人打的自由文字,GM 音色是機器寫的、播放器真的會照著發聲的值。實際遇過的檔案:
| 檔案裡的軌名 | 實際的 GM 音色 |
|---|---|
MIDI main | Vibraphone(鐵琴)——從軌名完全看不出來 |
MIDI violin | String Ensemble 1——軌名是錯的,那是弦樂群奏 |
©MidiStar(整份 12 軌都一樣) | 各不相同——軌名只是匯出工具的浮水印 |
你要靠這一列決定採樣模式(鋼琴用哪一種、貝斯用哪一種),照一個可能是錯的名字選就會選錯。檔案沒有寫音色時才退回顯示軌名。
Channel 10 是打擊組,會標「打擊」,而且那一列只給兩個鼓模式——GM 規格書把這個 channel 固定成打擊組,那裡的音高是鼓面編號不是音階,用旋律模式採出來只會是一串莫名其妙的音高。但打擊不再是匯不進來的東西:47 條 GM 鼓面各自對照到瑪奇自己的打擊音高,鼓轉得過去。
反過來,其他 channel 七種模式全都給,包含那兩個鼓模式——有些 DAW 匯出時把鼓放在別的 channel,收緊這一邊會做出一條走不出去的死路。已知並接受的代價是:真的把旋律樂器寫在 channel 10 的檔案(非 GM 來源、老 tracker 轉出來的)匯不進來。
七種採樣模式
模式只決定一件事:同一瞬間響了好幾個音的時候,留下哪一個。前五種是給一般聲部的,後兩種是給打擊的。
| 模式 | 留下 | 佔幾份 | 適合 |
|---|---|---|---|
| 旋律重視 | 最高的音 | 1 | 主旋律、右手、長笛、獨奏 |
| 根音重視 | 最低的音 | 1 | 貝斯、左手和弦的根音 |
| 旋律 + 根音 | 高音低音各跑一次,進同一份樂譜的兩條軌 | 1 | 鋼琴編曲 |
| 智能分弦 | 先抽出主旋律,剩下的和弦再拆成最多 3 條伴奏線 | 1–2 | 整首只有一兩個 channel 的編曲 |
| 和弦全採 | 一條聲部一份,盡量一個音都不丟 | 1–16 | 當原料,自己再挑再合併 |
| 鼓組分軌 | 照右手/左手/腳分成 3 條 | 1 | 打擊列 |
| 打擊全採 | 每一種打擊聲各一條,音長會讓路 | 1–16 | 打擊列,當原料自己合併 |
三個推論值得記住:
- 單音的聲部選哪個都一樣。 貝斯、主旋律、獨奏本來就同時只有一個音,旋律重視與根音重視採出來完全相同。
- 「長音被丟掉」不是壞掉,是選錯模式。 一個全音符上面壓一個八分裝飾音:旋律重視採出裝飾音那條線,根音重視採出長音那條線。你要哪一條是你決定的,不是程式猜的。兩條都想留就往下一級的模式走。
- 和弦全採 ⊃ 智能分弦。 先按小的那個聽夠不夠,不夠再改按大的,前面聽到的東西會原封不動地還在裡面。打擊那兩個不是這種關係:鼓組分軌是「一個鼓手彈得出來的一份譜」,打擊全採是「拆到不能再拆的原料」——兩個產品,不是大小兩號。
鋼琴譜先試「智能分弦」。 最常見的匯入素材是鋼琴編曲,整首只有一到兩個 channel——照一對一匯入,瑪奇的軌位會閒置一大半。智能分弦會先把主旋律抽成獨立的一條,剩下的和弦再拆成幾條伴奏線,一份鋼琴 MIDI 就變成「主旋律 + 三條和弦」,聽起來厚很多。只想佔一份樂譜的話用旋律 + 根音,它把高低音放進同一份的兩條軌。
打擊:兩個模式是兩個產品
鼓組分軌把一列鼓當成一個鼓手,照右腳/右手/左手拆成三條,剛好一份樂譜。同一隻手同時要做兩件事時只留力度大的那一下,鼓組以外的打擊(沙鈴、鈴鼓、conga)整批丟掉——它們不是鼓手在打的,硬折進去只會把真的 hihat 擠掉。採出來就能直接貼進遊戲。
打擊全採反過來:每一種打擊聲各自一條,大鼓一條、小鼓一條、hihat 一條、沙鈴一條,誰都不用讓位。瑪奇只有 15 種打擊音色,所以沙鈴會用 hihat 的聲音發出來——但它仍然是獨立的一條,要不要留是你決定的。
它的音長會往後拉,但只拉到「下一次有任何一種鼓打下去」為止,而且最多半拍。這一條是為了合併而設計的:合併時,音符落在別條的音長裡就會被吃掉——所以每一條都刻意在別人要出聲之前收手,幾條合起來才不會掉東西。空出來的時間寫成休止符,小節位置照樣對得起來。
密的地方它自己就短(旁邊隨時有別的鼓在打),空的地方才拉得長。即使如此多數 lane 還是會超過遊戲的上限——那是正常的。合併完按一下「優化」,它會把休止符併回前一個音,字數還會再掉一截。
兩個模式採出來的都是爵士鼓的樂譜,而那種樂譜的捲簾會換成 15 個鼓面各佔一列的排法——採進來之後怎麼編,見打擊樂器捲簾。
分解和弦會被正確採到
採樣規則是任何新的音進場都切斷目前那個音,不管新的音比較高還是比較低。所以錯開進場、一起放開的分解和弦(C → E → G)會採成 c16 e16 g2..,而不是整段都是最高的那個 G。如果規則寫成「每一段取最高音」,琶音會整個消失。
份數額度
一次最多匯入 16 份樂譜,而且算的是加總。超額時會顯示紅字告訴你超了幾份,匯入鈕會停用。
每一列的份數都是實算的,不是照最壞情況估。所以模式下拉裡寫的就是這一列真正的數字——和弦全採(10 份)的意思就是它會佔 10 份,勾下去計數器也是加 10。
這件事最有感的是和弦全採不再吃滿全場:一列只需要 4 份的話,旁邊照樣放得下鼓、放得下別的聲部。以前它一律算 16,於是勾了它再勾任何一列都會變紅字。
同一列的份數跟採進來的結果一定一致——清單上的數字與實際匯入走的是同一次計算,不會出現「說 9 份、進來 10 份」。
匯入之後要檢查什麼
- 五線譜的話,先對著原譜看一遍。 辨識讀錯的音在編輯器裡跟你自己畫的長得一模一樣——沒有紅字、沒有警告,因為那是一個合法的音符,只是不是譜上印的那一個。能告訴你哪裡錯的只有原譜。
- 先按演奏聽一遍。 採樣規則沒有「錯誤」這種狀態,採歪了不會報錯,只會聽起來怪。
- 看字數。 匯入的結果通常會超過遊戲設定的字數。超了看下一點。
- 需要壓字數就用工具列的「優化」。 裡面六個方式分三類:無損壓縮與重組壓縮一個音符都不動;非標準時值壓縮貼進遊戲也一個音都不變,但站內的捲軸與播放會偏;音長補滿/部分補滿/尾段收音會改變音符長度(延音或收音),但不會動到任何一個音的進場時間,所以節奏在結構上不可能被改壞。一次只能選一個,跑完會告訴你省了幾個字。
- 檢查樂器。 匯入不會自動選瑪奇的音色,那要你在分頁上自己挑。
- 調力度。 伴奏軌壓低幾格,主旋律才浮得出來。
已知的限制
兩種來源的限制性質不一樣,分開看比較不會誤會。MIDI 的限制是「表達能力對不上」——同一個檔案轉幾次結果都一樣,可以預測;五線譜多背一層「辨識會讀錯」,那是機率性的,同一份譜換個解析度、換成 PDF,結果就可能不同。
先講兩種都會遇到的:
- 不處理彎音、踏板、力度曲線。 瑪奇的 MML 沒有這些東西。
- 匯入的結果是「照實寫」的,沒有壓過。 整軌一個
l、不合併休止符、不為了省字改寫拼法——這是刻意的,你拿到的是一份好讀好改的譜,而不是一團最短但看不懂的字。代價是字數比壓過的多,所以匯入完看到超標,第一件事是按無損壓縮(實測省 1~18%),它一個音都不會動。
只有 MIDI 會遇到
- 人手彈進去的三連音採不到。 匯入時所有音會對齊到 1/32 音符的格子上,而三連音落不到那個格子上,所以匯入器會先把三連音找出來、放到精確的三等分點(全/2/4/8/16 分五種基底都認得)。但判定的界線是「離三等分點比離格子更近」——演奏錄下來的檔案抖動十幾個 tick,整份都在界線外,會照舊被對齊。打譜軟體或 DAW 做出來的檔案三連音是精確的,採得到。另外三連音那一段之內斷奏會被拉成連奏。理由見常見問題。
- 速度變化會保留,但記得速度是整首共用的(見 MML 語法教學)。
只有五線譜會遇到
- 辨識率最高約九成,一定要人工修。 這不是壞掉,是這項技術現在的水準。把它當成「幫你把音符大致打進去」,不是「按一下就有一份能用的譜」。
- 速度記號常常讀不出來。 讀不到時用的是預設速度,匯入完會講一聲——譜上印的速度要自己填回去。
- 時值讀錯的地方,節奏會頓一下。 一個小節的音符加起來不等於一整個小節時,匯入完會告訴你有幾個小節這樣,那幾處要自己對著原譜修。
- 三連音以外的連音符會被拉到格子上。 三連音跟 MIDI 一樣保留精確的位置(含跨頁接合),五連、七連那些會量化並跳一句警告。
- 不是譜、或解析度太低,會整份退回。 找不到五線譜時它不會硬給你半份結果。掃描建議 300 DPI 以上;有 PDF 就別轉成圖片。
- 手寫譜、拍歪的照片、有摺痕或裝訂陰影的掃描都會讓辨識率掉下來。印刷的譜、擺正、光線均勻,差別很大。
還沒看過 MML 語法?先讀 瑪奇 MML 語法教學,匯入之後要手動修的時候會用到。不熟編輯器的操作看編輯器入門與編輯器功能說明。其他問題看常見問題。