LilyPond Advent Calendar 2017 12月17日の記事です。
こんばんは、 norisio (aka. skb_apos) です。
TL; DR
GUI ソフト → MusicXML → (musicxml2ly) → LilyPond ソース
musicxml2ly は python2 スクリプト
MusicXML とは
MusicXMLは、XML形式の楽譜表記のためのオープンなファイルフォーマットである。
(中略)
FinaleやSibelius、Rosegarden、Notionなどの楽譜作成ソフトウェアによって作成することが可能である。
つまりは、「楽譜」の「共通フォーマット」ということですね。 LilyPond のパッケージには、この MusicXML を LilyPond ソースに変換するスクリプトが付属しています。
これを使うことによって、
- 最初は他の GUI ソフトで MIDI キーボード を使ってゴリゴリ打ち込み
- 変換して LilyPond で浄書
というフローをとることができそうです。
実際にやってみる
GUI ソフトで音符を打ち込み、 LilyPond ソースに変換して組版をかけてみます。
Musescore で打ち込み
できました。
強弱記号(デフォルト位置からずらす)、フェルマータを入れてみました。
これを、 gakufu.xml として MusicXML 形式でエクスポートしておきます。
musicxml2ly で処理
コマンドラインから musicxml2ly に MusicXML を食わせます。
$ /path/to/musicxml2ly gakufu.xml
Mac で LilyPond パッケージ版の場合、スクリプトは /Applications/LilyPond.app/Contents/Resources/bin/musicxml2ly にあります。
Windows でインストーラを使ってインストールした場合、 C:\Program Files (x86)\LilyPond\usr\bin\musicxml2ly.py にあります。
注意: python コマンドで起動する Python インタプリタが Python 3 系であると動作しません。 Python 2 系が起動するように変更してください。
LilyPond で組版
歌詞が少し消えていますが、変換自体は概ね正しいものです。
musicxml2ly の出力の特徴
Musescore からの変換しか試せていませんが、概ね次のような特徴をもったソースを吐き出します。
- 歌詞・パートはそれぞれの変数に代入される
- 一部複数ボイスがあると
s1が量産される Voice ができる
- 一部複数ボイスがあると
- Staff にひとつあればよい記述 (
\barなど) が全てのパートに存在こともある - 連桁はすべて陽に記述される (
autoBeaming = ##f) - 改行・改ページはすべて
\break,\pageBreakで陽に記述される - 小節チェック
|の箇所で改行され、小節番号がコメントされる
おわりに
LilyPond は打ち込み用のソフトウェアではないので、こういった分業もけっこう「あり」だと思います。
