Overture (.ove) 轉成 MusicXML3

一直都是用 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 搞混了。

  1. 下載 ove2xmly
  2. 把所有要轉的 ove 檔用 Overture 打開、把裡面所有的 non-ASCII 字元刪掉,不然 ove2xmly 會爆掉。(雖然 ove2xmly 是 open source,但我不會 C++ 不然應該可以治本一下…)
  3. 檔名、路徑也記得必須全 ASCII 字元。
  4. 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 檔案看一下範例就知道我在說什麼了了。