GNU LilyPond

GNU LilyPondは、クロスプラットフォームの楽譜作成ソフトウェアである。

GPL ライセンスのもとにフリーで公開されている。C++ で記述され、Scheme ライブラリ  でアセンブルされているが、ユーザ独自のカスタマイズや拡張も可能である。単純に音楽をテキストに記述してコンパイルすることにより、PDF、SVGなどの形式で楽譜を出力できる。同時にMIDIファイルを出力させることも可能である。

FinaleやSibeliusなどのような楽譜作成ソフトウェアとは異なり、LilyPond自体はGUIを持たない。しかしながら、出版にも耐えうるほどの質の高い楽譜を出力することができる。また、GUIをもつソフトウェアの中にも、RosegardenやNoteEdit、Canorus、Denemo、FrescobaldiのようにLilyPondの形式で出力できるものがある。

手作業で版が作成されていた時代の浄書のルールを忠実に再現することによって質の高い楽譜を作ることが、LilyPondの目標のひとつである。プログラマーの腕次第では、LilyPondは大手出版社の出力水準よりも質の高い楽譜を作ることができる。そのような楽譜はIMSLPに多く投稿されている。

ミュートピアプロジェクトでは、フリーの楽譜を配布することを目的としており、そのためにLilyPondを使用している。これは、コラボレーションによる音楽百科事典「ミュージペディア」も同様である。Wikiの記事上のLilyPondに関する記事を直接編集するには、MediaWikiインタフェースのひとつであるWikiTeXを使うことができる。

1. LilyPond のソースファイルの例
----------------------

パーセント記号  が書かれると、その行は以後コメントと見なされる。ここでは可読性の向上のために %% と書かれている。

LilyPondにおいては、音名、オクターヴ、音価の順に記述される。オクターブを指定するためには、引用符  とコンマ  を使用し、それぞれが基準音から1オクターヴ上、1オクターヴ下を意味する。なお、デフォルトでは基準音は中央ハの1オクターヴ下のハ音である。たとえば、 a'4 と記述すればそれは440Hz付近のA音の四分音符を意味する。

LilyPondの特殊な文法の一つとして、括弧類の扱いがある。直感的には、[d8 c]と記述したくなるような場合、d8[ c]と記述するのが正しい。すなわち、これらの命令は常に音の命令の後に指定し、それぞれの音の属性として処理される。なお、この括弧 [, ] は、八分音符を桁で繋げる命令である。

LilyPondの入力方式には、絶対入力と相対入力の2つの方法がある。絶対入力の方法においては、音のオクターヴは毎回指定されなければならない。相対入力の方法においては、直前の音から最も近いオクターヴを基準にして自動的に選ばれる。すなわち、オクターヴを指定しなければ直前の音から見て上下増四度以内の該当する音名の音が自動的に選択される。減五度以上跳躍する場合に、直前の音から相対的に何オクターヴ上下するかを記述すればよい。たとえば、c gと記述した場合、G音はC音から見て完全四度下のものが選択される。完全五度上のものを選択させるにはc g'と記述しなければならない。なお、ここの例では相対入力の方法で書かれている。

文字コードはUTF-8のみが使用される。このため、一つのファイル内でデンマーク語、ヘブライ語、朝鮮語などの文章を混在させることも可能である。なお、ソースファイルの最初の一行は、 Emacsに常にUTF-8で読み書きを行うようにする命令である。 Emacs以外のテキストエディタを使用する場合には、各自UTF-8を使用するように注意しなければならない。

!lilypond firebreathers.ly -*- coding: utf-8; -*-%% Theme to "Fire Breathers", a homebrew NES game perpetually %% under development. Composed by Urpo Lankinen.

%% Note: The composer has made this source code available %% to Wikipedia under the GFDL license. Other versions outside %% Wikipedia are typically under CC BY-SA license.

%% This file uses Finnish note names . %% Dutch note names are used by default. \include "suomi.ly"

%% Optional language upgrade helper. \version "2.6.0"

%% The header block defines the titles and texts. \header { title = "Theme to ``Fire Breathers!//"// instrument = "For the 2A03 or SID" composer = "Urpo Lankinen" enteredby = "Urpo Lankinen" updatedby = "Jan Nieuwenhuizen" date = "June 2005" }

Melody = \relative c// {// \clef treble \time 3/4 \key a \minor

%% The piece starts with a quarter-note partial bar, "\partial 4" %% tells so to LilyPond. \partial 4 a4 | e'4. r8 | d4. r8 | a2. | e2 a4 | e'4. r8 | d4. r8 | e2. | r2 e4 | f4. r8 | d4. r8 | a2. | e2 a4 | e'4. r8 | d4. r8 | a2. ~ a2 r4 | \bar "|." }

%% This is the second voice. SecondVoice = \relative c { \clef bass \time 3/4 \key a \minor

\partial 4 r4 | e2. | d2. | a2. | e2 a4 | e'2. | d2 f4 | e2. | r2. | f2. | d2. | a2. | e2 a4 | e'2. | d2 h4 | a2. ~ a2 r4 | \bar "|." }

%% Melodies, lyrics and chords can be assigned to a variable and then %% be *reused* elsewhere. Here are three different accompaniment %% patterns, which are used throughout the accompaniment melody. AccompA = \relative c { a4 e'8 a, e' a, | } AccompB = \relative c { g4 d'8 g, d' g, | } AccompC = \relative c { e,4 h'8 e, h' e, | }

Accompaniment = { \clef bass \time 3/4 \key a \minor

\partial 4 r4 | \AccompA \AccompB \AccompA \AccompA \AccompA \AccompB \AccompA \AccompA \AccompC \AccompC \AccompA \AccompA \AccompA \AccompB \AccompA | a2 r4 | \bar "|." }

%% The top level music definition. << \new Staff \Melody \new Staff \Accompaniment \new Staff \SecondVoice >><WtXmlEndTag />

1.1. 上記の出力結果
------------

2. 関連項目
-------

Denemo - LilyPondのGUI環境
Frescobaldi - LilyPondの統合開発環境
ミュートピアプロジェクト - 著作権が切れた作品の楽譜を公開するプロジェクト
Karaoke - *.kar ファイルを配布する
GUIDO music notation - 楽譜作成ソフトウェア

3. 外部リンク
--------

[1]
[2]
[3] - hosted by [4] archiving LilyPond mailing lists into a searchable forum.
[5]
[6]
[7].
[8].
[9]
[10]