一直都是用 Overture 在寫譜。這套軟體做得相當強大,重點是非常容易上手,也不知為何中文圈裡大家都用這套(流*鋼琴網那個 Overture 4.1 應該是破解的吧,不知為何大家都說是免費正版)然而 Overture 本身已經很久沒更新,編輯上有些 bug 無解、缺乏顫音符號(tremolo)、也無內建 PDF 輸出、.ove
可攜性非常差、用 Acrobat Pro 輸出 PDF 也會有很多(可重現的)靈異現象。種種原因,一直想要換一套來寫,不過實在找不到比 Overture 的 UI 更好的替代品。
Musescore 2 最近 released 了,UI 比以前進步不少,雖然打譜的操作邏輯個人依舊覺得挺累人又不太好學,不過有電鋼琴或電子琴 MIDI input 輸入的話,打譜效率挺令人滿意。
進入正題,今天試著把 ove 轉成 MusicXML,可以保證檔案未來的可攜性(目前主流軟體都支援),以後要用哪套再說。不過還是會遇到一些問題,在此做個筆記。
雖然 Musescore 號稱實驗性的支援
.ove
,但實際使用卻沒幾個檔案能順利開啟、讓 Musescore 不斷無預警跳出,不靠譜。
步驟與注意事項
還有另一套叫做ove2xml,不過其實它的作者跟現在維護 Musescore ove 模組的就是同個人,兩者轉檔能力應該一樣…,不要跟我們這次需要用的 ove2xmly 搞混了。
- 下載 ove2xmly
- 把所有要轉的 ove 檔用 Overture 打開、把裡面所有的 non-ASCII 字元刪掉,不然 ove2xmly 會爆掉。(雖然 ove2xmly 是 open source,但我不會 C++ 不然應該可以治本一下…)
- 檔名、路徑也記得必須全 ASCII 字元。
- 用
ove2xmly
轉檔。
這時轉出來的 MusicXML 檔其實 Musescore 一讀取就會瞬間當掉跳出,這應該是 Musescore 的問題(懶得找原因了)。不過沒關係,Finale 可以正常讀取這些檔案(畢竟大廠做的可能容錯也做得比較好)。但又不是音樂系沒有 Finale 怎麼辦?好消息是 Finale 的超陽春免費版 Finale NotePad 也一樣支援 MusicXML 的讀取與匯出。用 Finale NotePad 打開 ove2xmly
吐出的 xml
後,按 Alt-f m e
就可以再次匯出成 Musescore 能夠正確讀取的 MusicXML 3 格式。
版本控制一下這些 xml 吧,做錯方便回復
Finale NotePad 開啟 MusicXML 檔案時出錯?
我這次轉的 50 幾個檔案中有 5 個檔案 Finale NotePad 也無法正確開啟,會說什麼檔案中包含超出 Unicode 範圍的字元。這可能是因為 ove 檔中有一些非 ASCII 字元沒刪除乾淨,原因不明。不管怎樣,反正檔案不多,最快的解決方法就直接用 Emacs(或任何你習慣的文字編輯器)開啟該 MusicXML 檔,把檔案中顯示不正常的字元刪掉,例如用 Emacs 讀取的話,會看起來像這樣:
1 | <creator type="composer">\350\229\337\086\</creator> |
那堆反斜線和數字是有問題的字元,刪掉就對了。沒刪除乾淨的話在存檔時 Emacs 會通知你哪裡還有問題。
我只會 Emacs,其他文字編輯器要怎麼做我也不知道,不過應該大同小異。
(可選)替換掉版權宣告
好啦,現在譜是你寫的,但 ove2xmly
硬是把你譜面中的版權宣告全改成(!C) 2008-11 Irvine Greene
了,雖然非常感謝這位作者做出這個拯救眾生的 converter,但這種情況還是不允許的!cd
進目錄,sed
一行解決:
1 | for f in *.xml; do sed -i 's/(!C) 2008-11 Irvine Greene/(C) 2012-2015 kuanyui.github.io/g' $f; done |
現在 Musescore 應該能夠順利開檔了
步驟有點麻煩,不過因為我只有 5, 60 幾個 ove 檔案需要轉,全部弄完不會花太多時間。如果真的有大量轉檔需求,應該可以研究一下 ove2xmly
的 code 是怎麼寫的。
話說之前想學 Lilypond,不過現在已經完全放棄了,那種可讀性跟 brainfuck 有得拼的語法不是凡人能用的。不相信的話去 Mutopia Project 網站上找個 .ly
檔案看一下範例就知道我在說什麼了了。