音楽の小理屈

LilyPond

楽譜をスクリプティブに書くLilyPond。使い方が難しそうなので、使い慣れるまで、細かいメモを書いておきます。

テキストでコマンドを駆使して書いていく形なので、作曲や編曲に使うというよりも、浄書する性格のソフトです。何しろ、出来上がりの譜面は素晴らしく、まるで市販の楽譜のようなレベルの楽譜を作成できます。

ホームページのマニュアルが充実していて、大半が日本語化されています。(このページを作った時点では日本語化が進んでいなかったのですが…)


入手方法、ダウンロードなど

LilyPondの情報、ダウンロードなどは、ここにあります。ページの一番下に言語設定欄があるので、「日本語」を選びましょう。

ダウンロードのページのユーザー向け欄でお使いのOSに合わせたバージョンをダウンロードしてください。

インストール後、動作を確認します。

  1. デスクトップ上のLilyPondのアイコンをダブルクリック。テキストが現れます。
  2. このテキストを、拡張子を「ly」にして適当な名前(例えばtest.ly)でデスクトップに保存します。
  3. test.lyをLilyPondのアイコンにドラッグ&ドロップすると、デスクトップにtest.pdfが現れます。これが、楽譜です。

要するに、test.lyに書かれたテキストを解釈してtest.pdfに楽譜を書き出してくれるわけです。


どんな楽譜が書けるか

クラシックの標準的な楽譜ならば、殆ど書けそうです。パート譜から総譜までカバーしており、表情記号や強弱記号などもOK。装飾音符やトリルの類も大丈夫。何よりも、出力が美しいです。

古楽の楽譜もカバーしている様子。

ギターの表記に興味があって、弦番号、指記号(左手)や右手(pim)なども付加できます。コードや、コードダイアグラムも付加できる模様。

TAB譜も記述可能。これは、ある程度書き方が制限されているかもしれませんが、通常の楽器ならば、チューニング指定できるし、バンジョーは特別に扱えるようになっています(どうも、5弦の存在がネックだったらしいけれど)。

いろいろな表記がサポートされていて、最後には、lisp風のschemeという言語(lisp上で動作しているのかも)で書けば何でもできそうですが、そこまでは、なかなか手が出ません。


使ってみよう

何しろ、膨大なコマンドやパラメータがあり、さらに、schemeで拡張できるので全体を覚えるのは大変。自分の使う範囲で例題を見ながら名試行錯誤して身につけるのが宜しいようです。オンライン・マニュアルとチュートリアルがあるので、そちらも参考にしてください。

とりあえず、単純なメロディ譜を書くために必要な記述法をまとめてみました。

最低限の記述

簡単に楽譜を書く例が次のものです。

\score
{
 { c d e f g a b c' }
}

テキストの書き方は、フリーフォーマットなので、要素の間をスペースで区切ります。

ここでは、\score { .... } が楽譜の全体を現します(\で始まる単語がコマンドです)。

「{ c d e f g a b c' }」が音符の連なりを一つにしたものです。記述をまとめるときには、{}で囲みます。

ご想像のとおり、ここの英小文字が音程を表します。

音程の表し方

  1. 音程は、音名とオクターブの組合せで表します。
  2. 音名は、#や♭の付かないものは、そのまま、c d e f g a b(ドレミファソラシ) と英小文字で書きます。
  3. #がつく音名は、本来の音名に isをつけます。例えば、c# ならば、cisと書きます。
    ダブルシャープまでサポートされていて、cisisとすれば、cからニ半音上げたことになります。
  4. ♭がつく音名は、本来の音名に esをつけます。例えば、e♭ ならば、eesと書きます。
    ダブル♭までサポートされていて、gesesとすれば、gからニ半音下げたg♭♭ことになります。
  5. オクターブ記号を何も付けない、c の高さは、中央の c から1オクターブ下です。従って、裸のアルファベット音名(c d e f g a b)を書くと、ヘ音譜の c から始まるオクターブになります。
  6. 1オクターブ高い音を示す場合には、「'」(アポストロフィ)を一つ後ろにつけます。「'」をさらに増やせばその分だけオクターブが高くなります。例えば、中央の c は、c' ト音譜の一番上の fは、f''。これを半音上げた音は、fis''です。
  7. 1オクターブ低い音を示す場合には、「,」(コンマ)を一つ後ろにつけます。「,」をさらに増やせばその分だけオクターブが低くなります。例えば、ヘ音譜表の一番下の g は、g,で、これを♭したg♭ges,です。

音価の表し方(1)

音価の音値(音の長さ)は、音程の後に、数字をつけて表します。全音符ならば 1、四分音符ならば 4といった要領で、64分音符まで指定できます。音価を省略した場合には、以前に定義された音価が割り当てられます。付点音符は、音価の後ろに「.」(ピリオド)をつけます。複付点では、「..」とピリオドを二つ付けます。

簡単な楽譜

コマンドをいくつか追加して簡単な楽譜を書いてみます。

\score
{
 { \clef treble
   \key  d \major
   \time 4/4
   d'4 e' fis' g' |
   fis' e' d'2    |
 }
}

\clef trebleで、ト音記号を選び、\key d \majorでキーをD、つまり、ニ長調にしています。\time 4/4は4/4拍子を指定するコマンドです。これらのコマンドは、後で説明します。

d'4で、譜面の下のほうのd(レ)で四分音符。e'以降では音価の指定を省略。fis'はf#ですが、キーが指定されているので、当然、#は表示されません。この行の終わりの「|」は小節の区切りで、これを入れておくと、プログラムが音符の数を計算してくれます。

次の行の最後の音、d'2は音価が2分音符に変わるので「2」で音価を明示しています。

相対音高形式

上のように絶対音高で入力していくと、音域が高い音や低い音には、「'」や「,」がたくさん付くことになってしまいます。これは不便なので、フレーズを相対音高で書く方法が用意されています。

\score
{
\relative c'
 { \clef treble
   \key  d \major
   \time 4/4
   d4 e fis g |
   fis e d2    |
 }
}

使用するコマンドは、\relative

記述は

\relative startpitch musicexpr

musicexprは、{ a b c }など、フレーズのようなものです。

オクターブ指定を省いて音高を書くと、直前の音程に近い音を選んでオクターブを割り振ってくれます。この近い範囲は、四度以内。これを超える場合には、「'」「,」で割り当てられた音をオクターブだけ移動します。逆に言えば五度以上の音程の跳躍がなければ、オクターブの記号を書かずに済ませることができます。

最初の音符に対して、直前の音程を決めるのが、\relativeの後に書く音程(startpitch)。上の例だと \relative c' と書いた、c' がそれです。

以下、単純に楽譜を書くときに使いそうなものを上げていきます。

休符とスキップ

音程のところで、「r」を書くと休符になります。「s」を書くとスキップになります。「スキップ」はなじみが無いのですが、休符だけれど、実際には表示しないもの。込み入った楽譜を書くときなどに使うことがあります。

\score
{ \relative c' 
    { c4. d8 e r f r| g4 f s e | } 
}

1小節めの「r」が八分休符になっています。二小節目を見ると三つの目の四分音符が「s」なので、表示されていません。

楽譜記号

ト音記号とか、ヘ音記号といった記号類は、\clefコマンドを使います。このコマンドの後に、記号の名称を指定します。一般的なものは、殆ど、サポートされています。よく使うト音記号treble。ヘ音記号は bassを指定します。

その他にもいろいろプリセットがあるので、右の楽譜に一覧で示します。全音符で、中央のCを書き込んであります。

ソプラノリコーダーのように、音域の高い楽器は、1オクターブ下げて記譜しますが、このとき、ト音記号の上に数字の8をつけて、オクターブ高く演奏すべきことを示す習慣があります。この場合は、\clef "treble^8"のように、記号の名前の後ろに「^8」を加え、全体を「""」で囲みます。

\score
{
 { \clef "treble^8" c'1 
 }
}

2オクターブの場合は、「^15」を名前の後ろに加えます。ト音記号ならば、「"treble^15"」です。

1オクターブ下げて演奏する場合には「8」を、2オクターブ下げる場合には「15」を記号の下に書きますが、この場合はそれぞれ、名前の後ろに「_8」「_15」を追加して全体を「""」で囲んで名前とした増す。ト音記号ならば、「"treble_8"」「"treble_15"」が名前になります。

他には、パーカッションやTAB譜の記号もあるし、任意の記号を任意の位置に置くなどのカスタマイズ機能もありますが、当面は必要ないでしょう。


調号

キーを示す調号は、次のように書きます。

\key pitch type

ここでpitchは、調の主音(cとかcisとかです)。typeは、長調ならば\major、単調ならば \minorと書きます。ニ長調ならば、主音は d 、長調なので、コマンドは、\key d \major となります。

教会旋法もサポートしているそうで、\ionian\locrian\aeolian\mixolydian\lydian\phrygian\dorian を type として選べるそうですが、通常は使わないでしょう。

拍子記号

拍子記号は、次のように、\time コマンドの後ろに分数で書きます。

\time 3/4

4/4や2/2でおなじみの簡略記号(C)などが使われます。これは、Stuffの属性を変更すると4/4、2/2という数字表記に変更できますが、面倒なのでデフォルトのままで良いでしょう。

\score
{
 { \time 4/4 c'1
   \time 2/2 c'1
   \override Staff.TimeSignature #'style = #'()
   \time 4/4 c'1
   \time 2/2 c'1
 }
}

タイ

二つの音符を繋ぐタイは、同じ音程の二つの音符の間に「~」(ティルダ)を挟みます。

\score
{ \relative c'
 { c4 ~ c8 d e4 ~ e8 g |
   c,4 c8 d e4  e8 g |
 } }

タイを操作

タイの上下位置をコマンドで指定できます。

\tieUp
タイを上に描きます
\tieDown
タイを下に描きます
\tieNeutral
タイの上下位置を自動で選びます。
\score
{ \relative c'
 { \tieUp c4 ~ c8 d \tieDown e4 ~ e8 g |
   c,4 c8 d e4  e8 g |
 } }

タイの線種を指定します。

\tieDotted
点線
\tieDashed
破線
\tieSolid
実線
\score
{ \relative c'
 { \tieDotted c4 ~ c8 d \tieDashed e4 ~ e8 g |
   \tieSolid c,4 ~ c8 d e4  e8 g |
 } }

スラーとフレーズ・スラー

スラーは二種類用意されています。通常のスラーのレガート・スラーとフレーズ・スラーです。レガート・スラーは滑らかに演奏するまとまり、フレーズ・スラーはフレーズのまとまりを示すために用います。

表示上は、この二つのスラーの違いは無い様ですが、レガート・スラーの重複、フレーズ・スラーの重複は出来ません。しかし、レガート・スラーとフレーズ・スラーの重複はできます。おそらく、このスラーの重複のために二種類用意されているのでしょう。

レガートスラーは、スラーを始める音符の後に「(」、スラーを終える音符の後に「)」を書きます。

\score
{ \relative c'
 { c4 ( d e ) f( | 
   g a ) b c
 }
}

フレーズスラーは、スラーを始める音符の後に「\(」、スラーを終える音符の後に「\)」を書きます。

\score
{ \relative c'
 { c4 \( d e \) f\( | 
   g a \) b c
 }
}

フレーズ・スラーの表示は、レガート・スラーと同じものになっています。

次の例は、フレーズ・スラーとレガート・スラーを併用したものです。

\score
{ \relative c'
 { c4 \( ( d e ) f( | 
   g a ) b \) c
 }
}

レガート・スラーやフレージング・スラーの機能を細かく指定することが出来ます。以降に簡単に書いておきます。

レガート・スラーを操作

レガートスラーもタイのように上下位置を決めたり、線種を選ぶコマンドがあります。

\slurUp
スラーを上に
\slurDown
スラーを下に
\slurNeutral
スラーの上下を自動で決定
\slurDotted
点線
\slurDashed
破線
\slurSolid
実線

また、スラーの開始を「_(」で指定すると下側スラー、「~(」で指定すると上側スラーになります。

\score
{ \relative c'
 {  c4 _( d e ) f~( | 
   g a  b  c )
 }
}

上の例ではうまく動いているのですが、記述位置によって動作不良があるようです。コマンドで位置を指定すれば、この場合でもうまく動作しました。

フレーズ・スラーを操作

フレーズ・スラーもスラーのように上下位置を決めたり、線種を選ぶコマンドがあります。

フレージング・スラーの上下位置を決めるコマンド:\phrasingSlurUp(上に置く)、 \phrasingSlurDown(下に置く)、\phrasingSlurNeutral(自動的に決める)。

線種を決めるコマンド:\phrasingSlurDashed(破線)、\phrasingSlurDotted(点線)、\phrasingSlurSolid(実線)。

三連符

三連符に限らず、連符を指定するコマンドは、\timesです。

\times fraction { music }

の形式で、書き、{}内の音符記述をfraction(分数)で音価(長さ)を短くします。特によく使う、三連符ならば、

\times 2/3 { music }

と書きます。

\score
{ \relative c'
 {  c4 \times 
    2/3 { d8 e f } 
    \times 2/3 { g4 a4 b} |

    \times 2/3 {c4 c8 }
    \times 2/3 {c4 c8 }
    \times 2/3 {c4 c8 }
    \times 2/3 {d4 e8 }
 }
}

上の書き方では、\time 2/3 {...} を、何回も書かなければならないのですが、これを簡略化する書き方があります。

\set tupletSpannerDuration = #(ly:make-moment 1 4)
パラメータの 1 と 4は、分音符つの時間を指定。その単位で連符を区切るという意味合いのようです。このまま、呪文で使いましょう。

\score
{ \relative c'
 {  c4 \times 
    2/3 { d8 e f } 
    \times 2/3 { g4 a4 b} |
    \set tupletSpannerDuration =
      #(ly:make-moment 1 4)
    \times 2/3 {c4 c8 c4 c8 c4 c8 d4 e8 }
 }
}

和音

単純なメロディ譜には不要ですが、和音にも触れておきます。

同じタイミングに和音がなる場合には、単純な方法で書けます。まとめて鳴る音名を「<」と「>」で囲んで普通の音符のように書けばよいのです。四分音符のドミソならば、「<CEG>4」と書きます。

\score
{ \relative c'
 {  c4 
    <e g c >
    g,4
    <e' g c >8
    <e g c > |
    a,4
    <e' a c >
    c4
    <e a c >8
    <e a c > 
 }
}
メニューへ戻る
アルゴ算法堂へ戻る