夜光 MML工坊

MIDI 與五線譜轉譜

把 MIDI 檔、五線譜的 PDF 或照片,變成瑪奇能演奏的樂譜

  1. 為什麼不能直接轉
  2. 操作步驟:MIDI 檔與五線譜
  3. 音軌清單怎麼讀
  4. 七種採樣模式
  5. 份數額度
  6. 匯入之後要檢查什麼
  7. 已知的限制

為什麼不能直接轉

MIDI 與 MML 表達能力差很多,這是整件事的根源:

MIDI瑪奇 MML
同時發聲一個聲部可以同時響好幾個音一軌同時只能響一個音
聲部數量16 個 channel,各自不限一份樂譜 4 軌(旋律、和音1、和音2、歌唱)
樂器同一軌中途可以換一軌一個樂器,中途不能換
時間精度非常細,可以記錄真人演奏的微小誤差要落在格子上才寫得出來

所以轉換的本質是取捨:從每個瞬間好幾個音裡挑一個留下來。轉出來的東西一定比原曲少,問題只在於「少掉的是不是你在意的那些」——而那正是採樣模式在決定的事。

五線譜也是同一回事,而且多背一層。一份鋼琴譜的兩隻手、一個和弦的四個音,落到瑪奇的 4 軌上照樣得挑;差別在五線譜還要先過一道「把圖看成音符」的辨識,而那一層會讀錯——MIDI 不會,MIDI 裡的音高與時間是寫死的數字。所以五線譜比 MIDI 多一項要檢查的東西,見已知的限制

操作步驟:MIDI 檔與五線譜

兩種來源送進去的方式不一樣,但送進去之後走的是同一條路——都會開出同一份音軌清單、用同一組採樣模式、受同一個 16 份的額度管。挑你手上那一種看,看完接著讀音軌清單怎麼讀

MIDI 檔

  1. 編輯器標題列點檔案
  2. 在匯入區塊選你的 .mid
  3. 檔案框會自己關掉,換成音軌清單
  4. 勾選要匯入的列,每一列各自選一種採樣模式
  5. 匯入

五線譜圖片或 PDF

這一條要先登入。辨識跑在我們的伺服器上,是全站唯一需要登入的匯入方式。那顆按鈕在你選檔之前就會擋下來,不會等你把圖排好了才說。

  1. 編輯器標題列點檔案
  2. 在匯入區塊按選擇 PDF 或圖片…——跟 .mid 選檔同一塊,在它下面
  3. 選檔案進來,縮圖可以拖曳排順序
  4. 開始辨識,等它跑完
  5. 接下來就是音軌清單,跟 MIDI 完全一樣

有 PDF 就傳 PDF。整份一次辨識,速度與拍號跟著整首曲子走,也不用自己挑解析度。只有圖片的話,一首曲子就是一疊圖,掃描建議 300 DPI 以上——手機翻拍明顯比掃描差

縮圖的順序就是頁序,排錯整首就錯。由左上到右下就是它讀的頁數順序。第 3 頁排到第 5 頁去,接出來的曲子是錯的,而且辨識本身不會報錯——它只是照著你給的順序讀。送出前對一次。

能傳什麼
圖片最多 12 張,PNG 或 JPEG
PDF一份40 頁以內。不能跟圖片混著傳
大小每個檔最大 20 MB,全部加起來 25 MB

辨識要幾十秒到幾分鐘,中途不要關掉那個框。離線也不行——圖片照樣排得起來,但開始辨識會停用,要等回到有網路。中間任何一頁失敗都不會匯入半份結果;原本那疊檔案會留在畫面上,換掉出問題的那一張再試就好。

音軌清單怎麼讀

兩種來源開出來的是同一個框,最上面先決定一件事:匯入預設是新採譜,會取代全部樂譜。要接在現有內容後面,得改選追加採譜——真的會蓋掉東西時那個框自己會先警告。所以想分次匯入不同聲部,第二次起記得改選追加。

清單上每一列會顯示 Ch 3 · Bright Acoustic Piano 這樣的格式。兩個地方值得說明:

一列不是一個 channel

一列代表一組(MIDI 音軌, channel)的組合,不是單純照 channel 分。原因是鋼琴譜常常把左右手寫成兩個音軌卻共用同一個 channel——照 channel 合併會把左右手混在一起,採樣器要在兩隻手之間挑,採出來的東西沒辦法聽。

同樣地,也不會因為一軌中途換了樂器就把它拆開。瑪奇本來就做不到軌中途換樂器,拆了也表達不出那個變化,只會白白佔掉兩個軌位而且兩軌都半空。這種列會標上「▸ N 種音色」提醒你。

顯示的是 GM 音色名,不是軌名

這是刻意的。軌名是人打的自由文字,GM 音色是機器寫的、播放器真的會照著發聲的值。實際遇過的檔案:

檔案裡的軌名實際的 GM 音色
MIDI mainVibraphone(鐵琴)——從軌名完全看不出來
MIDI violinString 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 個鼓面各佔一列的排法——採進來之後怎麼編,見打擊樂器捲簾

分解和弦會被正確採到

採樣規則是任何新的音進場都切斷目前那個音,不管新的音比較高還是比較低。所以錯開進場、一起放開的分解和弦(CEG)會採成 c16 e16 g2..,而不是整段都是最高的那個 G。如果規則寫成「每一段取最高音」,琶音會整個消失。

份數額度

一次最多匯入 16 份樂譜,而且算的是加總。超額時會顯示紅字告訴你超了幾份,匯入鈕會停用。

每一列的份數都是實算的,不是照最壞情況估。所以模式下拉裡寫的就是這一列真正的數字——和弦全採(10 份)的意思就是它會佔 10 份,勾下去計數器也是加 10。

這件事最有感的是和弦全採不再吃滿全場:一列只需要 4 份的話,旁邊照樣放得下鼓、放得下別的聲部。以前它一律算 16,於是勾了它再勾任何一列都會變紅字。

同一列的份數跟採進來的結果一定一致——清單上的數字與實際匯入走的是同一次計算,不會出現「說 9 份、進來 10 份」。

匯入之後要檢查什麼

  1. 五線譜的話,先對著原譜看一遍。 辨識讀錯的音在編輯器裡跟你自己畫的長得一模一樣——沒有紅字、沒有警告,因為那是一個合法的音符,只是不是譜上印的那一個。能告訴你哪裡錯的只有原譜。
  2. 先按演奏聽一遍。 採樣規則沒有「錯誤」這種狀態,採歪了不會報錯,只會聽起來怪。
  3. 看字數。 匯入的結果通常會超過遊戲設定的字數。超了看下一點。
  4. 需要壓字數就用工具列的「優化」。 裡面六個方式分三類:無損壓縮重組壓縮一個音符都不動;非標準時值壓縮貼進遊戲也一個音都不變,但站內的捲軸與播放會偏;音長補滿/部分補滿/尾段收音會改變音符長度(延音或收音),但不會動到任何一個音的進場時間,所以節奏在結構上不可能被改壞。一次只能選一個,跑完會告訴你省了幾個字。
  5. 檢查樂器。 匯入不會自動選瑪奇的音色,那要你在分頁上自己挑。
  6. 調力度。 伴奏軌壓低幾格,主旋律才浮得出來。

已知的限制

兩種來源的限制性質不一樣,分開看比較不會誤會。MIDI 的限制是「表達能力對不上」——同一個檔案轉幾次結果都一樣,可以預測;五線譜多背一層「辨識會讀錯」,那是機率性的,同一份譜換個解析度、換成 PDF,結果就可能不同。

先講兩種都會遇到的:

只有 MIDI 會遇到

只有五線譜會遇到

還沒看過 MML 語法?先讀 瑪奇 MML 語法教學,匯入之後要手動修的時候會用到。不熟編輯器的操作看編輯器入門編輯器功能說明。其他問題看常見問題