Emacs+LilyPond=楽譜が作れる


LilyPond を Emacs で満足して使えるようにするための手順の覚え書き。
自分も導入したばかりでこれから本格的に使っていこうという段階です。
Mac の話ですが、Windows とかでもできるはずです。
違ってたら言ってください。

# LilyPond について

LilyPond とはオープンソースのテキストベース楽譜作成ソフトウェア。GNU プロジェクトの一部。
LaTeX みたいなものと思ってもらえれば良い。
なので Emacs や Vim などのテキストエディタを使って楽譜を作成できる。
公式のアプリケーションは LaTeX で言うところの TeXShop(Mac 用)ライクなもので、簡単なエディタとコンパイル機能が備わっている。
コマンドラインから使えれば良いという人は Homebrew で必要なコマンドをインストールできる。
公式ではない GUI ソフトも提供されているらしいけど使い勝手は知らない。

`.ly` を拡張子に持つファイルが LilyPond 用のファイル。

## 例

例えば

    { c d e f g a b c }

というコードは以下のようなものになる。

![test.png](https://qiita-image-store.s3.amazonaws.com/0/13257/045df9f7-3ba1-c024-8f75-300929a6b989.png "test.png")


こういうのも作れます。<sup><a id="fnr.1" name="fnr.1" class="footref" href="#fn.1">1</a></sup>

![black_page.png](https://qiita-image-store.s3.amazonaws.com/0/13257/05745499-d453-3276-10a8-5bc00ad8e2e8.png "black_page.png")

## メリット・デメリット

楽譜が作れる DAW や Finale なんかと比較した場合。
独断で思いついたもの挙げる。

### メリット

-   タダ
-   マウスがいらない
-   重いアプリ立ち上げる必要ない
-   テキストとの親和性高い
-   コードを再利用しやすい
-   公式のリファレンスだけで大体やりたいことができる
-   楽譜をカスタマイズできる (言語は Scheme)

### デメリット

-   WYSIWYG ではない

-   慣れるまでちょっと大変

-   そこそこの熟練者でもリファレンス見なければ分からないことがある

-   あくまで楽譜を書くだけなので録音機能とか無い(MIDI 出力くらいはできる)

## どんな人向けか

-   音楽の教材作りたい人
-   音楽レッスンなどで学んだことをまとめたい人
-   好きなテキストエディタがある人
-   DAW 買うお金がない人

# アプリのインストール

[LilyPond – みんなの楽譜作成: ダウンロード](http://www.lilypond.org/download.ja.html) から。
一応このアプリ使えば GUI でコンパイルできる。
ターミナルからやりたい人は以下。

# コマンドラインから使えるようにする

以下の 2 通りの方法がある。

## Homebrew で lilypond のインストール

    $ brew install lilypond

多分 ghostscript と xquartz が別で必要になるはず。

## LilyPond.app 内にある bin を使う

Homebrew 使わなくても `LilyPond.app/Contents/Resources/bin/` 内にスクリプトが揃っている。
ここにパスを通せば良い。
詳しくは↓
[LilyPond – みんなの楽譜作成: MacOS X](http://www.lilypond.org/macos-x.ja.html)
の「コマンドラインから実行する」というところ参照。

# 主要コマンドの使い方

## 基本のコンパイルコマンド `lilypond`

適当に `test.ly` ファイルを作って、以下のような内容を書いてみる。<sup><a id="fnr.2" name="fnr.2" class="footref" href="#fn.2">2</a></sup>

    \header{
      title = "A scale in LilyPond"
    }
    
    \relative {
      c d e f g a b c
    }
    
    \version "2.18.2"  % necessary for upgrading to future LilyPond versions.

そしたらターミナルで以下のコマンドを打つ。

    $ lilypond test.ly

これで test.pdf が生成されているはず。
詳しい使い方は以下。
[GNU LilyPond – アプリケーション使用方法: 1.2 コマンド ラインの使用方法](http://www.lilypond.org/doc/v2.19/Documentation/usage/command_002dline-usage)

## バージョンをアップデートする `convert-ly`

LilyPond はアップデートのたびに多少表記方法を変更したりすることがあるらしい。
なのでどのバージョンに準拠した書き方かというのを明記する必要があり、上記のコードの `\version` という部分がそれにあたる。
`convert-ly` というコマンドはバージョン間の構文変更を処理する。

基本的に以下のコマンドで十分らしい。

    $ convert-ly -e test.ly

詳しい使い方は以下。
[GNU LilyPond – アプリケーション使用方法: 2.3 convert-ly のコマンド ライン オプション](http://www.lilypond.org/doc/v2.19/Documentation/usage/command-line-options-for-convert_002dly)

## LilyPond 以外のドキュメントに楽譜を埋め込む `lilypond-book`

`lilypond-book` を使うと LaTeX や HTML などに LilyPond の表記方法を使用して楽譜を埋め込める。
詳しくは以下。
[GNU LilyPond – アプリケーション使用方法: 3. lilypond-book を実行する](http://www.lilypond.org/doc/v2.19/Documentation/usage/lilypond_002dbook)

ちなみに、後で説明する Emacs の org-mode を使えば簡単にドキュメントファイルと楽譜を共存できる。

# Emacs の設定

## `.ly` ファイルを LilyPond-mode で開く設定。

-   `LilyPond.app/Contents/Resources/share/emacs/site-lisp` 内に Emacs 用で LilyPond-mode を使うための Lisp ファイルが置いてあるので、これらを Emacs の `load-path` の通ったところにコピーする。

-   .emacs ファイルに以下を追記する。

```el:.emacs
;; LilyPond mode
(require 'lilypond-mode)
(add-to-list 'auto-mode-alist '("\\.ly\'" . LilyPond-mode))
(add-hook 'LilyPond-mode-hook 'turn-on-font-lock)
```

これで拡張子が `.ly` のファイルは自動で LilyPond-mode になる。
参考サイト: [Digitalians' Alchemy | LilyPond | Tips | LilyPond on Emacs](http://homepage1.nifty.com/alchemy/lilypond/tips/emacs.html)

## ショートカットキー

### `C-c C-l` でコンパイル

成功すれば同じフォルダ内に pdf ファイルができている。

### `C-c C-c` でメニューからその他のコマンドを選択

`View` とか `Midi` とかある。
`VewPDF` は xpdf を使うのであまり使いたくないので次のことをやった。

### オリジナルのコマンドを追加

以下のようなものを.emacs に書いておくとオリジナルのコマンドが `C-c C-c` のメニューの中に表れる。
ここでは、Mac のプレビューアプリで PDF を開く `OpenPDF` というコマンドを作っている。

```el
(add-hook 'LilyPond-mode-hook (function (lambda ()
                                          (add-to-list 'LilyPond-command-alist
                                                       '("OpenPDF" "open '%f'"))
                                          )))
```

## auto-complete

これをパスの通ったところに置く。
<http://emacswiki.org/emacs/download/ac-lilypond.el>

.emacs には以下を記述すれば良い。

```el:.emacs
(require 'ac-lilypond)
```

## org-mode 内で楽譜

org-mode の中で、LilyPond のコードを楽譜の画像に変換することができる。
org-mode が使える環境なら特別なパッケージを入れなくて良い。
自分も導入したばかりなのでこれから使い勝手を検証していく感じです。

とりあえず参考サイト。
[Org-babel-lilypond](http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-lilypond.html)

basic-mode と arrange-mode があるみたい。
まだ basic-mode しか触っていない。
arrange-mode なら Midi を鳴らしたりできるのか?
ここでは basic-mode の簡単な説明。

### .emacs

とりあえず basic-mode の設定は.emacs に以下を記述すれば良い。

```el:.emacs
(org-babel-do-load-languages
  'org-babel-load-languages
  '(
    (emacs-lisp . t)
    (sh t)
    (org t)
    (lilypond t)))
```

### PDF 生成の例

上の参考サイトにある Examples を使ってみる。
一応ここにも org ファイルのリンクを貼る。
[pdf-example.org](https://raw.github.com/mjago/ob-lilypond/master/examples/basic-mode/pdf-example/pdf-example.org)

このファイルを Emacs で開いたら、カーソルを LilyPond のコード内に持っていって、 `C-c C-c` を押す。
すると楽譜の eps ファイルが生成されているはず。
もしくは `C-c C-e` のメニューから通常の org-mode と同様に tex 経由で PDF が作れる。
このとき、各 LilyPond コードごとに画像に変換するかどうか聞かれる。

参考サイトにも書いてあるように、basic-mode では画像を生成するときに `:file` でファイル名を指定しないと画像の生成がエラーになるっぽい。

### HTML 生成の例

参考サイトにある別の Examples でできる。
[html-example.org](https://raw.github.com/mjago/ob-lilypond/master/examples/basic-mode/html-example/html-example.org)

これも同じ方法でテストできる。

# .gitignore

あります。
[gitignore/Lilypond.gitignore at master · github/gitignore](https://github.com/github/gitignore/blob/master/Lilypond.gitignore)

# LilyPond 参考サイト

## 公式のマニュアル

[LilyPond – みんなの楽譜作成: マニュアル](http://lilypond.org/website/manuals.ja.html)

ここから記譜法などに飛べる。

## チュートリアル

[GNU LilyPond 学習マニュアル: LilyPond — 学習マニュアル](http://lilypond.org/doc/v2.18/Documentation/learning/index.ja.html)

最初はこれのチャプター 2 の最後あたりまで読むのがおすすめ。

## スニペットライブラリ

[LilyPond Snippet Repository ♪♫](http://lsr.di.unimi.it/LSR/)

楽に楽譜を書くためのスニペットライブラリ。

## Cookbook

[The LilyPond Cookbook](http://lilypond-cookbook.tumblr.com/)
知らないおじさんの覚え書きっぽい

<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" name="fn.1" class="footnum" href="#fnr.1">1</a></sup> Frank Zappa の"The Black Page" のドラム譜の一部。</div>

<div class="footdef"><sup><a id="fn.2" name="fn.2" class="footnum" href="#fnr.2">2</a></sup> これは LilyPond.app を開いたときに表示されるデモファイルの一部です。</div>


</div>
</div>