[トップ][目次][インデックス][ ? ] |
GNU LilyPond — 学習マニュアル
これは GNU LilyPond バージョン 2.13.45 のための学習マニュアルです。このドキュメントと他のドキュメントとの関係についての更なる情報は、FIXME FIXME FIXME を参照してください。 |
1. 導入部 | ここから始めてください。 | |
2. 一般的な記譜法 | LilyPond 導入の手引き | |
3. 基礎となるコンセプト | このマニュアルの残りの部分を読むために必要とされる基本的なコンセプト | |
4. 出力を調整する | 出力を変更するための導入部 | |
付録 | ||
---|---|---|
A. テンプレート | 作成 (コンパイル) 準備ができているテンプレート | |
B. Scheme チュートリアル | LilyPond 内部のプログラミング | |
C. GNU Free Documentation License | このドキュメントの使用許諾書 | |
D. LilyPond インデックス |
このドキュメントは 複数のページにインデックス化された HTML 形式 でも利用可能です。
[ << トップ ページ ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < トップ ページ ] | [ 上へ : トップ ページ ] | [ ファイルをコンパイルする > ] |
1. 導入部
この章は LilyPond に取り組むための基本的な入門書です。
1.1 ファイルをコンパイルする | ||
1.2 LilyPond 用エディタ | ||
1.3 入力ファイルの書き方 | ||
1.4 このマニュアルの読み方 |
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < 導入部 ] | [ 上へ : 導入部 ] | [ 入力を作成する > ] |
1.1 ファイルをコンパイルする
FIXME: insert text
1.1.1 入力を作成する | ||
1.1.2 MacOS X | ||
1.1.3 Windows | ||
1.1.4 コマンド ライン |
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < ファイルをコンパイルする ] | [ 上へ : ファイルをコンパイルする ] | [ MacOS X > ] |
1.1.1 入力を作成する
“コンパイル” は LilyPond フォーマットで書かれた入力ファイルを印刷可能なファイルを作り出すため、そして (オプションとして) 演奏可能な MIDI ファイルを作り出すために処理することを意味する用語です。LilyPond 入力ファイルはシンプルなテキストファイルです。最初の例ではシンプルな入力ファイルがどのようなものかを示します。
楽譜を作成するために、我々は記譜法を指定する入力ファイルを書きます。例えば、以下のように書くと:
{ c' e' g' e' }
結果は以下のようになります:
エラーが発生した
{
波括弧 }
で囲まれている必要があります。さらに、あいまいさを避けるために、波括弧は行の最初か最後でない限りはスペースによって囲まれているべきです。波括弧はこのマニュアルのいくつかの例では省略されているかもしれませんが、あなた自身が作成する楽譜では忘れないでください!マニュアルの中にある例を表示する方法についての更なる情報については、このマニュアルの読み方 を参照してください。
さらに、LilyPond 入力は大文字/小文字の区別 があります。{ c d e }
は有効な入力ですが、{ C D E }
はエラーになります。
音楽を入力して出力を閲覧する
ここでは、実行すべきコマンドと、出力を閲覧または印刷する方法について説明します。
LilyPond に対してより良いサポートを提供するテキスト エディタがいくつかあります。更なる情報は LilyPond 用エディタ を参照してください。
Note: あなたが初めて LilyPond を実行した場合、1, 2 分かかるかもしれません。なぜなら、まず最初にすべてのシステム フォントが分析されるからです。それから後は、LilyPond はずっと早く実行されます!
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < 入力を作成する ] | [ 上へ : ファイルをコンパイルする ] | [ Windows > ] |
1.1.2 MacOS X
LilyPond.app
をダブル クリックすると、見本となるファイルが開きます。それを – 例えば ‘test.ly’ という名前で – Desktop に保存し、それをメニュー コマンド Compile > Typeset File
で処理します。結果の PDF ファイルがスクリーン上に表示されます。
この先の LilyPond の使用のために、あなたは “New” または “Open” を選択することによって開始すべきです。植字を行う (訳者: コンパイルする) 前に、あなたはあなたのファイルを保存しなければなりません。処理中にエラーが発生した場合、ログ ウィンドを見てください。
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < MacOS X ] | [ 上へ : ファイルをコンパイルする ] | [ コマンド ライン > ] |
1.1.3 Windows
Windows では、デスクトップ上の LilyPond アイコンをダブル クリックした場合、シンプルなテキスト エディタで見本ファイルが開きます。それを – 例えば ‘test.ly’ という名前で – デスクトップ上に保存し、そのファイルを処理するためにそのファイルをダブル クリックします (そのファイルのアイコンはノートのような形をしています)。数秒後、デスクトップ上に ‘test.pdf’ というファイルが作成されます。刻譜された楽譜を見るにはこの PDF ファイルをダブル クリックします。‘test.ly’ ファイルを処理するためのもう 1 つの方法は、マウス ポインタを使ってそのファイルを LilyPond アイコンにドラッグ&ドロップします。
既存の ‘.ly’ を編集するには、そのファイルを右クリックして “Edit source” を選択します。LilyPond 入力を開始するための空ファイルを作成するには、上記と同じようにしてエディタを開き、“ファイル” メニューの中にある “新規作成” を使用するか、デスクトップ上で右クリックして “新規作成 ... テキスト文書” を選択して、そのテキスト ファイルの名前を変更して、ファイル拡張子を ‘.ly’ に変更します。LilyPond ソース コードに入力するには前述と同様にアイコンを右クリックします。
ファイルをダブル クリックすると、結果として PDF ファイルが出力されるだけではなく、LilyPond がそのファイルに対して行ったことについての情報を保持する ‘.log’ ファイルも生成されます。エラーが発生した場合、このファイルを検証してください。
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < Windows ] | [ 上へ : ファイルをコンパイルする ] | [ LilyPond 用エディタ > ] |
1.1.4 コマンド ライン
‘test.ly’ という名前のテキスト ファイルを作成し、以下を入力します:
{ c' e' g' e' }
‘test.ly’ を処理するには以下のようにします:
lilypond test.ly
以下のようなものが表示されます:
lilypond test.ly GNU LilyPond 2.13.45 Processing `test.ly' Parsing... Interpreting music... Preprocessing graphical objects... Finding the ideal number of pages... Fitting music on 1 page... Drawing systems... Layout output to `test.ps'... Converting to `test.pdf'...
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < コマンド ライン ] | [ 上へ : 導入部 ] | [ Denemo > ] |
1.2 LilyPond 用エディタ
FIXME: add text
1.2.1 Denemo | ||
1.2.2 LilyPondTool | ||
1.2.3 Emacs | ||
1.2.4 Vim |
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < LilyPond 用エディタ ] | [ 上へ : LilyPond 用エディタ ] | [ LilyPondTool > ] |
1.2.1 Denemo
利用可能なプラットフォーム:
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < Denemo ] | [ 上へ : LilyPond 用エディタ ] | [ Emacs > ] |
1.2.2 LilyPondTool
利用可能なプラットフォーム:
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < LilyPondTool ] | [ 上へ : LilyPond 用エディタ ] | [ Vim > ] |
1.2.3 Emacs
利用可能なプラットフォーム: Windows, MacOS X, Unix
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < Emacs ] | [ 上へ : LilyPond 用エディタ ] | [ 入力ファイルの書き方 > ] |
1.2.4 Vim
利用可能なプラットフォーム: Windows, MacOS X, Unix
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < Vim ] | [ 上へ : 導入部 ] | [ 簡単な記譜法 > ] |
1.3 入力ファイルの書き方
FIXME: insert text
1.3.1 簡単な記譜法 | ||
1.3.2 入力ファイルに取り組む |
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < 入力ファイルの書き方 ] | [ 上へ : 入力ファイルの書き方 ] | [ 入力ファイルに取り組む > ] |
1.3.1 簡単な記譜法
LilyPond はいくつかの記譜要素を自動的に追加します。次の例では、我々は 4 つのピッチを指定しただけですが、LilyPond が音部記号、拍子記号、リズムを加えています。
{ c' e' g' e' }
この挙動は変更されるかもしれませんが、たいていのケースではこれらの自動値は役に立ちます。
ピッチ
音楽用語集: pitch, interval, scale, middle C, octave, accidental
音符を入力するための最も簡単な方法は \relative
モードを使用することです。このモードでは、後に続く音符は常に前の音符に最も近い場所になるという仮定によって自動的にオクターブが選択されます。つまり、音符は前の音符から 3 譜表スペース (訳者: 1 譜表スペースとは同じ音階のド→レ、レ→ミ、~の間隔のこと) 以内に置かれます。我々はまず音楽の最も基本的な要素 – 音階 (ここでは各音符は前の音符からちょうど 1 譜表スペースの位置にきます) – からはじめます。
% set the starting point to middle C \relative c' { c d e f g a b c }
最初の音符はミドル C です。一連の音符はそれぞれ前の音符と最も近い場所に置かれています –
言い換えると、最初の c
はミドル C に最も近い C です。これに前の音符に最も近い D が続きます。我々は \relative
モードだけを使ってより大きな音程を持つ旋律を作ることができます:
\relative c' { d f a g c b f d }
旋律の最初の音符が開始ピッチを指定している音符である必要はありません。前の例では、最初の音符 – d
– はミドル C に最も近い D です。
\relative c' {
コマンドにクォート '
やカンマ ,
を付け加える (あるいは取り除く) ことによって、開始オクターブを変更することができます:
% one octave above middle C \relative c'' { e c a c }
相対モードは最初のうちは混乱を引き起こす可能性がありますが、たいていの旋律を入力するのに最も容易な方法です。相対計算が実際にどのように行われるのか見てみましょう。B – ト音記号の譜面の真ん中の譜線上にあります – から開始すると、C, D, E は上方向に 3 譜表スペース以内にあり、A, G, F は下方向に 3 譜表スペース以内にあります。そのため、B の後に続く音符が C, D, E である場合、その音符は B の上に置かれ、A, G, F である場合は B の下に置かれます。
\relative c'' { b c % c is 1 staff space up, so is the c above b d % d is 2 up or 5 down, so is the d above b e % e is 3 up or 4 down, so is the e above b a % a is 6 up or 1 down, so is the a below b g % g is 5 up or 2 down, so is the g below b f % f is 4 up or 3 down, so is the f below }
これらの音符のいずれかにシャープやフラットが付いたとしてもまったく同じことが起こります。相対位置の算出時に臨時記号は完全に無視されます。譜表上の他のいずれかの位置にある音符からの譜表スペース数もまったく同じです。
3 譜表スペースよりも大きな音程を加えるために、シングル クォート '
(あるいはアポストロフィ) を音符名に付け加えることによってオクターブを上げることができます。音符名にカンマ ,
を付け加えることによってオクターブを下げることができます。
\relative c'' { a a, c' f, g g'' a,, f' }
音符を 2 オクターブ (あるいはそれ以上) 変えるには、複数化した ''
や
,,
を使用します – しかしながら、1 つのダブル クォート "
ではなく、2 つのシングル クォートを使用するよう注意してください!また、\relative c'
の中の最初の値もこのように変更されるかもしれません。
演奏時間 (リズム)
音楽用語集: beam, duration, whole note, half note, quarter note, dotted note
音符の演奏時間は音符名の後の番号によって指定されます。全音符には 1
を、半音符には 2
を、4 分音符には 4
を、などです。連桁
(符幹と符幹をつなぐ横棒。符幹は符頭から上下にでる縦棒。符頭は音符の玉)
は自動的に追加されます。
あなたが演奏時間を指定しなかった場合、前の音符の演奏時間が次の音符の演奏時間に対しても使用されます。最初の音符のデフォルトの演奏時間は 4 分音符です。
\relative c'' { a1 a2 a4 a8 a a16 a a a a32 a a a a64 a a a a a a a a2 }
付点音符を作成するには、演奏時間数にドット .
を付け加えます。付点音符の演奏時間は明記されなければなりません (つまり、数字で)。
\relative c'' { a a a4. a8 a8. a16 a a8. a8 a4. }
休符
音楽用語集: rest
休符は r
という名前の音符のような形で入力されます:
\relative c'' { a r r2 r8 a r4 r4. r8 }
拍子記号
音楽用語集: time signature
拍子記号は \time
コマンドでセットすることができます:
\relative c'' { \time 3/4 a4 a a \time 6/8 a4. a \time 4/4 a4 a a a }
音部記号
音楽用語集: clef
音部記号は \clef
コマンドを使ってセットすることができます:
\relative c' { \clef treble c1 \clef alto c1 \clef tenor c1 \clef bass c1 }
すべてをまとめて
以上の要素をすべて集めたちょっとした例をお見せします:
\relative c, { \time 3/4 \clef bass c2 e8 c' g'2. f4 e d c4 c, r4 }
参照
記譜法リファレンス: Writing pitches, Writing rhythms, Writing rests, Time signature, Clef
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < 簡単な記譜法 ] | [ 上へ : 入力ファイルの書き方 ] | [ このマニュアルの読み方 > ] |
1.3.2 入力ファイルに取り組む
LilyPond 入力ファイルは多くの一般的なプログラミング言語のソース ファイルと同じようなものです。それらは大文字/小文字の区別があり、空白はたいてい無視されます。表記は波括弧 { } で囲まれ、%
または %{ .. %}
でコメントになります。
上の文章があなたにとって意味不明だとしても、心配ありません!我々がそれらの用語の意味を説明します:
-
大文字/小文字の区別:
あなたが小文字 (つまり、
a, b, s, t)
で入力するか、大文字 (つまり、A, B, S, T
) で入力するかの違いです:{ c d e }
は有効な入力ですが、{ C D E }
ではエラーになります。 -
空白は無視される:
あなたがどれくらい多くのスペース (または新しい行) を追加しても問題にならないということです。
{ c d e }
は{ c
d e } や以下と同じ意味になります:{ c d e }
もちろん、このような書き方をすると読みにくいです。見やすい書き方は、コード ブロックにタブか 2 つのスペースでインデントを付けることです:
{ c d e }
-
表記:
LilyPond 入力の各部分は { 波括弧 } で囲まれている必要があります。これらの波括弧は LilyPond に入力が単一の音楽表記であることを教えます。これはちょうど数学での括弧
()
のようなものです。あいまいさを避けるために、波括弧は行の先頭か終端にないかぎりスペースで囲まれているべきです。波括弧で囲まれた表記が後に続く LilyPond コマンド (
\relative { }
など) もまた単一の音楽表記としてカウントされます。 -
コメント:
コメントは音楽入力を読む人間のための注釈です。これは構文解析中には無視されるため、譜刻される出力には影響を与えません。コメントには 2 つのタイプがあります。パーセント記号
%
は行コメントになります。%
の後の文字は無視されます。慣習上、行コメントはそのコメントが参照するコードの上に置かれます。a4 a a a % this comment refers to the Bs b2 b
ブロック コメントは音楽入力のある部分全体をコメントにします。
%{
と%}
で囲まれた部分は無視されます。しかしながら、ブロック コメントを ‘ネスト’ させることはできません。このことはあるブロック コメントを他のブロック コメントの中に置くことはできないということを意味します。そうした場合、最初の%}
は両方のブロック コメントを終わらせてしまいます。以下のコード断片はコメントの使用例を示しています:% notes for twinkle twinkle follow % 以下はキラキラ星です c4 c g' g a a g2 %{ This line, and the notes below are ignored, since they are in a block comment. この行と以下の音符は無視されます。 なぜなら、これらはブロック コメントの中にあるからです f f e e d d c2 %}
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < 入力ファイルに取り組む ] | [ 上へ : 導入部 ] | [ 波括弧を省略する > ] |
1.4 このマニュアルの読み方
FIXME: fluff here
波括弧を省略する | ||
クリック可能な例 | ||
キーボード ナビゲーション | ||
マニュアルの概要 |
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < このマニュアルの読み方 ] | [ 上へ : このマニュアルの読み方 ] | [ クリック可能な例 > ] |
波括弧を省略する
入力ファイルに取り組む で見てきたように、LilyPond 入力は { } マークか
\relative c'' { ... }
で囲まれていなければなりません。このマニュアルの残りの部分では、たいていの例はこのことを省略しています。このマニュアルにある例を複製するためにあなたは表示されいている入力をコピーするかもしれませんが、あなたは以下のように \relative c'' { }
を付け加えなければなりません:
\relative c'' { ... example goes here... ... 例がここに来ます ... }
なぜ波括弧を省略するのか?このマニュアルの中のたいていの例はより大きな音楽の途中に挿入することができます。これらの例に対して \relative c'' { }
を付け加えることには意味がありません – あなたはある \relative
を他の \relative
の
中に置くべきではありません!すべての例の周りに \relative c'' { }
を置いてしまうと、あなたは小さな例をコピーして、それをより大きなあなた自身の音楽の中にペーストすることができなくなってしまいます。たいていの人は資料を既存の楽曲に付け加えようとしますので、我々はそのようにマニュアルを形作っています。
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < 波括弧を省略する ] | [ 上へ : このマニュアルの読み方 ] | [ キーボード ナビゲーション > ] |
クリック可能な例
多くの人々はすでにあるプログラムを試したり、いじったりすることでプログラムを学びます。これは LilyPond でも可能です。このマニュアルの HTML バージョンの中にある画像をクリックすると、画像を生成するために使用された正確な LilyPond 入力を見ることができます。以下の画像を試してみてください:
‘ly 断片’ セクションにある記述をカット&ペーストすることによって、あなたは LilyPond を経験するための開始テンプレートを入手できます。まったく同じもの (線の太さなどもすべて同じ) を出力させるには、“Start cut-&-pastable section” からファイルの最後までをコピーしてください。
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < クリック可能な例 ] | [ 上へ : このマニュアルの読み方 ] | [ マニュアルの概要 > ] |
キーボード ナビゲーション
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 一般的な記譜法 >> ] | ||
[ < キーボード ナビゲーション ] | [ 上へ : このマニュアルの読み方 ] | [ 一般的な記譜法 > ] |
マニュアルの概要
FIXME: a brief discussion about the rest of the LM, and pointers to specific places. like NR for general reference, AU for suggestions for writing files, etc.
[ << 導入部 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < マニュアルの概要 ] | [ 上へ : トップ ページ ] | [ 単一譜表表記 > ] |
2. 一般的な記譜法
このチュートリアルではまず LilyPond 音楽言語についての紹介を行い、楽譜を作り出す方法について説明します。LilyPond との最初の接触の後、我々は一般的な音楽記譜法を持つ楽譜を作成する方法について説明します。
2.1 単一譜表表記 | ||
2.2 同時に演奏する複数の音符 | ||
2.3 歌曲 | ||
2.4 仕上げ |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 一般的な記譜法 ] | [ 上へ : 一般的な記譜法 ] | [ 臨時記号と調号 > ] |
2.1 単一譜表表記
このセクションはでは 1 つの譜表の上にある 1 つの声部のために使用される一般的な記譜法を紹介します。
2.1.1 臨時記号と調号 | ||
2.1.2 タイとスラー | ||
2.1.3 アーティキュレーションと強弱記号 | ||
2.1.4 テキストを追加する | ||
2.1.5 自動連桁と手動連桁 | ||
2.1.6 高度なリズム コマンド |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 単一譜表表記 ] | [ 上へ : 単一譜表表記 ] | [ タイとスラー > ] |
2.1.1 臨時記号と調号
臨時記号
音楽用語集: sharp, flat, double sharp, double flat, accidental
シャープは音符名に is
を付け加えることによって作られ、フラットは es
を付け加えることによって作られます。予想しているかもしれませんが、ダブル シャープやダブル フラットは isis
や eses
を付け加えることによって作られます。この文法はドイツ語での命名規則から生まれました
(訳者: 原文では “Dutch” なのでオランダ語なのですが、実際はドイツ語での命名規則であり、“Dutch” は「ゲルマン民族の支配している地域」=現在のドイツとオランダを意味しているものと解釈してドイツ語と訳すことにします)。臨時記号に対して他の名前を使うには、
Note names in other languages を参照してください。
cis1 ees fisis, aeses
調号
音楽用語集: key signature, major, minor
調号はコマンド \key
とそれに続くピッチと \major
または
\minor
によってセットされます。
\key d \major a1 \key c \minor a
警告: 調号と音高
音楽用語集: accidental, key signature, pitch, flat, natural, sharp, transposition
臨時記号を譜刻するかを決定するために LilyPond はピッチと調号を検証します。調号は譜刻される臨時記号にだけ影響を与え、音符のピッチには影響を与えません!この特徴はしばしば新しく LilyPond を始める人を混乱させるため、より詳細に説明します。
LilyPond は音楽の内容とレイアウトを峻別します。音符の変更記号 (フラット、ナチュラル、シャープ) はピッチの一部であるため、音楽の内容です。臨時記号 (譜刻されるフラット、ナチュラル、シャープ記号) が対応する音符の前に譜刻されるかどうかはレイアウトの問題です。レイアウトは規則に従う何らかのものであるため、臨時記号はそれらの規則に対応して自動的に譜刻されます。あなたの音楽の中でのピッチは人工的な仕掛けであるため、それらは自動的には追加されず、あなたはあなたの聞きたいピッチを入力しなければなりません。
以下の例では:
\key d \major d cis fis
臨時記号を譜刻されている音符はありません。しかしながら、あなたは入力ファイルで is
を付け加えて cis
や
fis
などとタイプしなければなりません。
コード b
は “譜表の最初の線 (一番上の線) のすぐ下に黒い点を譜刻せよ”
という意味ではありません。そうではなく、“ピッチが B ナチュラルである音符がある” という意味です。A フラット メジャの調子では、b
には臨時記号が付きます:
\key aes \major b
すべての変化を明示的に付け加えることは入力時にちょっとした努力を要するかもしれません。しかしながら、移調がより容易になる、異なる規約に対応して臨時記号を譜刻できるという利点があります。臨時記号がどのように異なる規則に対応して譜刻されるのかについてのいくつかの例は、 Automatic accidentals を参照してください。
参照
記譜法リファレンス: Note names in other languages, Accidentals, Automatic accidentals, Key signature
音楽用語集: Pitch names
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 臨時記号と調号 ] | [ 上へ : 単一譜表表記 ] | [ アーティキュレーションと強弱記号 > ] |
2.1.2 タイとスラー
タイ
タイはタイが始まる最初の音符にチルド ~
を付加することによって作成されます。
g4~ g c2~ c4 ~ c8 a8 ~ a2
スラー
音楽用語集: slur
スラーは多くの音符に亘って描かれる曲線です。スラーの開始音符と終了音符にはそれぞれ (
と )
を付加します。
d4( c16) cis( d e c cis d) e( d4)
フレージング スラー
長いフレーズを示すためのスラーは \(
と \)
によって挿入することができます。あなたはスラーとフレージング スラーを重ねることができます。しかしながら、あなたは複数のスラーを重ねたり、複数のフレージング スラーを重ねることはできません。
a8(\( ais b c) cis2 b'2 a4 cis,\)
警告: スラー vs. タイ
音楽用語集: articulation, slur, tie
スラーはタイのように見えますが、意味が異なります。タイは単純に最初の音符をより長くするものであり、同じ音程の音符のペアに対してのみ使用することができます。スラーは複数の音符によるアーティキュレーション (節、表現) を表していて、より大きな音符のグループに対して使用することができます。スラーとタイはネストさせることができます。
c2~( c8 fis fis4 ~ fis2 g2)
参照
記譜法リファレンス: Ties, Slurs, Phrasing slurs
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < タイとスラー ] | [ 上へ : 単一譜表表記 ] | [ テキストを追加する > ] |
2.1.3 アーティキュレーションと強弱記号
アーティキュレーション
音楽用語集: articulation
一般的なアーティキュレーションはダッシュ -
と単一文字を使うことで音符に付け加えることができます:
c-. c-- c-> c-^ c-+ c-_
運指法記号
音楽用語集: fingering
同様に、運指法はダッシュ (-
) と譜刻する数字を使うことで音符に付け加えることができます:
c-3 e-5 b-2 a-1
通常、アーティキュレーションと運指法は自動的に刻譜されます。しかしながら、あなたはダッシュ (-
) を ^
(上へ) または
_
(下へ) に置き換えることによって方向を指定することができます。さらに、あなたは同じ音符に複数のアーティキュレーションを使用することもできます。しかしながらたいていの場合は、LilyPond にアーティキュレーションの方向を決定させるのが一番です。
c_-^1 d^. f^4_2-> e^-_+
強弱記号
音楽用語集: dynamics, crescendo decrescendo
強弱記号は音符にバック スラッシュ
(訳者注: バック スラッシュは英語フォントではスラッシュ /
を左右反転させたもの、日本語フォントでは円マーク
¥
になるのが一般的です。)
付きのマークを付け加えることによって作成されます:
c\ff c\mf c\p c\pp
クレッシェンドとデクレッシェンドはコマンド \<
と
\>
によって開始されます。次の強弱記号 – 例えば、\f
– が (デ)クレッシェンドを終わらせます。コマンド \!
を使って終わらせることもできます:
c2\< c2\ff\> c2 c2\!
参照
記譜法リファレンス: Articulations and ornamentations, Fingering instructions, Dynamics
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < アーティキュレーションと強弱記号 ] | [ 上へ : 単一譜表表記 ] | [ 自動連桁と手動連桁 > ] |
2.1.4 テキストを追加する
テキストをあなたの楽譜に追加することができます:
c1^"espr" a_"legato"
追加のフォーマット指定を \markup
コマンドで追加することができます:
c1^\markup{ \bold espr} a1_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
参照
記譜法リファレンス: Writing text
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < テキストを追加する ] | [ 上へ : 単一譜表表記 ] | [ 高度なリズム コマンド > ] |
2.1.5 自動連桁と手動連桁
音楽用語集: beam
すべての連桁は自動的に描かれます:
a8 ais d ees r d c16 b a8
あなたが自動連桁を好まない場合、手動で上書きすることもできます。ある箇所の連桁を修正するには、連桁を付ける最初の音符に [
を、最後の音符に ]
を付け加えます。
a8[ ais] d[ ees r d] a b
もしあなたが楽譜全体あるいは一部で自動連桁を Off にしたいのなら、自動連桁を Off にするにはコマンド \autoBeamOff
を、再度自動連桁を On にするには \autoBeamOn
を使用します。
\autoBeamOff a8 c b4 d8. c16 b4 \autoBeamOn a8 c b4 d8. c16 b4
参照
記譜法リファレンス: Automatic beams, Manual beams
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 自動連桁と手動連桁 ] | [ 上へ : 単一譜表表記 ] | [ 同時に演奏する複数の音符 > ] |
2.1.6 高度なリズム コマンド
部分小節
音楽用語集: anacrusis
ピックアップ (訳者: 本来の拍子以外の拍子を持つ小節のこと) (または弱拍
(原語: anarusis、西洋音楽用語の 1 つで楽曲が第 1 拍以外から開始すること)) はキーワード \partial
によって挿入されます。この後に演奏時間が続きます:
\partial 4
は 4 分音符のピックアップであり、\partial 8
は 8 分音符のピックアップです。
\partial 8 f8 c2 d
連符
音楽用語集: note value, triplet
連符は \times
キーワードによって作成されます。これは 2 つの引数をとります: 分数と楽譜の断片です。楽譜の断片の演奏時間と分数が乗算されます。3 連符は表記された演奏時間の 2/3 の長さなので、3 連符は分数として 2/3 を持ちます。
\times 2/3 { f8 g a } \times 2/3 { c r c } \times 2/3 { f,8 g16[ a g a] } \times 2/3 { d4 a8 }
装飾小音符
音楽用語集: grace notes, acciaccatura, appoggiatura
装飾小音符は \grace
コマンドによって作成されますが、キーワード \appoggiatura
や \acciaccatura
による接頭音楽表記によっても作成されます:
c2 \grace { a32[ b] } c2 c2 \appoggiatura b16 c2 c2 \acciaccatura b16 c2
参照
記譜法リファレンス: Grace notes, Tuplets, Upbeats
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 高度なリズム コマンド ] | [ 上へ : 一般的な記譜法 ] | [ 音楽表記についての説明 > ] |
2.2 同時に演奏する複数の音符
このセクションでは同時に複数の表記 – 複数の楽器、単一の楽器に対する複数の譜 (すなわちピアノ)、和音 – を持つ方法について紹介します。
音楽の中での多声は楽曲の中にある複数の声部を参照します。LilyPond の中での多声は同じ譜表上にある複数の声部を参照します。
2.2.1 音楽表記についての説明 | ||
2.2.2 複数の譜 | ||
2.2.3 譜表グループ | ||
2.2.4 音符を組み合わせて和音にする | ||
2.2.5 単一譜表での多声 |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 同時に演奏する複数の音符 ] | [ 上へ : 同時に演奏する複数の音符 ] | [ 複数の譜 > ] |
2.2.1 音楽表記についての説明
LilyPond 入力ファイルの中では、音楽は音楽表記によって表されます。単一の音符は 1 つの音楽表記になります:
a4
表記を波括弧で括ることによって複合音楽表記が作成されます。2 つの音符を持つ複合音楽表記を作成しました:
{ a4 g4 }
波括弧の中にある音楽表記 (例えば、いくつかの音符) のグループはそれらがシークエンスであるということを意味しています (つまり、それぞれの音符は前の音符に続くということです)。もう 1 つ音楽表記の結果を示します:
{ { a4 g } f g }
数学的表記との類似
このメカニズムは数学式と似ています: 大きな式は小さな式を組み合わせることによって作成されます。そのような式は表記と呼ばれ、それらの定義は再帰的なのであなたは任意に複雑で大きな表記を作ることができます。例えば、
1 1 + 2 (1 + 2) * 3 ((1 + 2) * 3) / (4 * 5)
これは表記のシークエンスであり、各表記は次の (より大きな) 表記に組み込まれています。最も単純な表記は数であり、より大きな表記は演算子 (+
, *
,
/
など) と括弧を組み合わせることによって作成されます。数学式と同様に、音楽表記も任意の深さにネストさせることができ、それは多声楽譜のような複雑な音楽のために必要なことです。
同時進行の音楽表記: 複数の譜
音楽用語集: polyphony
このテクニックは多声音楽に対して有用です。複数の声部や複数の譜を持つ音楽を入力するために、音楽表記を並列に組み合わせます。2 つの声部を同時に演奏すべきであるということを示すには、単純に音楽表記を同時進行するよう組み合わせて入力します。‘同時進行’ の音楽表記は <<
と >>
で音楽表記を囲い込むことによって形成されます。以下の例では、3 つのシークエンス (すべてのシークエンスはそれぞれ 2 つの音符を保持しています) が同時進行するように組み合わされています:
\relative c'' { << { a4 g } { f e } { d b } >> }
入力の各レベルに対して異なる量のスペースをインデントとして与えていることに注意してください。LilyPond は行の先頭にどれくらい多く (あるいは少なく) のスペースがあるかを気にしません。しかしながら、上の例のように LilyPond コードにインデントを入れることによって人間にとってはずっと読みやすくなります。
Note: 入力での各音符は前の音符との相対関係にあり、先頭の \relative
コマンドの中にある c''
と相対関係にあるわけではありません。
同時進行する音楽表記: 単一の譜表
楽曲の中にある譜の数を決定するために、LilPond は最初の音楽表記の始まりを調べます。始まりの音楽表記が単一の表記であった場合、楽譜の中の譜表は 1 つです。同時進行の表記であった場合、譜表は複数になります。
\relative c'' { c2 <<c e>> << { e f } { c <<b d>> } >> }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 音楽表記についての説明 ] | [ 上へ : 同時に演奏する複数の音符 ] | [ 譜表グループ > ] |
2.2.2 複数の譜
音楽表記についての説明 で見てきたように、LilyPond 入力ファイルは音楽表記によって構築されています。複数の同時進行の音楽表記で始まる楽譜の場合、LilyPond は複数の譜を作成します。しかしながら、各譜表を明示的に作成すると何が起こるかより容易に見て取ることができます。
複数の譜表を譜刻するには、1 つの譜表を形成する音楽の各部分の前に
\new Staff
を付け加えます。これらの Staff
要素は <<
と >>
で並列に組み合わされます:
\relative c'' { << \new Staff { \clef treble c } \new Staff { \clef bass c,, } >> }
コマンド \new
は 1 つの ‘記譜コンテキスト’ を導入します。記譜コンテキストは音楽的イベント (音符や \clef
コマンドなど) が解釈される環境です。単純な楽曲では、そのような記譜コンテキストは自動的に作成されます。より複雑な楽曲ではコンテキストを明示的に記述することが望ましいです。
コンテキストにはいくつかのタイプがあります。Score
, Staff
, Voice
は旋律記譜を扱います。一方、Lyrics
は歌詞テキストをセットし、ChordNames
はコード ネームを譜刻します。
文法という観点で見ると、\new
を音楽表記の先頭に付け加えることによってより大きな音楽表記が作成されます。これは数学でのマイナス符号に似ています。数式 (4+5) は数学表記であり、-(4-5) はより大きな数学表記です。
ある譜表に挿入された拍子記号はデフォルトで他のすべての譜に影響を与えます。一方で、ある譜表に挿入された調号は他のすべての譜に影響を与えません。記号によってデフォルトの振る舞いが異なるのは、移調する楽器を扱う楽譜の方が複合リズム (polyrhythmic) の楽譜よりも一般的だからです。
\relative c'' { << \new Staff { \clef treble \key d \major \time 3/4 c } \new Staff { \clef bass c,, } >> }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 複数の譜 ] | [ 上へ : 同時に演奏する複数の音符 ] | [ 音符を組み合わせて和音にする > ] |
2.2.3 譜表グループ
音楽用語集: brace
ピアノ譜はブレースでつながれた 2 つの譜表として刻譜されます。そのような譜表を刻譜することは 複数の譜 での多声の例に似ています。しかしながら、今度は表記全体が PianoStaff
の中に挿入されます:
\new PianoStaff << \new Staff … \new Staff … >>
小さな例を挙げます:
\relative c'' { \new PianoStaff << \new Staff { \time 2/4 c4 e g g, } \new Staff { \clef bass c,, c' e c } >> }
ピアノ譜以外の譜表グループ化はオーケストラ譜向けには \new GrandStaff
で、ボーカル譜向けには \new ChoirStaff
で導入されます。これらの譜表グループはそれぞれタイプの異なるコンテキストを形成し、各システム
(訳者: 楽譜 1 行分のこと。ピアノ譜では右手と左手の 2 つの譜表ペアでの 1 行が
1 システムになります) の左端にブレースを付けて、さらに、小節線の高さを制御します。
参照
記譜法リファレンス: Keyboard and other multi-staff instruments, Displaying staves
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 譜表グループ ] | [ 上へ : 同時に演奏する複数の音符 ] | [ 単一譜表での多声 > ] |
2.2.4 音符を組み合わせて和音にする
音楽用語集: chord
音符を << ... >>
で囲んでそれらの音符が同時進行であることを示すことによって、それらの音符を和音として組み合わせる方法について見てきました。しかしながら、和音であることを示すための通常の方法は音符を < ... > (山括弧)
で囲みます。和音の中にある音符はすべて同じ演奏時間でなければならず、その演奏時間は山括弧を閉じた後に置かれなければならないということに注意してください。
r4 <c e g>4 <c f a>2
和音は単一の音符とほとんど同じであると考えてください: 単一の音符に付け加えられるものはほとんどすべて和音にも付け加えられ、付け加えるものはすべて山括弧の外に付け加えられなければなりません。例えば、あなたは連桁やタイなどのマークをコードに組み合わせることができます。それらは山括弧の外側に置かれなければなりません。
r4 <c e g>8[ <c f a>]~ <c f a>2 r4 <c e g>8( <c e g>\> <c e g>4 <c f a>\!)
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 音符を組み合わせて和音にする ] | [ 上へ : 同時に演奏する複数の音符 ] | [ 歌曲 > ] |
2.2.5 単一譜表での多声
異なる旋律が単一の譜に組み込まれる場合、それらは多声部として刻譜されます。各声部はそれ自体の符幹 (符頭から上下に出る棒)、スラー、連桁 (符幹と符幹を結ぶ横棒) を持ちます。最上段の声部は符頭から上に伸びる符幹を持ち、最下段の声部は下に伸びる符幹を持ちます。
そのような多声のパートを入力するには、各声部をシークエンスとして
({ ... }
を使って) 入力し、それらを \\
で区切って結合することで同時進行するように組み合わせます:
<< { a4 g2 f4~ f4 } \\ { r4 g4 f2 f4 } >>
多声部音楽を刻譜する場合、空白休符を使用すると都合が良いかもしれません:
それは刻譜されない休符です。空白休符は一時的に演奏されない声部の空白期間を埋めるのに有用です。今度は通常の休符 (r
) の代わりに空白休符 (s
) を使った上と同じ例を示します:
<< { a4 g2 f4~ f4 } \\ { s4 g4 f2 f4 } >>
さらに、これらの表記は任意にネストさせることができます。
<< \new Staff << { a4 g2 f4~ f4 } \\ { s4 g4 f2 f4 } >> \new Staff << \clef bass { <c g>1 ~ <c g>4 } \\ { e,,4 d e2 ~ e4} >> >>
参照
記譜法リファレンス: Simultaneous notes
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 単一譜表での多声 ] | [ 上へ : 一般的な記譜法 ] | [ 簡単な歌詞をセットする > ] |
2.3 歌曲
このセクションでは声楽とシンプルな歌曲譜についての紹介を行います。
2.3.1 簡単な歌詞をセットする | ||
2.3.2 歌詞を旋律に揃える | ||
2.3.3 複数の譜への歌詞 |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 歌曲 ] | [ 上へ : 歌曲 ] | [ 歌詞を旋律に揃える > ] |
2.3.1 簡単な歌詞をセットする
音楽用語集: lyrics
童謡の冒頭部分の旋律があります。歌詞は Girls and boys come out to play です:
\relative c'' { \key g \major \time 6/8 d4 b8 c4 a8 d4 b8 g4 }
\addlyrics
キーワードで組み合わせることによって、歌詞をこれらの音符にセットすることができます。歌詞は音節ごとにスペースで区切って入力します。
<< \relative c'' { \key g \major \time 6/8 d4 b8 c4 a8 d4 b8 g4 } \addlyrics { Girls and boys come out to play, } >>
波括弧が音楽と歌詞を区切っていて、音楽と歌詞が同時進行であることを示すために楽曲全体が << ... >>
で囲まれていることに注意してください。
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 簡単な歌詞をセットする ] | [ 上へ : 歌曲 ] | [ 複数の譜への歌詞 > ] |
2.3.2 歌詞を旋律に揃える
音楽用語集: melisma, extender line
童謡の次の行は The moon doth shine as bright as day です。これを前の例に付け加えてみましょう:
<< \relative c'' { \key g \major \time 6/8 d4 b8 c4 a8 d4 b8 g4 g8 a4 b8 c b a d4 b8 g4. } \addlyrics { Girls and boys come out to play, The moon doth shine as bright as day; } >>
付け足した歌詞は音符に適切に揃っていません。shine は 2 音符に亘って歌われるべきですが、そうなっていません。これはメリスマと呼ばれ、単音節が複数の音符に亘って歌われます。ある音節を複数に広げる方法はいくつかあり、最も簡単なのはそれらの音符にスラーを付け加えることです。詳細は タイとスラー を参照してください。
<< \relative c'' { \key g \major \time 6/8 d4 b8 c4 a8 d4 b8 g4 g8 a4 b8 c( b) a d4 b8 g4. } \addlyrics { Girls and boys come out to play, The moon doth shine as bright as day; } >>
今度は、単語が正しく音符に対して並んでいます。しかしながら、shine as 上の音符に対する自動連桁は適当でないように見えます。これを修正するために、手動連桁コマンドを挿入して自動連桁をオーバライドします。詳細は 自動連桁と手動連桁 を参照してください。
<< \relative c'' { \key g \major \time 6/8 d4 b8 c4 a8 d4 b8 g4 g8 a4 b8 c([ b]) a d4 b8 g4. } \addlyrics { Girls and boys come out to play, The moon doth shine as bright as day; } >>
スラーを用いる方法の外に、メリスマに含まれるべきである各音符に対応したアンダスコア _
を用いることによってその歌詞がメリスマであるということを示すことができます:
<< \relative c'' { \key g \major \time 6/8 d4 b8 c4 a8 d4 b8 g4 g8 a4 b8 c[ b] a d4 b8 g4. } \addlyrics { Girls and boys come out to play, The moon doth shine _ as bright as day; } >>
通常、ある歌詞がいくつかの音符に亘って延長される場合や、単一の非常に長い音符に割り当てられる場合、その歌詞からその歌詞に対応しているすべての音符の下に延長線が描かれます。延長線は 2 つのアンダスコア __
で挿入されます。今度は、例として Purcell の Dido and Æeneas から最初の 3 小節目からを挙げます:
<< \relative c'' { \key g \minor \time 3/2 g2 a bes bes( a) b c4.( bes8 a4. g8 fis4.) g8 fis1 } \addlyrics { When I am laid, am laid __ in earth, } >>
今までの例には複数の音節を持つ単語はありませんでした。通常、複数の音節を持つ単語は音節ごとに 1 つの音符に分割され、音節間はハイフンで結ばれます。ハイフンは 2 つのダッシュとして入力され、その結果として音節の間にハイフンが描かれます。今度の例では歌詞に複数の音節を持つ単語が含まれ、我々が今まで歌詞を音符に揃える方法について学んだことがすべて含まれています。
<< \relative c' { \key g \major \time 3/4 \partial 4 d4 g4 g a8( b) g4 g4 b8( c) d4 d e4 c2 } \addlyrics { A -- way in a __ man -- ger, no __ crib for a bed, __ } >>
ある歌詞では – 特にイタリア語では – 反対のことが求められます:
複数の音節を 1 つの音符にセットします。これは音節を単一のアンダスコア _
(スペース無し) でリンクさせるか、クォートで囲むことによって達成されます。今度の例は Rossini の Figaro からで、Largo al factotum の al は
Largo の go と同じ音符で歌われなければなりません:
<< \relative c' { \clef bass \key c \major \time 6/8 c4.~ c8 d b c([ d]) b c d b c } \addlyrics { Lar -- go_al fac -- to -- tum del -- la cit -- tà } >>
参照
記譜法リファレンス: Vocal music
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 歌詞を旋律に揃える ] | [ 上へ : 歌曲 ] | [ 仕上げ > ] |
2.3.3 複数の譜への歌詞
\addlyrics
を用いた簡単なアプローチは歌詞を複数の譜表の下に置くために使用することができます。ここで、Handel の Judas Maccabæus から例を挙げます:
<< \relative c'' { \key f \major \time 6/8 \partial 8 c8 c([ bes]) a a([ g]) f f'4. b, c4.~ c4 } \addlyrics { Let flee -- cy flocks the hills a -- dorn, __ } \relative c' { \key f \major \time 6/8 \partial 8 r8 r4. r4 c8 a'([ g]) f f([ e]) d e([ d]) c bes'4 } \addlyrics { Let flee -- cy flocks the hills a -- dorn, } >>
この簡単な例よりも複雑な楽譜では、変数を使って楽譜構造を音符と歌詞から分離したほうが良いです。このことは 変数を用いて楽曲を編成する で議論されています。
参照
記譜法リファレンス: Vocal music
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 複数の譜への歌詞 ] | [ 上へ : 一般的な記譜法 ] | [ 変数を用いて楽曲を編成する > ] |
2.4 仕上げ
このセクションはチュートリアルの最終セクションです。単純な曲に仕上げを加える方法を示し、このマニュアルの残りの部分についての紹介を行います。
2.4.1 変数を用いて楽曲を編成する | ||
2.4.2 バージョン番号 | ||
2.4.3 タイトルを付け加える | ||
2.4.4 絶対音符名 | ||
2.4.5 このチュートリアルの後にすべきこと |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 仕上げ ] | [ 上へ : 仕上げ ] | [ バージョン番号 > ] |
2.4.1 変数を用いて楽曲を編成する
これまで議論してきたすべての要素を組み合わせてより大きなファイルを作成すると、音楽表記はずっと大きくなります。多くの譜を持つ多声音楽では、入力ファイルはとても混乱しやすくなります。変数を使って混乱を避けることができます。
変数 (これは識別子やマクロとも言えます) を使うことによって、音楽表記の複雑さを打破することができます。変数は以下のように割り当てられます:
namedMusic = { … }
音楽表記 namedMusic
の内容は名前の前にバックスラッシュを置くことによって
(\namedMusic
、これはまさに LilyPond の標準コマンドと同様です) 後で使用することができます。
violin = \new Staff { \relative c'' { a4 b c b } } cello = \new Staff { \relative c { \clef bass e2 d } } { << \violin \cello >> }
変数の名前に使えるのはアルファベットだけであり、数字、アンダスコア、ダッシュを使うことはできません。
変数はメインの音楽表記の前に定義されていなければなりません。しかしながら定義後は必要に応じて何度も使用されるかもしれません。楽曲のある部分が何度もリピートしている場合、入力の手間を省くために、変数は他の変数の定義の中ででも使用されるかもしれません。
tripletA = \times 2/3 { c,8 e g } barA = { \tripletA \tripletA \tripletA \tripletA } \relative c'' { \barA \barA }
変数は入力ファイルの中にある他の多くのタイプに対しても使用されるかもしれません。例えば以下のようにです:
width = 4.5\cm name = "Wendy" aFivePaper = \paper { paperheight = 21.0 \cm }
変数の内容次第では、変数は他の場所で使用することができます。以下の例は上の例の変数を使用しています:
\paper { \aFivePaper line-width = \width } { c4^\name }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 変数を用いて楽曲を編成する ] | [ 上へ : 仕上げ ] | [ タイトルを付け加える > ] |
2.4.2 バージョン番号
\version
ステートメントはその入力ファイルが LilyPond のどのバージョンに対して書かれているのかを記録しています:
\version "2.13.45"
慣習上、これは LilyPond ファイルの先頭に置きます。
これらの注釈は LilyPond の将来のアップグレードをよりスムーズにします。構文の変更は特別なプログラム – convert-ly
– によって扱われます。このプログラムは適用する規則を決定するために \version
を使用します。詳細は
Updating files with convert-ly を参照してください。
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < バージョン番号 ] | [ 上へ : 仕上げ ] | [ 絶対音符名 > ] |
2.4.3 タイトルを付け加える
タイトル、作曲者、作品番号、それと類似の情報は \header
ブロックの中に挿入されます。これはメインの音楽表記の外に存在します。普通、\header
ブロックはバージョン番号の下に置かれます。
\version "2.13.45" \header { title = "Symphony" composer = "Me" opus = "Op. 9" } { … music … }
ファイルが処理されるとき、タイトルと作曲者は楽譜の上に譜刻されます。タイトルについての更なる情報は、 Creating titles を参照してください。
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < タイトルを付け加える ] | [ 上へ : 仕上げ ] | [ このチュートリアルの後にすべきこと > ] |
2.4.4 絶対音符名
これまで我々は常にピッチを定義するのに \relative
を使ってきました。これはたいていの音楽を入力するのに最も容易な方法です。しかしながら、ピッチを定義するための方法がもう一つ存在します。絶対モードです。
あなたが \relative
を省略した場合、LilyPond はすべてのピッチを絶対値として扱います。c'
は常にミドル C を意味し、b
は常にミドル C の 1 音下の音符を意味し、g,
は常にヘ音記号の譜表の最下段の譜線上にある音符を意味します。
{ \clef bass c' b g, g, g, f, f c' }
今度は 4 オクターブの音階があります:
{ \clef bass c, d, e, f, g, a, b, c d e f g a b c' d' \clef treble e' f' g' a' b' c'' d'' e'' f'' g'' a'' b'' c'''1 }
見て取れるように、ト音記号に旋律を書く場合は多くのクォート '
記号が使用されます。モーツァルトからの以下の楽譜の断片について考えてみます:
{ \key a \major \time 6/8 cis''8. d''16 cis''8 e''4 e''8 b'8. cis''16 b'8 d''4 d''8 }
これらすべてのクォート記号は入力ファイルを読みにくいものにして、エラーの原因になります。\relative
を使うことで、上の例はずっと読みやくす、入力しやすくなります:
\relative c'' { \key a \major \time 6/8 cis8. d16 cis8 e4 e8 b8. cis16 b8 d4 d8 }
\relative
モードを使っているときにあなたがオクターブ記号 ('
や
,
) を付け間違えた場合、すぐにわかります –
多くの音符が間違ったオクターブに譜刻されます。絶対モードを使っているときに、ある付け間違いをした場合、はっきりとせず、見つけにくいです。
しかしながら、絶対モードは大きな音程を持つ音楽に対しては有用であり、LilyPond ファイルをコンピュータで生成する場合は非常に有用です。
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 基礎となるコンセプト >> ] | ||
[ < 絶対音符名 ] | [ 上へ : 仕上げ ] | [ 基礎となるコンセプト > ] |
2.4.5 このチュートリアルの後にすべきこと
このチュートリアルを終えた後、あなたは 1、2 の楽譜を書いてみるべきです。テンプレート にある楽譜の 1 つに音符を付け加えることから始めてください。あなたがこのチュートリアルではカバーされなかった記譜法を必要とする場合、 Musical notation で始まる記譜法リファレンスを参照してください。あなたがテンプレートではカバーされていない楽器のアンサンブルのために楽譜を書こうとする場合、テンプレートを拡張する を参照してください。
あなたがいくつかの短い楽譜を書き終えた後は、学習用マニュアルの残りの部分 (3~5 章) を読んでください。もちろん、今それらを読んでも何も問題はありません!しかしながら、学習用マニュアルの残りの部分はあなたが LilyPond 入力に馴れていると仮定しています。あなたはそれらの章を今すぐ一読し、もっと経験を積んだ後に読み直すことを望むかもしれません。
このチュートリアルと学習マニュアルの残りの部分では、各セクションの最後に参照があり、他のセクションを参照してます: 初めて本書を読むときはこれらの参照を追うべきではありません。あなたが学習マニュアルをすべて読み終えたとき、いくつかのセクションを読み返し、さらに参照を追おうと思うかもしれません。
FIX FIX FIX をまだ読んでいないのなら、それを読んでください。LilyPond についての情報は多いため、新しく LilyPond を始める人はしばしばどこを読むべきかわからないことがあります。5 分間使ってそのセクションを注意深く読めば、あなたは何時間も見当違いの場所を読むフラストレーションを持たずに済ますことができるでしょう!
[ << 一般的な記譜法 ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < このチュートリアルの後にすべきこと ] | [ 上へ : トップ ページ ] | [ LilyPond 入力ファイルの仕組み > ] |
3. 基礎となるコンセプト
チュートリアルではシンプルなテキスト ファイルから美しい楽譜を譜刻する方法を見てきました。このセクションでは、同じように美しいがより複雑な楽譜を作り出すのに必要とされるコンセプトとテクニックについて紹介します。
3.1 LilyPond 入力ファイルの仕組み | ||
3.2 音楽を保持するボイス | ||
3.3 コンテキストとエングラーバ | ||
3.4 テンプレートを拡張する |
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < 基礎となるコンセプト ] | [ 上へ : 基礎となるコンセプト ] | [ LilyPond ファイル構造の紹介 > ] |
3.1 LilyPond 入力ファイルの仕組み
LilyPond の入力フォーマットは非常に自由な形式であり、経験豊富なユーザにとってはファイルを構築する際の自由度が高いです。しかしながら、この自由度が新しいユーザにとっては混乱の元になります。このセクションではこの入力ファイルの構造についていくつか説明します。しかしながら、簡潔さを保つためにいくつかの詳細については目をつぶるかもしれません。入力フォーマットについての完全な記述は、 File structure を参照してください。
3.1.1 LilyPond ファイル構造の紹介 | ||
3.1.2 Score は (単一の) 複合的な音楽表記 | ||
3.1.3 音楽表記をネストする | ||
3.1.4 ネストされない括弧とタイ |
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < LilyPond 入力ファイルの仕組み ] | [ 上へ : LilyPond 入力ファイルの仕組み ] | [ Score は (単一の) 複合的な音楽表記 > ] |
3.1.1 LilyPond ファイル構造の紹介
LilyPond 入力ファイルの基本例は以下のようなものです:
\version "2.13.45" \header { } \score { ...compound music expression... % all the music goes here! ...複合音楽表記... % すべての音楽がここに入ります! \layout { } \midi { } }
基本パターンは本当にさまざまです。しかしながら、この例は開始点として役に立ちます。
これまで、あなたが見てきた例では \score {}
コマンドを使用していませんでした。その理由は、あなたが LilyPond に与えたのが簡単な入力であった場合、LilyPond
が自動的に追加のコマンドを付け加えるからです。LilyPond は以下のような入力:
\relative c'' { c4 a d c }
を以下を簡略表記したものとして扱います:
\book { \score { \new Staff { \new Voice { \relative c'' { c4 a b c } } } \layout { } } }
言い換えると、入力が保持しているのが単一の音楽表記である場合、LilyPond はまるでその音楽表記が上で示されたコマンドで包まれているかのように解釈します。
一言警告! LilyPond ドキュメントの中にある多くの例では、
\new Staff
と \new Voice
コマンドは暗黙的に作成されるために省略されています。簡単な例ではそれでうまくいきますが、より複雑な例の場合 – 特に追加のコマンドが使用される場合 – コンテキストの暗黙的な作成は予想外の結果となる可能性があります。多分、予期しない余分な譜が作成されるでしょう。コンテキストを明示的に作成する方法は コンテキストとエングラーバ で説明されています。
Note: 数行以上の音楽を入力する場合、常に譜とボイスを明示的に作成したほうが賢明です。
今度は最初の例に戻って、\score
コマンドについて検証します。他のことはデフォルトのままにしておきます。
\score
ブロックは常にただ 1 つの音楽表記を保持していなければなりません。そして、その音楽表記は \score
コマンドのすぐ後に置かれなければなりません。音楽表記は単一の音符である場合もありますし、以下のような巨大な複合表記である場合もあるということを覚えておいてください:
{ \new StaffGroup << ...insert the whole score of a Wagner opera in here... ...ワーグナーのオペラの楽譜全体がここに入ります... >> }
すべては { ... }
の内部にあるため、それは 1 つの音楽表記であるとカウントされます。
以前見てきたように、\score
ブロックは他のものを含む可能性もあります。例えば以下のように:
\score { { c'4 a b c' } \header { } \layout { } \midi { } }
これら 3 つのコマンド – \header
, \layout
, \midi
– は特別なものであるということに注意してください:
バックスラッシュ (\
) で始まる他の多くのコマンドとは異なり、これらは音楽表記ではなく、何らかの音楽表記の一部でもありません。そのため、これらは \score
ブロックの内部に置かれるかもしれませんし、外部に置かれるかもしれません。実際、これらのコマンドは一般的に \score
ブロックの外側に置かれます –
例えば、このセクションの最初の例のように \header
はしばしば \score
コマンドの上に置かれます。
以前は見なかった他の 2 つのコマンドは \layout { }
と
\midi { }
です。それらが上記のように記述された場合、LilyPond はそれぞれ譜刻された出力と
MIDI 出力を作り出します。それらは記譜法リファレンスの
Score layout と
Creating MIDI files で完全に記述されています。
あなたは複数の \score
ブロックを記述するかもしれません。それらはそれぞれ別々の楽譜として扱われますが、それらは結合されて単一の出力ファイルに収められます。\book
コマンドは必要ありません – このコマンドは暗黙的に 1 つ作成されます。しかしながら、あなたが 1 つの .ly
ファイルから別々に分かれた出力ファイルを作成しようとするのなら、それぞれのセクションを異なる出力ファイルに分けるために \book
コマンドが使用されます:
各 \book
ブロックは別々の出力ファイルを作り出します。
要約:
各 \book
ブロックは別々の出力ファイル (つまり PDF ファイル) を作成します。あなたが明示的に \book
コマンドを記述しなかった場合、LilyPond は暗黙的に入力コードを \book
ブロックで包み込みます。
各 \score
ブロックは \book
ブロック内部で別々の音楽表記のチャンク (塊) となります。
各 \layout
ブロックはそのブロックを含んでいる \score
ブロックや
\book
ブロックに影響を与えます –
つまり、ある \score
ブロックの内部にある \layout
ブロックはその \score
ブロックにだけ影響を与え、\score
ブロックの外部にある (それゆえ、明示的あるいは暗黙的に \book
ブロックの中にある) \layout
ブロックはその \book
ブロックの中にあるすべての \score
に影響を与えます。
詳細は、 Multiple scores in a book を参照してください。
もう一つの重要な簡略表記は変数を定義することです。すべてのテンプレートがこれを使っています:
melody = \relative c' { c4 a b c } \score { \melody }
LilyPond がこのファイルを見ると、melody
の値 (イコール記号の後にあるすべて) を記憶し、\melody
と記述された箇所すべてにその値を挿入します。変数の名前について特別なことは何もありません – 変数名は melody
,
global
, TimeKey
, pianorighthand
, foofoobarbaz
などとなります。詳細は、変数と関数を用いて入力の手間を省く を参照してください。変数名はアルファベットだけで構成されていて、LilyPond コマンド名と異なっている限りは、ほぼどんな名前でも使用できるということを覚えておいてください。変数名の厳密な制限については、
File structure で詳述されています。
参照
入力フォーマットの完全な定義は、 File structure を参照してください。
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < LilyPond ファイル構造の紹介 ] | [ 上へ : LilyPond 入力ファイルの仕組み ] | [ 音楽表記をネストする > ] |
3.1.2 Score は (単一の) 複合的な音楽表記
前のセクション – LilyPond ファイル構造の紹介 – で
LilyPond 入力ファイルの一般的な構造について見てきました。しかしながら、我々は最も重要な部分を飛ばしてきたようです:
どうやって \score
の後に記述するものを見つけ出すのでしょうか?
我々はそのことを完全には飛ばしてきませんでした。この大きな謎は簡単なことであり、謎でもなんでもないのです。以下の行がこの謎についてすべてを説明しています:
\score
ブロックは 1 つの複合音楽表記で始まらなくてはなりません。
音楽表記と複合音楽表記が意味しているものを理解するには、チュートリアルの 音楽表記についての説明 を読み返すと役に立つかもしれません。そこでは、小さな音楽表記 – 音符から始めて、それから和音など – から大きな音楽表記を構築する方法を説明しています。今度は、大きな音楽表記からはじめて、その複雑さを減らしていきます。
\score { { % this brace begins the overall compound music expression % この波括弧は複合音楽表記全体の開始点です \new StaffGroup << ...insert the whole score of a Wagner opera in here... ...ワーグナーのオペラの楽譜全体がここに入ります... >> } % this brace ends the overall compound music expression % この波括弧は複合音楽表記全体の終了点です \layout { } }
ワーグナーのオペラの長さはこのマニュアルの軽く 2 倍はあります。そのため、歌手とピアノだけを加えることにします。このアンサンブルでは複数の譜をまとめて左端に波括弧を付ける
StaffGroup
は必要ありません。そのため、それを削除します。しかしながら、歌手とピアノが必要です。
\score { << \new Staff = "singer" << >> \new PianoStaff = "piano" << >> >> \layout { } }
歌手とピアノが同時進行であることを示すために { ... }
の代わりに
<< ... >>
を使用するということを覚えておいてください。我々はボーカル パートとピアノパートが同時進行であるということを明確に示したいのであり、どちらかがもう一方の後に演奏されるのではないのです!歌手の譜表は一続きの音楽表記を 1 つだけ保持するため、歌手の譜表に対して
<< ... >> は必ずしも必要ありません。しかしながら、譜表の中の音楽が 2 つの同時進行の音楽表記 – つまり、2 つの同時進行のボイスであるとか、歌詞付きの歌 – である場合、波括弧の代わりに << ... >>
を使う必要があります。後で実際の音楽を加えてみますが、ここではダミーの音符と歌詞を入力してみます。
\score { << \new Staff = "singer" << \new Voice = "vocal" { c'1 } \addlyrics { And } >> \new PianoStaff = "piano" << \new Staff = "upper" { c'1 } \new Staff = "lower" { c'1 } >> >> \layout { } }
更に詳細を加えていきます。歌手の譜表は Voice
(LilyPond では、この用語は音符のセットを参照するものであり、必ずしもボーカルの音符であるわけではありません
– 例えば、一般にバイオリンは 1 つのボイスを演奏します) と歌詞を保持します。さらに、ピアノの譜表は上部譜表 (右手) と下部譜表 (左手) を保持します。
この段階で、音符の入力を開始することができます。\new Voice = "vocal"
の後の波括弧の中に、以下を書き加えることができます:
\relative c'' { r4 d8\noBeam g, c4 r }
しかしながら、そのようにすると、\score
セクションは非常に長くなり、何が起こるのか理解しにくくなります。そのため、直接音符を付け加える代わりに変数を使用しましょう。前のセクションで変数についての紹介を行いました。覚えていますよね?では、いくつかの音符を加えて実際の楽譜の一部を作成してみましょう:
melody = \relative c'' { r4 d8\noBeam g, c4 r } text = \lyricmode { And God said, } upper = \relative c'' { <g d g,>2~ <g d g,> } lower = \relative c { b2 e2 } \score { << \new Staff = "singer" << \new Voice = "vocal" { \melody } \addlyrics { \text } >> \new PianoStaff = "piano" << \new Staff = "upper" { \upper } \new Staff = "lower" { \clef "bass" \lower } >> >> \layout { } }
音符 – これは \relative
の中で導入されたり、音楽表記の中に直接含まれています – と歌詞 – これは \lyricmode
で導入されています –
の違いに気をつけてください。前者は LilyPond に後に続く内容を音楽として解釈するように指示し、後者はテキストとして解釈するように指示します。
\score
セクションを書いている (あるいは読んでいる) とき、ゆっくりと注意深く進めてください。外側から始めて、それから内部の細かな部分に取り組んでください。さらに、きちんとインデントを入れると非常に役に立ちます - これは、同じレベルにある各要素はテキスト エディタの中で同じ水平位置から始まるということを保証します。
参照
記譜法リファレンス: Structure of a score
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < Score は (単一の) 複合的な音楽表記 ] | [ 上へ : LilyPond 入力ファイルの仕組み ] | [ ネストされない括弧とタイ > ] |
3.1.3 音楽表記をネストする
すべての譜をファイルの始めに宣言することは必須ではありません。譜はどこででも臨時に導入される可能性があります。これはオッシアを作成する際に特に有用です – ossia を参照してください。ここで、3 つの音符に対して臨時に新しい譜表を導入する方法を示すちょっとした例を挙げます:
\new Staff { \relative g' { r4 g8 g c4 c8 d | e4 r8 << { f c c } \new Staff { f8 f c } >> r4 | } }
音部記号のサイズは音部変更後に譜刻される音部記号のサイズ – 行の開始点での音部記号よりも少し小さい – と同じであるということに注意してください。これは行の途中で譜刻される音部記号全般に言えることです。
オッシアは以下のように譜表の上に置かれるかもしれません:
\new Staff = "main" { \relative g' { r4 g8 g c4 c8 d | e4 r8 << { f c c } \new Staff \with { alignAboveContext = #"main" } { f8 f c } >> r4 | } }
この例は後で説明される \with
を使用しています。このコマンドは単一の譜表のデフォルトの振る舞いを変更することを意味します。ここでは、このコマンドは新しい譜表をデフォルトの位置 (“main” と呼ばれている譜表の下) ではなく、上に置くべきであると言っています。
参照
オッシアはしばしば音部記号や拍子記号無しで描かれ、通常は小さなフォントで描かれます。これらはまだ紹介されていない追加のコマンドを必要とします。オブジェクトのサイズ と Ossia staves を参照してください。
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < 音楽表記をネストする ] | [ 上へ : LilyPond 入力ファイルの仕組み ] | [ 音楽を保持するボイス > ] |
3.1.4 ネストされない括弧とタイ
これまでに LilyPond への入力ファイルを書く際に使用する括弧にはいくつかの種類があるということを見てきました。これらは異なる規則 – 最初は混乱を引き起こす可能性があります – に従います。規則についての説明を行う前に、括弧の種類を再確認してみましょう。
括弧のタイプ | 機能 |
---|---|
| 一続きの音楽を囲みます |
| 和音となる音符を囲みます |
| 同時進行する音楽表記を囲みます |
| スラーの開始点と終了点を意味します |
| フレージング スラーの開始点と終了点を意味します |
| 手動連桁の開始点と終了点を意味します |
こららに対して、音符の間や音符をまたがって線を生成する他の構文を付け加えるべきです: タイ (チルド ~
によって記述されます)、連符 (\times x/y {..}
として記述されます)、グレイス ノート (\grace{..}
として記述されます) です。
LilyPond 以外では、種類の異なる括弧が適切にネストされること –
[ { ( .. ) } ]
のように – が一般的な使い方であり、括弧の終わりの順序は正確に括弧の始まりの順序と逆になります。このことは上記の表で ‘囲みます’ という言葉で記述されている
3 種類の括弧に対しては必須となります – それらは適切にネストされなければなりません。しかしながら、残りの括弧 – 上記の表で ‘意味します’ という言葉で記述されいるものと、タイ、連符で使用されるもの – はいかなる括弧ともネストされる必要はありません。実際、これらは何かを囲むという意味では括弧ではありません –
それらは単に何かが始まる場所、終わる場所を示すためのマークです。
そのため、例えばフレージング スラーは手動で挿入される連桁の前に開始して、その手動連桁の前に終わる可能性もあります – たぶん音楽的ではないかもしれませんが、可能性はあります:
{ g8\( a b[ c b\) a] }
一般に、種類の異なる括弧と連符、タイ、装飾小音符に適用される括弧は自由に混ぜ合わせられるかもしれません。以下の例では、連桁は連符の中にまで伸びていて (行 1)、スラーは連符の中にまで伸びていて (行 2)、連桁とスラーが連符の中にまで伸びていて (行 3)、タイが 2 つの連符にまたがっていて、さらにフレージング スラーが連符の外にまで伸びています (行 3 と 4)。
{ r16[ g16 \times 2/3 {r16 e'8] } g16( a \times 2/3 {b d) e' } g8[( a \times 2/3 {b d') e'~]} \times 4/5 {e'32\( a b d' e'} a'4.\) }
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < ネストされない括弧とタイ ] | [ 上へ : 基礎となるコンセプト ] | [ 私はボイスを聴いている > ] |
3.2 音楽を保持するボイス
歌手は歌うボイスを必要とし、それゆえ LilyPond も歌う (演奏する) ボイスを必要とします。楽譜の中にあるすべての楽器に対する実際の音楽はボイスの中に保持されます – このことは LilyPond すべてのコンセプトの中での最も基礎的なことです。
3.2.1 私はボイスを聴いている | ||
3.2.2 ボイスの明示的なインスタンス化 | ||
3.2.3 ボイスとボーカル |
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < 音楽を保持するボイス ] | [ 上へ : 音楽を保持するボイス ] | [ ボイスの明示的なインスタンス化 > ] |
3.2.1 私はボイスを聴いている
LilyPond の楽譜の中で最も低レベルで、最も基礎的であり、最も内部にあるレイヤは ‘ボイス コンテキスト’ または縮めて単に ‘ボイス’ と呼ばれます。ボイスはときどき他の記譜法パッケージの中で ‘レイヤ’ と呼ばれます。
実際、ボイス レイヤまたはコンテキストは音楽を保持することができる唯一のものです。ボイス コンテキストが明示的に宣言されていない場合、この章の始めで見てきたようにボイス コンテキストが 1 つ自動的に生成されます。オーボエなどといった楽器は同時に 1 つの音符だけを演奏できます。そのような楽器のために書かれた音楽は単声であり、ボイスを 1 つだけを必要とします。ピアノのように同時に複数の音符を演奏することができる楽器はしばしば、それらが演奏することのできる同時進行の異なる音符やリズムをエンコードするために、複数のボイスを必要とします。
もちろん、単一のボイスは和音の中で多くの音符を保持することができます。それでは、複数のボイスが実際に必要とされるのはどんな場合なのでしょうか?まずは、4 つの和音を持つ以下の例を見てください:
\key g \major <d g>4 <d fis> <d a'> <d g>
この例は単一の山括弧からなる和音記号< ... >
を使って表記することができ、必要とされるボイスは 1 つだけです。しかしながら、F シャープが A に移行する際に、F シャープは実際には
8 分音符であり、そのあとに 8 分音符の G が続くとしたらどうでしょうか?そのような場合、同時に開始されるが演奏時間が異なる 2 つの音符を持つことになります: 4 分音符の D と 8 分音符の F シャープです。これらの音符をどのように記述すればよいのでしょうか?これらの音符は和音として記述することはできません。なぜなら、和音の中の音符はすべて同じ演奏時間でなければならないからです。そして、それらの音符は同時に開始しなければならないので、2 つのシーケンシャルな
(連続した) 音符として記述することもできません。この場合は 2 つのボイスが必要となります。
上記のことが LilyPond 入力構文でどのように達成されるのかを見てみましょう。
1 つの譜表に複数のボイスがある音楽断片を入力する最も簡単な方法は、各ボイスをシーケンスに (続けて) 入力し (各ボイスを {...}
の中に入れます)、それらのボイスを <<...>>
を使って
同時進行するよう組み合わせます。さらに、各断片は、それぞれが別の断片であることを示すために、ダブル バックスラッシュ \\
で区切られなければなりません。ダブル バックスラッシュが無ければ、すべての音符は単一のボイスの中に挿入され、通常はエラーとなります。このテクニックは、大部分が単声であり、時々短い部分で多声になる楽曲に特に適しています。
以下では、上記の例の和音を 2 つのボイスに分け、経過音とスラーを付け加えています:
\key g \major % Voice "1" Voice "2" << { g4 fis8( g) a4 g } \\ { d4 d d d } >> |
この例では 2 番目のボイスの符幹が下向きになっていることに気づいてください。
今度はもう 1 つ簡単な例を挙げてみます:
\key d \minor % Voice "1" Voice "2" << { r4 g g4. a8 } \\ { d,2 d4 g } >> | << { bes4 bes c bes } \\ { g4 g g8( a) g4 } >> | << { a2. r4 } \\ { fis2. s4 } >> |
各小節で別々に << \\ >>
構造を使用する必要はありません。各小節に音符が少ししかないような音楽の場合、このレイアウトはコードの可読性を良くするのに役立ちます。しかしながら、各小節に多くの音符がある場合、以下のように各ボイスを分離した方が良いかもしれません:
\key d \minor << { % Voice "1" r4 g g4. a8 | bes4 bes c bes | a2. r4 | } \\ { % Voice "2" d,2 d4 g | g4 g g8( a) g4 | fis2. s4 | } >>
この例にあるボイスは 2 つだけです。しかしながら、これと同じ構成にもっと多くのバック スラッシュを付け加えることによって、3 つかそれ以上のボイスを持たせることになるかもしれません。
ボイス コンテキストは "1"
, "2"
などの名前を持ちます。各コンテキストの中では、スラー、符幹、タイ、強弱記号などの垂直方向の向きは適切にセットされます。
\new Staff \relative c' { % Main voice c16 d e f % Voice "1" Voice "2" Voice "3" << { g4 f e } \\ { r8 e4 d c8 ~ } >> | << { d2 e2 } \\ { c8 b16 a b8 g ~ g2 } \\ { s4 b4 c2 } >> | }
これらのボイスはすべてメインのボイスからは分かれています。メインのボイスの音符は<< .. >>
構造の外にあるからです。この << .. >>
構造を同時進行構造と呼ぶことにしましょう。通常、スラーとタイは同じボイス内にある音符だけをつなぎます。そのため、スラーとタイは同時進行構造を出たり入ったりすることはありません。反対に、同じ譜表上にある個々の同時進行構造で、平行の位置にあるボイスは同じボイスになります。さらに、その他のボイス関連プロパティは同時進行構造をまたがって持ち越されます。ここで、上記と同じ例で各ボイスに対して異なる色と符頭を割り当ててみます。あるボイスでの変更は他のボイスに影響を与えませんが、その後に続く同じボイス
(訳者: 平行位置にあるボイス) でその変更が維持されることに注意してください。さらに、タイでつながれた音符は、同じボイスとなる 2 つの同時進行構造にまたがって分かれるかもしれないということに注意してください。
\new Staff \relative c' { % Main voice c16 d e f << % Bar 1 { \voiceOneStyle g4 f e } \\ { \voiceTwoStyle r8 e4 d c8 ~ } >> << % Bar 2 % Voice 1 continues { d2 e2 } \\ % Voice 2 continues { c8 b16 a b8 g ~ g2 } \\ { \voiceThreeStyle s4 b4 c2 } >> }
コマンド \voiceXXXStyle
は主にこのマニュアルのような教育目的のドキュメントで使用することを意図したものです。このコマンドは、各ボイスが容易に見分けられるように、符頭、符幹、連桁の色、それに符頭のスタイルを変更します。ボイス 1 は赤でダイアモンドの符頭を持つようにセットされ、ボイス 2 は青で三角形の符頭を、ボイス 3 は緑で×付きの円を、ボイス 4 (ここでは使用されていません) はマゼンダの×の符頭を持つようにセットされます。\voiceNeutralStyle
(これもここでは使用されていません) は符頭のスタイルをデフォルトに戻します。後ほど、ユーザがこのようなコマンドを作成するための方法を見ていきます。オブジェクトの可視性と色 と 調整のために変数を使用する
を参照してください。
多声部は \relative { }
ブロック内の音符の相対関係を変えません。各音符は直前の音符あるいは直前の和音の最初の音符との相対関係で計算されます。そのため、以下の例では
\relative c' { noteA << < noteB noteC > \\ noteD >> noteE }
noteB
は noteA
との相対関係で決まり
noteC
は noteA
ではなく noteB
との相対関係で決まり
noteD
は noteA
や noteC
ではなく
noteC
との相対関係で決まり
noteE
は noteA
ではなく noteD
との相対関係で決まります。
各ボイスの中にある音符の音程がボイスごとに大きく離れている場合、各ボイスの始めに
\relative
コマンドを置くと明瞭になるかもしれません:
\relative c' { noteA ... } << \relative c'' { < noteB noteC > ... } \\ \relative g' { noteD ... } >> \relative c' { noteE ... }
最後に、もっと複雑な楽曲の中にあるボイスを分析してみましょう。以下は、ショパンの Deux Nocturnes, Op 32 の 2 番の最初の 2 小節です。この例は、記譜を行うためのテクニックをいくつか示すために、本章の後の方と次の章で使用されます。ですから、今はコードの中にある意味不明に見えるものは無視して、音楽とボイスだけに注目してください – 込み入った内容は後ほど説明します。
符幹の向きはしばしば 2 つの同時進行する旋律ラインのつながりを示すために使用されます。ここでは、一番上の音符の符幹はすべて上向きであり、下の方にある音符の符幹はすべて下向きです。これは、複数のボイスが必要とされているということを示す最初の兆候です。
しかしながら、複数のボイスが実際に必要とされるのは、同時に始まる音符が異なる演奏時間を持つ場合です。最初の小節の 3 拍目を見てください。A フラットは付点 4 分音符であり、F は 4 分音符、D フラットは半音符です。これらの音符を和音として記述することはできません。なぜなら、和音の中の音符はすべて同じ演奏時間でなければならないからです。これらの音符をシーケンシャルな (連続する) 音符として記述することもできません。なぜなら、これらの音符は同時に始まらなければならないからです。この箇所では 3 つのボイスが必要となり、以下に示すように一般的にはこの小節全体を 3 つのボイスで記述します。そこでは、3 つのボイスに対して異なる符頭と色を割り当てています。もう一度繰り返しますが、この例のコードのことは後ほど説明しますので、理解できないことは無視してください。
この音楽のコードをゼロから記述してみましょう。これから見ていくように、いくつかの問題に遭遇します。すでに学んだように、最初の小節の音楽を 3 つのボイスに分けて記述するために
<< \\ >>
構造を使用します:
\new Staff \relative c'' { \key aes \major << { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { <ees c>2 des2 } >> <c ees aes c>1 }
符幹の向きは自動的に割り当てられ、奇数番号のボイスが上向きの符幹、偶数番号のボイスが下向きの符幹を持ちます。ボイス 1 と 2 の符幹は正しいのですが、ボイス 3 の符幹はここでは下向きになるべきです。これは単純にボイス 3 を省略して、その音楽をボイス 4 に記述することによって修正できます:
\new Staff \relative c'' { \key aes \major << % Voice one { c2 aes4. bes8 } \\ % Voice two { aes2 f4 fes } \\ % Omit Voice three \\ % Voice four { <ees c>2 des2 } >> | <c ees aes c>1 | }
これにより符幹の向きが修正されました。しかしながら、複数のボイスを持つ場合にしばしば発生する問題に遭遇してしまいました –
あるボイスの中にある音符の符幹が他のボイスの中にある符頭と衝突しています。音符をレイアウトするときに、LilyPond は 2 つのボイスの符幹の向きを反対にすることによって 2 つのボイスの音符や和音が同じ垂直方向の音符列に位置することを可能にします。しかしながら、3 番目や 4 番目のボイスは符頭の衝突を避けるために必要があれば移動させられます。これは普通はうまくいきますが、この例では一番下のボイスの音符はデフォルトの状態では明らかにうまくいっていません。LilyPond は音符の水平方向位置を調節するためにいくつかの手段を提供します。我々はまだこの問題を修正するための方法を見ていく準備が整っていないので、この問題は後に残しておくことにします –
表記の重なりを修正する の force-hshift
プロパティを参照してください。
参照
記譜法リファレンス: Multiple voices
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < 私はボイスを聴いている ] | [ 上へ : 音楽を保持するボイス ] | [ ボイスとボーカル > ] |
3.2.2 ボイスの明示的なインスタンス化
多声部音楽を作成するためにボイス コンテキストを手動で << >>
ブロックの中に作成することもできます。符幹、スラーなどの向きを示すために \voiceOne
... \voiceFour
を使用します。この手法は各ボイスを別々にして、より記述的な名前を与えることを可能にするため、長い楽譜ではわかりやすいものになります。
本質的には、前のセクションで使用した構造 << \\ >>
:
\new Staff { \relative c' { << { e4 f g a } \\ { c,4 d e f } >> } }
は以下と等価です:
\new Staff << \new Voice = "1" { \voiceOne \relative c' { e4 f g a } } \new Voice = "2" { \voiceTwo \relative c' { c4 d e f } } >>
上記の両方ともが以下の楽譜を生成します:
\voiceXXX
コマンドは符幹、スラー、タイ、アーティキュレーション、テキストの注釈、付点音符の付点、運指記号の向きをセットします。\voiceOne
と \voiceThree
はこれらのオブジェクトを上向きにし、一方の \voiceTwo
と \voiceFour
は下向きにします。さらに、符頭の衝突を避ける必要がある場合、これらのコマンドは各ボイスに対して水平方向のシフトを発生させます。コマンド \oneVoice
は設定を単一のボイスの場合の通常値に戻します。
いくつかの簡単な例で、\oneVoice
, \voiceOne
, \voiceTwo
がマークアップ、タイ、スラー、強弱記号に与える影響を見ていきましょう:
\relative c'{ % Default behavior or behavior after \oneVoice c d8 ~ d e4 ( f g a ) b-> c }
\relative c'{ \voiceOne c d8 ~ d e4 ( f g a ) b-> c \oneVoice c, d8 ~ d e4 ( f g a ) b-> c }
\relative c'{ \voiceTwo c d8 ~ d e4 ( f g a ) b-> c \oneVoice c, d8 ~ d e4 ( f g a ) b-> c }
今度は、前のセクションの例を使って同じ多声部音楽のパッセージを 3 つの異なる方法で表記する例を見ていきます。それぞれ異なる状況で利点があります。
1 つはメイン ボイスに属する << >>
の内部に直接表記を記述する方法です
(しかしながら、音符は << \\ >>
構造の中に置かれてはいません)。これはメイン ボイスの途中で追加のボイスが現れる場合に有用です。ここでは例にさらに調整を加えます。赤のダイアモンド形の音符はメイン メロディが単一のボイス コンテキストになっていて、その上にフレージング スラーを描くことができるということを示しています。
\new Staff \relative c' { \voiceOneStyle % The following notes are monophonic c16^( d e f % Start simultaneous section of three voices << % Continue the main voice in parallel { g4 f e | d2 e2) } % Initiate second voice \new Voice { % Set stems, etc, down \voiceTwo r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2 } % Initiate third voice \new Voice { % Set stems, etc, up \voiceThree s2. | s4 b4 c2 } >> }
多声部構造をより深くネストさせることが可能であり、追加のボイスが短時間のものであるならば、こちらの方がより自然な音楽表記方法であるかもしれません:
\new Staff \relative c' { c16^( d e f << { g4 f e | d2 e2) } \new Voice { \voiceTwo r8 e4 d c8 ~ | << {c8 b16 a b8 g ~ g2} \new Voice { \voiceThree s4 b4 c2 } >> } >> }
新しいボイスを一時的にネストさせる手法は音楽のほんの一部だけが多声である場合に有用です。しかしながら、楽譜全体が多声である場合、一貫して複数のボイスを使用した方がわかりやすくなります。ボイスが無音の場所を飛ばすには以下のように空白音符を使用します:
\new Staff \relative c' << % Initiate first voice \new Voice { \voiceOne c16^( d e f g4 f e | d2 e2) | } % Initiate second voice \new Voice { % Set stems, etc, down \voiceTwo s4 r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2 | } % Initiate third voice \new Voice { % Set stems, etc, up \voiceThree s1 | s4 b4 c2 | } >>
Note columns
和音の中で小さな間隔で置かれる音符、あるいは異なるボイスで同時に発生する音符は、符頭が重なるのを避けるために 2 列、時にはそれ以上の列に割り振られます。これらの列は音符列と呼ばれます。それぞれのボイスに対して別々の列が存在し、符頭の衝突が起こる場合はボイスごとのシフトが適用されます。これは上の例でも見ることができます。2 小節目でボイス 2 の C はボイス 1 の D との関係で右にシフトされていて、最後の和音でボイス 3 の C も他の音符との関係で右にシフトされています。
\shiftOn
, \shiftOnn
, \shiftOnnn
, それに \shiftOff
コマンドは、衝突が起こる場合に音符や和音をシフトさせる度合いを指定します。デフォルトでは、外側のボイス (通常はボイス 1 と 2) には \shiftOff
が指定されていて、内側のボイス (ボイス 3 と 4) には \shiftOn
が指定されています。シフトが適用される場合、ボイス 1 と 3 は右にシフトされ、ボイス 2 と 4は左にシフトされます。
\shiftOnn
と \shiftOnnn
はさらなるシフト レベルを定義するものであり、複雑な状況での衝突を解決するために一時的に指定されるかもしれません –
実際の音楽からの例 を参照してください。
ある音符列は上向きの符幹を持つボイスからの音符 (あるいは和音) を 1 つだけ、下向きの符幹を持つボイスからの音符 (あるいは和音) を 1 つだけ保持することができます。同じ向きの符幹を持つ 2 つのボイスからの音符が同じ位置に置かれ、両方のボイスにシフトが指定されていない、あるいは同じシフトが指定されている場合、エラー メッセージ “Too many clashing note columns” (音符が多すぎて音符列で衝突が起こっています) が生成されます。
参照
記譜法リファレンス: Multiple voices
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < ボイスの明示的なインスタンス化 ] | [ 上へ : 音楽を保持するボイス ] | [ コンテキストとエングラーバ > ] |
3.2.3 ボイスとボーカル
声楽には特別な困難があります: 2 つの表記 – 音符と歌詞 – を組み合わせる必要があります。
すでに \addlyrics{}
コマンドを見てきました。これは簡単な楽譜であればうまく処理できます。しかしながら、この方法では限界があります。より複雑な音楽では、\new Lyrics
を使って歌詞を
Lyrics
コンテキストに取り込み、ボイスに割り当ている名前を使って
\lyricsto{}
でその歌詞を明示的に音符にリンクさせます。
<< \new Voice = "one" \relative c'' { \autoBeamOff \time 2/4 c4 b8. a16 g4. f8 e4 d c2 } \new Lyrics \lyricsto "one" { No more let sins and sor -- rows grow. } >>
歌詞は Staff
コンテキストではなく Voice
コンテキストにリンクさせなければならないということに注意してください。このため、Staff
コンテキストと Voice
コンテキストを明示的に作成する必要があります。
LilyPond がデフォルトで使用する自動連桁は楽器だけの音楽ではうまく機能しますが、歌詞を持つ音楽ではそれほどうまく機能しません。そこでは連桁はまったく必要ないか、歌詞のメリスマ (訳者注: 歌詞の 1 音節に対して複数の音符を割り当てること) を示すために使用されるかのどちらかです。上の例では、自動連桁を Off にするためにコマンド \autoBeamOff
を使用しています。
以前使用した Judas Maccabæus からの例を再度使用して、より自由度の高い方法を示します。まず、楽譜の内容を変数に振り直し、音楽と歌詞を譜表構造から分離させます。さらに ChoirStaff
ブラケットを導入します。歌詞自体は、音楽ではなく歌詞として解釈されることを保証するために、\lyricsmode
で導入されなければなりません。
global = { \time 6/8 \partial 8 \key f \major} SopOneMusic = \relative c'' { c8 | c([ bes)] a a([ g)] f | f'4. b, | c4.~ c4 } SopTwoMusic = \relative c' { r8 | r4. r4 c8 | a'([ g)] f f([ e)] d | e([ d)] c bes' } SopOneLyrics = \lyricmode { Let | flee -- cy flocks the | hills a -- dorn, __ } SopTwoLyrics = \lyricmode { Let | flee -- cy flocks the | hills a -- dorn, } \score { \new ChoirStaff << \new Staff << \new Voice = "SopOne" { \global \SopOneMusic } \new Lyrics \lyricsto "SopOne" { \SopOneLyrics } >> \new Staff << \new Voice = "SopTwo" { \global \SopTwoMusic } \new Lyrics \lyricsto "SopTwo" { \SopTwoLyrics } >> >> }
これはすべての声楽譜の基本的な構造です。必要に応じてさらに多くの譜が追加されるかもしれませんし、さらに多くのボイスが譜に追加されるかもしれませんし、さらに多くの歌詞 (原文: verse、各ボイスに対する歌詞、あるいは、歌詞の 1 番、2 番のことを指すと思われる) が歌詞に追加されるかもしれません。音楽部分が長くなりすぎた場合は、音楽を保持している変数を容易に別のファイルに置くことができます。
ここで、例として 4 つの歌詞 – それぞれが SATB (ソプラノ、アルト、テナー、バス) に対してセットされている – を持つ賛美歌の最初の 1 行目を取り上げます。この歌の場合、4 つのパートに対する歌詞の言葉は同じです。変数を使用して音楽記譜と歌詞の言葉を譜表構造から分離させている手法に注意してください。さらに、 ‘TimeKey’ と呼ぶことにした変数が、2 つの譜で使用されるいくつかのコマンドを保持するために、使用されていることにも注意してください。他の例では、この変数はしばしば ‘global’ と呼ばれます。
TimeKey = { \time 4/4 \partial 4 \key c \major} SopMusic = \relative c' { c4 | e4. e8 g4 g | a a g } AltoMusic = \relative c' { c4 | c4. c8 e4 e | f f e } TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 } BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 } VerseOne = \lyricmode { E -- | ter -- nal fa -- ther, | strong to save, } VerseTwo = \lyricmode { O | Christ, whose voice the | wa -- ters heard, } VerseThree = \lyricmode { O | Ho -- ly Spi -- rit, | who didst brood } VerseFour = \lyricmode { O | Tri -- ni -- ty of | love and pow'r } \score { \new ChoirStaff << \new Staff << \clef "treble" \new Voice = "Sop" { \voiceOne \TimeKey \SopMusic } \new Voice = "Alto" { \voiceTwo \AltoMusic } \new Lyrics \lyricsto "Sop" { \VerseOne } \new Lyrics \lyricsto "Sop" { \VerseTwo } \new Lyrics \lyricsto "Sop" { \VerseThree } \new Lyrics \lyricsto "Sop" { \VerseFour } >> \new Staff << \clef "bass" \new Voice = "Tenor" { \voiceOne \TimeKey \TenorMusic } \new Voice = "Bass" { \voiceTwo \BassMusic } >> >> }
最後に、2 つの譜の 2 パートのリフレイン (繰り返し) につながる単一の歌詞の節をコードする方法を示す例を挙げます。これを 1 つの楽譜で達成するためのシークエンシャル部分と同時進行部分の配置の仕方は非常にトリッキーです。そのため、説明を注意深く読んでください!
コーラスの開始点で波括弧を表示させたいので、ChoirStaff
を保持する score ブロックで始めます。通常、すべての譜を並列にするために \new ChoirStaff
の後に山括弧を置く必要があります。山括弧を使用しても害はありませんが、ここではコーラスまで並列化を先延ばししたいので波括弧を使用します。ChoirStaff
の中で、まず最初に歌詞を保持する譜表を置く必要があります。音符と歌詞を並列に並べなければならないので、\new Voice
と
\new Lyrics
を同時に開始させるために山括弧で囲む必要があります:
versenotes = \relative c'' { \clef "treble" \key g \major \time 3/4 g g g b b b } versewords = \lyricmode { One two three four five six } \score { \new ChoirStaff { \new Staff << \new Voice = "verse" { \versenotes \break } \new Lyrics \lyricsto verse { \versewords } >> } }
これで歌詞の行が与えられました。
今度は、refainA を同じ譜表で続けて、それと並列に refrainB のためにもう 1 つ譜表を導入する必要があります。そのため、この並列部分は verse Voice の中の \break
の直後に置かれなければなりません。そうです、verse Voice の中にです!ここで並列部分を示します。同じ要領でここにもっと多くの譜を導入することもできます。
<< \refrainnotesA \new Lyrics \lyricsto verse { \refrainwordsA } \new Staff << \new Voice = "refrainB" { \refrainnotesB } \new Lyrics \lyricsto "refrainB" { \refrainwordsB } >> >>
ここで最終結果を示します。これはコーラスになっている 2 つの譜を持ち、並列部分がどのように verse Voice の中に置かれるかを示しています:
versenotes = \relative c'' { \clef "treble" \key g \major \time 3/4 g g g b b b } refrainnotesA = \relative c'' { \time 2/4 c c g g \bar "|." } refrainnotesB = \relative c { \clef "bass" \key g \major c e d d } versewords = \lyricmode { One two three four five six } refrainwordsA = \lyricmode { la la la la } refrainwordsB = \lyricmode { dum dum dum dum } \score { \new ChoirStaff { \new Staff << \new Voice = "verse" { \versenotes \break << \refrainnotesA \new Lyrics \lyricsto "verse" { \refrainwordsA } \new Staff << \new Voice = "refrainB" { \refrainnotesB } \new Lyrics \lyricsto "refrainB" { \refrainwordsB } >> >> } \new Lyrics \lyricsto "verse" { \versewords } >> } }
これはシークエンシャル ブロックと同時進行ブロックがどのように機能するかを理解するための手助けとしては興味深く有用です。しかしながら、実際にこれをコードする場合は、恐らく以下のように暗黙の
\book
ブロック内部に 2 つの \score
ブロックを置くようにするでしょう:
versenotes = \relative c'' { \clef "treble" \key g \major \time 3/4 g g g b b b } refrainnotesA = \relative c'' { \time 2/4 c c g g \bar "|." } refrainnotesB = \relative c { \clef "bass" \key g \major c e d d } versewords = \lyricmode { One two three four five six } refrainwordsA = \lyricmode { la la la la } refrainwordsB = \lyricmode { dum dum dum dum } \score { \new Staff << \new Voice = "verse" { \versenotes } \new Lyrics \lyricsto "verse" { \versewords } >> } \score { \new ChoirStaff << \new Staff << \new Voice = "refrainA" { \refrainnotesA } \new Lyrics \lyricsto "refrainA" { \refrainwordsA } >> \new Staff << \new Voice = "refrainB" { \refrainnotesB } \new Lyrics \lyricsto "refrainB" { \refrainwordsB } >> >> }
参照
記譜法リファレンス: Vocal music
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < ボイスとボーカル ] | [ 上へ : 基礎となるコンセプト ] | [ コンテキストの説明 > ] |
3.3 コンテキストとエングラーバ
これまでに、コンテキストとエングラーバについて簡単に言及してきました。ここでは、これらのコンセプトをより詳細に見ていくことにします。なぜなら、これらは LilyPond 出力をうまく調節するのに重要だからです。
3.3.1 コンテキストの説明 | ||
3.3.2 コンテキストを作成する | ||
3.3.3 エングラーバの説明 | ||
3.3.4 コンテキスト プロパティを変更する | ||
3.3.5 エングラーバを追加 / 削除する |
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < コンテキストとエングラーバ ] | [ 上へ : コンテキストとエングラーバ ] | [ コンテキストを作成する > ] |
3.3.1 コンテキストの説明
音楽が譜刻されるとき、入力ファイルでははっきりとは現れてこない多くの記譜要素を出力に追加しなければなりません。例えば、以下の例で入力と出力を比較してください:
cis4 cis2. g4
この入力は内容がやや乏しいですが、出力では小節線、臨時記号、音部記号、拍子記号が追加されています。LilyPond が入力を解釈するとき、音楽情報は時系列に調べられます。これは楽譜を左から右へ読むのと似ています。入力を読み込んでいる間、プログラムは小節の境目となる場所と明示的な臨時記号を必要とするピッチを覚えています。この情報はいくつかのレベルで持続されなければなりません。例えば、臨時記号の効果は単一の譜表に制限されますが、小節線は楽譜全体に亘って同調されなければなりません。
LilyPond 内部では、これらの規則と情報ビットはコンテキストにグループ化されます。すでに Voice
コンテキストを見てきました。他にも、Staff
コンテキストと Score
コンテキストがあります。コンテキストは、楽譜の階層構造を反映するために、階層構造になっています。例えば: Staff
コンテキストは多くの Voice
コンテキストを保持することができ、Score
コンテキストは多くの Staff
コンテキストを保持することができます。
各コンテキストは、いくつかの記譜オブジェクトを作成し、関連プロパティを維持しながら、いくつかの記譜規則を施行する責任があります。例えば、Voice
コンテキストは臨時記号を作り出すかもしれず、そうした場合 Staff
コンテキストはその小節の残りの部分で臨時記号を表示したり隠したりするための規則を維持します。
他の例としては、小節線の同調はデフォルトでは Score
コンテキストが扱います。しかしながら、いくつかの音楽では小節線を同調させたくない場合もあります –
4/4 拍子と 3/4 拍子の多声の楽譜といった場合です。そのようなケースでは、Score
と Staff
コンテキストのデフォルト設定を変更しなければなりません。
非常にシンプルな楽譜では、コンテキストは暗黙的に作成され、あなたはそれらに気づく必要もありません。複数の譜表を持つようなより大きな楽曲では、あなたが必要としているだけの譜を手に入れられるよう、さらに、それらの譜が正しい順序で並ぶことを保証するために、コンテキストを明示的に作成する必要があります。特殊な記譜法を持つ楽曲を譜刻するには、通常は既存のコンテキストを変更します。あるいは完全に新しいコンテキストを定義することさえあります。
Score
, Staff
, Voice
コンテキストに加えて、PianoStaff
や ChoirStaff
コンテキストといった譜表グループを制御するための、楽譜レベルと譜表レベルの間にあるコンテキストがあります。さらに、代替の譜表コンテキストとボイスコンテキストがあり、歌詞、打楽器、フレットボード (訳者: 弦楽器の一種。フレットでウィキぺディアを参照)、通奏低音 (数字付き低音、原文: figured bass) などのためのコンテキストがあります。
すべてのコンテキスト タイプの名前は 1 つ、あるいは複数の単語からなります。各単語の最初の文字は大文字であり、前の単語のすぐあとに次の単語が続きます。ハイフンやアンダスコアは使いません。つまり GregorianTranscriptionStaff
といった具合です。
参照
記譜法リファレンス: Contexts explained
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < コンテキストの説明 ] | [ 上へ : コンテキストとエングラーバ ] | [ エングラーバの説明 > ] |
3.3.2 コンテキストを作成する
最上位にあるコンテキストは 1 つだけです: Score
コンテキストです。これは \score
コマンドによって作成されます。また、簡単な楽譜では、これは自動的に作成されます。
1 つだけのボイスと 1 つだけの譜表を持つ楽譜では、Voice
と Staff
コンテキストは自動的に作成されるために放っておかれるかもしれません。しかしながら、より複雑な楽譜では、これらを手ずから作成する必要があります。これらを作成する最も簡単なコマンドは \new
です。これは音楽表記の前に置きます。例を挙げます:
\new type music-expression
ここで、type はコンテキスト名です (Staff
や Voice
など)。このコマンドは新しいコンテキストを作成し、そのコンテキストの中にある
music-expression の解釈を開始します。
\new Score
というコマンドは無いということに注意してください。単一の最上位 Score
コンテキストは \score
で作成されます。
これまでに、新たに Staff
と Voice
コンテキストを作成する多くの実際的な例を見てきましたが、これらのコマンドが実際にどのように使用されるのかを覚えてもらうために、実際の音楽に注釈を付けた例を挙げます:
\score { % start of single compound music expression << % start of simultaneous staves section \time 2/4 \new Staff { % create RH staff \key g \minor \clef "treble" \new Voice { % create voice for RH notes \relative c'' { % start of RH notes d4 ees16 c8. | d4 ees16 c8. | } % end of RH notes } % end of RH voice } % end of RH staff \new Staff << % create LH staff; needs two simultaneous voices \key g \minor \clef "bass" \new Voice { % create LH voice one \voiceOne \relative g { % start of LH voice one notes g8 <bes d> ees, <g c> | g8 <bes d> ees, <g c> | } % end of LH voice one notes } % end of LH voice one \new Voice { % create LH voice two \voiceTwo \relative g { % start of LH voice two notes g4 ees | g4 ees | } % end of LH voice two notes } % end of LH voice two >> % end of LH staff >> % end of simultaneous staves section } % end of single compound music expression
(波括弧 {
や 2 重山括弧 <<
の中でブロックになっているすべての記述には括弧よりもスペースが 2 つ多いインデントを付けられていて、閉じ括弧には括弧の開始行と同じインデントを付けられているということに注意してください。これは必須ではありませんが、こうしておくと ‘unmatched backet’
(「括弧が一致しない」) エラーを大幅に減らすことができますので、強く推奨します。これにより、音楽の構造を簡単に見て取ることができ、一致していない括弧が明瞭になります。さらに、RH 譜表はボイスを 1 つだけしか必要としないために波括弧によって囲まれた単一の音楽表記として作成されているのに対して、LH 譜表は 2 つのボイスを必要とするために 2 重山括弧を使って作成されていることに注意してください。)
また、\new
コマンドはコンテキストに識別名を与えて、そのコンテキストを同じタイプの他のコンテキストと区別することを可能にするかもしれません:
\new type = id music-expression
Staff
, Voice
などといったコンテキスト タイプの名前とそのようなコンテキスト タイプのインスタンスの名前 –これはユーザによって提供され、どのような文字の連なりにもなり得ます – の違いに注意してください。数字とスペースも識別名に使用することができますが、その場合クォートで囲まなければなりません –
つまり、\new Staff = "MyStaff 1" music-expression
のようになります。識別名はコンテキストのあるインスタンスを参照するために使用されます。このことを歌詞についてのセクションで見てきました。ボイスとボーカル を参照してください。
参照
記譜法リファレンス: Creating contexts
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < コンテキストを作成する ] | [ 上へ : コンテキストとエングラーバ ] | [ コンテキスト プロパティを変更する > ] |
3.3.3 エングラーバの説明
LilyPond によって作成された楽譜上にあるすべての記号は Engraver
によって作り出されます。つまり、譜を譜刻するエングラーバがあり、符頭を譜刻するエングラーバ、符幹を譜刻するエングラーバ、連桁を譜刻するエングラーバなどなどです。そのようなエングラーバは 120 以上あります!幸いなことに、たいていの楽譜では数個のエングラーバについて知っていれば良く、簡単な楽譜ではまったく知らなくても大丈夫です。
エングラーバはコンテキストの中に存在し、そこで活動します。Metronome_mark_engraver
などといった楽譜全体に影響を与えるエングラーバは最上位のコンテキスト – Score
コンテキスト – で活動します。
Clef_engraver
と Key_engraver
は各 Staff
コンテキストの中で見つかります – 譜が異なれば音部記号や調号も異なるかもしれないからです。
Note_heads_engraver
と Stem_engraver
は各 Voice
コンテキスト – 最下位のコンテキスト – の中にあります。
各エングラーバはそれの機能に関連付けされているある特定のオブジェクトを処理し、機能に関連するプロパティを維持します。コンテキストに関連付けされているプロパティなどのようにこれらのプロパティは、エングラーバの処理を変更するためや、譜刻される楽譜の中にある要素の見た目を変更するために、変更されるかもしれません。
エングラーバはすべてそれらの機能を記述する単語から形成された複合名を持ちます。最初の単語の最初の文字は大文字であり、その後に続く単語はアンダスコアで連結されます。ですから、Staff_symbol_engraver
には譜表の線を作成する責任があり、Clef_engraver
は音部記号を描くことによってピッチの参照ポイントを決定、セットします。
ここに、最も一般的なエングラーバをいくつかそれらの機能とともに挙げます。たいていの場合、名前から簡単に機能を推測でき、その逆も成り立つことがわかるでしょう。
エングラーバ | 機能 |
---|---|
Accidental_engraver | 臨時記号 (警告的臨時記号とアドバイス的な臨時記号を含む) を作成します。 |
Beam_engraver | 連桁を譜刻します。 |
Clef_engraver | 音部記号を譜刻します。 |
Completion_heads_engraver | 小節線をまたがる音符を分割します。 |
New_dynamic_engraver | 強弱記号 (クレッシェンド、デクレッシェンド) と強弱テキスト (p や f など) を作成します。 |
Forbid_line_break_engraver | 音楽要素がアクティブなままである場合に改行されることを防ぎます。(訳者: いわゆる禁則処理) |
Key_engraver | 調号を作成します。 |
Metronome_mark_engraver | メトロノーム記号を譜刻します。 |
Note_heads_engraver | 符頭を譜刻します。 |
Rest_engraver | 休符を譜刻します。 |
Staff_symbol_engraver | (デフォルトで) 五線の譜表を譜刻します。 |
Stem_engraver | 符幹と単一符幹のトレモロを作成します。 |
Time_signature_engraver | 拍子記号を作成します。 |
後ほど、エングラーバのアクションを変更することによって LilyPond の出力がどのように変わるのかを見ていきます。
参照
内部リファレンス: Engravers and Performers
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < エングラーバの説明 ] | [ 上へ : コンテキストとエングラーバ ] | [ エングラーバを追加 / 削除する > ] |
3.3.4 コンテキスト プロパティを変更する
コンテキストにはいくつかのコンテキスト プロパティを保持する責任があります。それらプロパティの多くは変更可能であり、変更することで入力の構文解釈に影響を与えて出力の見た目を変化させます。それらプロパティは \set コマンドによって変更されます。これは以下のような形で行います:
\set ContextName.propertyName = #value
ontextName には通常、Score
, Staff
or Voice
が入ります。これを省略する場合もあり、そのような場合は Voice
であると見なされます。
コンテキスト プロパティの名前はハイフンやアンダスコアを使わずに連結された単語によって形成され、最初の単語を除いて単語の最初の文字は大文字になります。ここで、一般的に使用されるコンテキスト プロパティの例をいくつか挙げます。実際には、コンテキスト プロパティはもっとたくさんあります。
プロパティ名 | タイプ | 機能 | 実際の値の例 |
---|---|---|---|
extraNatural | ブール値 | 真の場合、追加のナチュラル記号を臨時記号の前にセットします | |
currentBarNumber | 整数 | 小節番号をセットします | |
doubleSlurs | ブール値 | 真の場合、音符の上と下の両方にスラーを譜刻します | |
instrumentName | テキスト | 譜表の先頭に表示される名前をセットします | |
fontSize | 実数 | フォント サイズを増減させます | |
stanza | テキスト | 歌詞の先頭に譜刻されるテキストをセットします | |
ここでのブール値とは真 (#t
) または偽 (#f
) のどちらかであり、整数とは正の整数であり、実数とは正または負の小数点付きの数であり、テキストはダブル アポストロフィで囲まれます。ハッシュ記号 (#
) が 2 つの異なる箇所で出現することに注意してください – ブール値での t
や f
の前と、\set
での値の前です。そのため、\set
の値にブール値を挿入する場合、ハッシュ記号が 2 つ必要になります – つまり ##t
です。
これらのプロパティのいずれかをセットする前に、それらが操作するコンテキストはどれなのかを知る必要があります。これは明らかな場合もありますが、ややこしい場合もあります。間違ったコンテキストが指定された場合、エラー メッセージは表示されませんが、予期したアクションが起こりません。例えば、instrumentName
は間違いなく Staff
コンテキストの中にきます。なぜなら、このプロパティが名前を付けるのは譜表だからです。以下の例では、最初の譜表には名前が付けられていますが、2 番目の譜表には付けられていません。なぜなら、コンテキスト名を省略しているからです。
<< \new Staff \relative c'' { \set Staff.instrumentName = #"Soprano" c4 c } \new Staff \relative c' { \set instrumentName = #"Alto" % Wrong! d4 d } >>
デフォルトのコンテキスト名は Voice
であることを思い出してください。このため、2 番目の \set
コマンドは Voice
コンテキストのプロパティ instrumentName
を “Alto” にセットしています。しかしながら、LilyPond は Voice
コンテキストでそのようなプロパティを見つけ出さないため、何のアクションも起こしません。これはエラーではなく、ログ ファイルにエラー メッセージは残りません。
同様に、プロパティ名の綴りを間違えた場合もエラー メッセージは表示されず、予期したアクションが起こりません。実際のところ、\set
コマンドを使って、存在するいかなるコンテキストにでも、いかなる (架空の) ‘プロパティ’ をセットすることができます。しかしながら、そのプロパティ名を LilyPond が知らない場合、何のアクションも起こしません。LilyPond 入力ファイルに対する特別なサポートを持ついくつかのテキスト エディタは、あなたがプロパティ名の上にマウスを持ってくるとバレット (テキストの先頭に付く小丸) 付きのプロパティ名を表示してそのプロパティの裏づけを行い (LilyPondTool を持つ JEdit)、あるいは未知のプロパティ名をハイライトします (ConTEXT)。そのような機能を持つエディタを使用していないのなら、内部リファレンスでプロパティ名をチェックすることを推奨します:
Tunable context properties や
Contexts
を参照してください。
instrumentName
プロパティは Staff
コンテキストの中にセットされた場合にのみ効果を持ちますが、いくつかのプロパティは複数のコンテキストの中にセットすることができます。例えば、プロパティ extraNatural
はすべての譜に対してデフォルトで
##t
(真) にセットされています。ある特定の Staff
コンテキストでこれを ##f
(偽) にセットした場合、その譜表の臨時記号にのみ適用されます。これを Score
コンテキストにセットした場合、すべての譜に適用されます。
それでは、ある譜表の追加ナチュラル記号を消してみます:
<< \new Staff \relative c'' { ais4 aes } \new Staff \relative c'' { \set Staff.extraNatural = ##f ais4 aes } >>
さらに、すべての譜の追加ナチュラル記号を消します:
<< \new Staff \relative c'' { ais4 aes } \new Staff \relative c'' { \set Score.extraNatural = ##f ais4 aes } >>
他の例としては、clefOctavation
が Score
コンテキストにセットされた場合、直ちにすべての譜でのオクターブの値を変更し、すべての譜に適用される新しいデフォルト値をセットします。
逆のことを行うコマンド \unset
はコンテキストからプロパティを削除し、それによりたいていのプロパティはデフォルト値に戻ります。通常、望みのことを達成するために新たな \set
コマンドを用いる場合、\unset
は必要ありません。
\set
と \unset
コマンドは入力ファイルのどこにでも現れる可能性があり、そのコマンドが出現した時点から、楽譜の終わりまたはそのプロパティが再度 \set
や \unset
されるまで効果を持ちます。フォント サイズを変更してみましょう。それにより (他のものに加えて) 符頭のサイズが何段階か変更されます。変更は直前にセットされた値から行われるのではなく、デフォルト値から行われます。
c4 % make note heads smaller \set fontSize = #-4 d e % make note heads larger \set fontSize = #2.5 f g % return to default size \unset fontSize a b
これまでにいくつかのタイプのプロパティ値をセットする方法を見てきました。整数と番号の前には常にハッシュ記号 #
が付き、真と偽の値は
2 つのハッシュ記号を付けて ##t
と ##f
によって指定されてるということに注意してください。テキスト プロパティは上で示したようにダブル クォーテーションによって囲まれます。しかしながら、後ほど、テキストは実際には非常に強力な markup
コマンドを用いたもっと一般的な方法で指定できるということを見ていきます。
Setting context properties with \with
コンテキスト プロパティはコンテキストが作成されるときにセットされることもあるかもしれません。この設定がコンテキスト全体で保持される場合、この方法でプロパティ値を指定すると明瞭になります。コンテキストが \new
コマンドで作成されるとき、その直後に
\with { .. }
ブロックが続き、その中でプロパティ値がセットされるかもしれません。例えば、ある譜表全体で追加のナチュラルの表示を抑制しようとする場合、以下のように書きます:
\new Staff \with { extraNatural = ##f }
そして、以下のように使用します:
<< \new Staff \relative c'' { gis ges aes ais } \new Staff \with { extraNatural = ##f } \relative c'' { gis ges aes ais } >>
この方法でプロパティをセットした場合でも、\set
を使って動的に変更されたり、\unset
を使ってデフォルト値に戻されたりするかもしれません。
fontSize
プロパティの扱いは異なります。これが \with
の中でセットされた場合、フォント サイズのデフォルト値をセットし直します。そのあとでフォント サイズが \set
によって変更された場合、\with
でセットされた新しいデフォルト値は
\unset fontSize
コマンドによって元に戻されるかもしれません。
Setting context properties with \context
コンテキスト プロパティの値は単一のコマンドによってある特定のタイプのコンテキストすべて – すべての Staff
コンテキストなどのように
– にセットされるかもしれません。プロパティをセットするコンテキストのタイプは、Staff
のようなそのコンテキストのタイプ名に接頭辞としてバック スラッシュを付けたもの
– \Staff
のように – によって指定されます。プロパティ値をセットするための記述は上で紹介した \with
ブロックの中の記述と同じです。この記述は \layout
ブロック内部の \context
ブロックの中に置かれます。各 \context
ブロックは、その \layout
ブロックが置かれている \score
または \book
ブロック全体を通じて、指定されたタイプのコンテキストすべてに対して効果を持ちます。ここで、記述方法を示すための例を挙げます:
\score { \new Staff { \relative c'' { cis4 e d ces } } \layout { \context { \Staff extraNatural = ##t } } }
この方法でセットされたコンテキスト プロパティは、\with
ブロックの中の記述によって、さらには、音楽表記の中に埋め込まれた
\set
コマンドによって、ある特定のコンテキスト インスタンスでは上書きされるかもしれません。
参照
記譜法リファレンス: Changing context default settings
内部リファレンス: Contexts, Tunable context properties
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < コンテキスト プロパティを変更する ] | [ 上へ : コンテキストとエングラーバ ] | [ テンプレートを拡張する > ] |
3.3.5 エングラーバを追加 / 削除する
これまでに、コンテキストはそれぞれにいくつかのエングラーバを保持し、それぞれのエングラーバは出力のある特定部分 – 小節線、譜、符頭、符幹など – の譜刻に責任を持つということを見てきました。あるエングラーバがコンテキストから削除されると、それはもはや出力を行いません。これは出力を変更するための荒っぽい方法ですが、役に立つ場合もあります。
Changing a single context
あるコンテキストからあるエングラーバを削除するには、前のセクションで見てたきたのと同様に、コンテキスト作成コマンドの直後に置く
\with
コマンドを使用します。
例として、前のセクションで使用した例から譜表線を取り除いてみましょう。譜表線は Staff_symbol_engraver
によって作り出されるということを思い出してください。
\new Staff \with { \remove Staff_symbol_engraver } \relative c' { c4 \set fontSize = #-4 % make note heads smaller d e \set fontSize = #2.5 % make note heads larger f g \unset fontSize % return to default size a b }
さらに、エングラーバは個々のコンテキストに追加されることもあります。エングラーバを追加するコマンドは以下のようなものです:
\consists Engraver_name
,
これを \with
ブロックの中に置きます。いくつかのボーカル譜は、その譜表の中にある音符の範囲を示すために、譜表の開始点に音域 (ambitus) を置きます –
ambitus を参照してください。音域は Ambitus_engraver
によって作成され、普通は、これはどのコンテキストにも含まれません。これを Voice
コンテキストに追加した場合、それはそのボイスのみから音域を計算します:
\new Staff << \new Voice \with { \consists Ambitus_engraver } \relative c'' { \voiceOne c a b g } \new Voice \relative c' { \voiceTwo c e d f } >>
しかし、音域エングラーバを Staff
コンテキストに追加した場合、そのエングラーバはその譜表上にあるすべてのボイスの中の音符から音域を計算します:
\new Staff \with { \consists Ambitus_engraver } << \new Voice \relative c'' { \voiceOne c a b g } \new Voice \relative c' { \voiceTwo c e d f } >>
Changing all contexts of the same type
上の例では、個々のコンテキストにエングラーバを追加あるいは削除する方法を示しました。さらに、そのコマンドを \layout
ブロックの中の適当なコンテキストの中に置くことによって、ある特定のタイプのコンテキストすべてにエングラーバを追加あるいは削除することもできます。例えば、4 つの譜表を持つ楽譜ですべての譜表に音域を表示する場合、以下のように記述します:
\score { << \new Staff << \relative c'' { c a b g } >> \new Staff << \relative c' { c a b g } >> \new Staff << \clef "G_8" \relative c' { c a b g } >> \new Staff << \clef "bass" \relative c { c a b g } >> >> \layout { \context { \Staff \consists Ambitus_engraver } } }
また、コンテキスト プロパティの値も、上記と同様に
\context
ブロックの中に \set
を含ませることによって、ある特定のタイプのコンテキストすべてに対してセットすることができます。
参照
記譜法リファレンス: Modifying context plug-ins, Changing context default settings
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < エングラーバを追加 / 削除する ] | [ 上へ : 基礎となるコンセプト ] | [ ソプラノとチェロ > ] |
3.4 テンプレートを拡張する
あなたはチュートリアルを読み終えました。あなたはどのように音楽を書くかを知っていて、基礎となるコンセプトを理解しています。しかし、どうやったらあなたはあなたが望む譜表を手に入れられるでしょうか?あなたにとって良いスタート地点となるかもしれない多くのテンプレートがあります (テンプレート を参照してください)。しかしながら、あなたの望むものがそこでカバーされていなかったらどうしましょう?続きを読んでください。
3.4.1 ソプラノとチェロ | ||
3.4.2 4 パート SATB ボーカル譜 | ||
3.4.3 ゼロから楽譜を構築する | ||
3.4.4 変数と関数を用いて入力の手間を省く | ||
3.4.5 楽譜とパート |
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < テンプレートを拡張する ] | [ 上へ : テンプレートを拡張する ] | [ 4 パート SATB ボーカル譜 > ] |
3.4.1 ソプラノとチェロ
あなたが最終的に望むものに最も近いテンプレートから始めてください。ソプラノとチェロのための楽譜を書きたいということにしましょう。ここでは、‘音符と歌詞’ (ソプラノ パート用) から始めることにします。
\version "2.13.45" melody = \relative c' { \clef treble \key c \major \time 4/4 a4 b c d } text = \lyricmode { Aaa Bee Cee Dee } \score { << \new Voice = "one" { \autoBeamOff \melody } \new Lyrics \lyricsto "one" \text >> \layout { } \midi { } }
これにチェロ パートを追加していきます。‘音符のみ’ のテンプレートを見てみましょう:
\version "2.13.45" melody = \relative c' { \clef treble \key c \major \time 4/4 a4 b c d } \score { \new Staff \melody \layout { } \midi { } }
\version
コマンドは 2 つも必要ありません。melody
セクションは必要です。\score
セクションは 2 つも必要ありません – \score
が
2 つあると、2 つのパートがばらばらになります。2 つのパートをデュオのように一緒にしたいのです。\score
セクションの中に \layout
や \midi
は 2 つも必要ありません。
単に melody
セクションをカット&コピーした場合、melody
定義が
2 つになります。これはエラーにはなりませんが、2 番目の定義が両方の旋律で使われることになります。そのため、2 つの旋律を区別するためにリネームします。ソプラノ用のセクションを sopranoMusic
と呼び、チェロ用のセクションを
celloMusic
と呼ぶことにします。リネームするときに、text
を sopranoLyrics
とりネームしましょう。これらのインスタンスをリネームすることも忘れないでください −-
初期定義 (melody = \relative c' {
部分) とその名前が使われているところ (\score セクションの中
) の両方です。
リネームする際に、チェロ パートの譜表も変更しましょう −- 通常、チェロは低音部を使用します。さらに、チェロの音符を変えてみます。
\version "2.13.45" sopranoMusic = \relative c' { \clef treble \key c \major \time 4/4 a4 b c d } sopranoLyrics = \lyricmode { Aaa Bee Cee Dee } celloMusic = \relative c { \clef bass \key c \major \time 4/4 d4 g fis8 e d4 } \score { << \new Voice = "one" { \autoBeamOff \sopranoMusic } \new Lyrics \lyricsto "one" \sopranoLyrics >> \layout { } \midi { } }
これでうまくいくように見えますが、チェロ パートが楽譜に表示されません −-
チェロ パートを \score
セクションの中で使っていないからです。チェロ パートをソプラノ パートの下に表示させたいのなら、以下をソプラノの譜の下に追加する必要があります:
\new Staff \celloMusic
さらに、音楽を <<
と >>
で囲む必要もあります −- これは LilyPond
に複数のもの (この場合は 2 つの Stave
) が同時に起こるということを知らせます。\score
は以下のようになります:
\score { << << \new Voice = "one" { \autoBeamOff \sopranoMusic } \new Lyrics \lyricsto "one" \sopranoLyrics >> \new Staff \celloMusic >> \layout { } \midi { } }
これは少し見にくいです。インデントがきちんと入っていません。これは簡単に修正できます。ここで、完成したソプラノとチェロ用のテンプレートを挙げます。
\version "2.13.45"sopranoMusic = \relative c' { \clef treble \key c \major \time 4/4 a4 b c d } sopranoLyrics = \lyricmode { Aaa Bee Cee Dee } celloMusic = \relative c { \clef bass \key c \major \time 4/4 d4 g fis8 e d4 } \score { << << \new Voice = "one" { \autoBeamOff \sopranoMusic } \new Lyrics \lyricsto "one" \sopranoLyrics >> \new Staff \celloMusic >> \layout { } \midi { } }
参照
開始点となるテンプレートは付録 ‘テンプレート’ で見つけることができます。単一の譜表 を参照してください。
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < ソプラノとチェロ ] | [ 上へ : テンプレートを拡張する ] | [ ゼロから楽譜を構築する > ] |
3.4.2 4 パート SATB ボーカル譜
Mendelssohn の Elijah や Handel の Messiah などのオーケストラ伴奏付きの 4 パート聖歌隊のために書かれたボーカル譜の多くは 4 つの譜上に音符と歌詞を持ち、それぞれの譜は SATB (ソプラノ、アルト、テナー、バス) のうちの 1 つであり、その下にオーケストラ伴奏のピアノ譜が付きます。ここで、Handel の Messiah から例を挙げます:
このレイアウトをそのまま提供するテンプレートはありません。最も近いのは ‘SATB ボーカル譜と自動ピアノ伴奏譜’ – 合唱 を参照してください – ですが、レイアウトを変更して、ボーカル パートから自動的に生成されたものではないピアノ伴奏譜を付け加える必要があります。ボーカル パートのための音楽と歌詞を保持している変数はそのまま使えますが、ピアノ伴奏譜のための変数を付け加える必要があります。
テンプレートの ChoirStaff
の中でコンテキストが出現する順序は上で示したボーカル譜の順序と一致していません。そのため、コンテキストを再配置して、それぞれの歌詞が対応する譜表のすぐ下にくるようにします。すべてのボイスは \voiceOne
– これがデフォルトです – になるべきなので、\voiceXXX
コマンドは削除すべきです。さらに、テノールに対してハ音記号 (中音部記号) を指定する必要があります。テンプレートの中で歌詞を指定する方法はまだ説明していませんので、馴染みのある方法を使用する必要があります。さらに、それぞれの譜に名前を追加すべきです。
以上のことを ChoirStaff
に対して行います:
\new ChoirStaff << \new Staff = "sopranos" << \set Staff.instrumentName = #"Soprano" \new Voice = "sopranos" { \global \sopranoMusic } >> \new Lyrics \lyricsto "sopranos" { \sopranoWords } \new Staff = "altos" << \set Staff.instrumentName = #"Alto" \new Voice = "altos" { \global \altoMusic } >> \new Lyrics \lyricsto "altos" { \altoWords } \new Staff = "tenors" << \set Staff.instrumentName = #"Tenor" \new Voice = "tenors" { \global \tenorMusic } >> \new Lyrics \lyricsto "tenors" { \tenorWords } \new Staff = "basses" << \set Staff.instrumentName = #"Bass" \new Voice = "basses" { \global \bassMusic } >> \new Lyrics \lyricsto "basses" { \bassWords } >> % end ChoirStaff
次にピアノ パートに取り掛からなければなりません。これは簡単です – ‘ソロ ピアノ’ テンプレートからピアノ パートを引き抜いてくるだけです:
\new PianoStaff << \set PianoStaff.instrumentName = #"Piano " \new Staff = "upper" \upper \new Staff = "lower" \lower >>
そして、upper
と lower
に変数定義を付け加えます。
ChoirStaff
を PianoStaff
の上に置きたいので、それらを山括弧を使って組み合わせなければなりません:
<< % combine ChoirStaff and PianoStaff one above the other \new ChoirStaff << \new Staff = "sopranos" << \new Voice = "sopranos" { \global \sopranoMusic } >> \new Lyrics \lyricsto "sopranos" { \sopranoWords } \new Staff = "altos" << \new Voice = "altos" { \global \altoMusic } >> \new Lyrics \lyricsto "altos" { \altoWords } \new Staff = "tenors" << \clef "G_8" % tenor clef \new Voice = "tenors" { \global \tenorMusic } >> \new Lyrics \lyricsto "tenors" { \tenorWords } \new Staff = "basses" << \clef "bass" \new Voice = "basses" { \global \bassMusic } >> \new Lyrics \lyricsto "basses" { \bassWords } >> % end ChoirStaff \new PianoStaff << \set PianoStaff.instrumentName = #"Piano" \new Staff = "upper" \upper \new Staff = "lower" \lower >> >>
これらすべてを組み合わせて、上の例の 3 小節分の音楽を付け加えます:
\version "2.13.45"global = { \key d \major \time 4/4 } sopranoMusic = \relative c'' { \clef "treble" r4 d2 a4 | d4. d8 a2 | cis4 d cis2 | } sopranoWords = \lyricmode { Wor -- thy is the lamb that was slain } altoMusic = \relative a' { \clef "treble" r4 a2 a4 | fis4. fis8 a2 | g4 fis fis2 | } altoWords = \sopranoWords tenorMusic = \relative c' { \clef "G_8" r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 | } tenorWords = \sopranoWords bassMusic = \relative c' { \clef "bass" r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 | } bassWords = \sopranoWords upper = \relative a' { \clef "treble" \global r4 <a d fis>2 <a e' a>4 | <d fis d'>4. <d fis d'>8 <a d a'>2 | <g cis g'>4 <a d fis> <a cis e>2 | } lower = \relative c, { \clef "bass" \global <d d'>4 <d d'>2 <cis cis'>4 | <b b'>4. <b' b'>8 <fis fis'>2 | <e e'>4 <d d'> <a' a'>2 | } \score { << % combine ChoirStaff and PianoStaff in parallel \new ChoirStaff << \new Staff = "sopranos" << \set Staff.instrumentName = #"Soprano" \new Voice = "sopranos" { \global \sopranoMusic } >> \new Lyrics \lyricsto "sopranos" { \sopranoWords } \new Staff = "altos" << \set Staff.instrumentName = #"Alto" \new Voice = "altos" { \global \altoMusic } >> \new Lyrics \lyricsto "altos" { \altoWords } \new Staff = "tenors" << \set Staff.instrumentName = #"Tenor" \new Voice = "tenors" { \global \tenorMusic } >> \new Lyrics \lyricsto "tenors" { \tenorWords } \new Staff = "basses" << \set Staff.instrumentName = #"Bass" \new Voice = "basses" { \global \bassMusic } >> \new Lyrics \lyricsto "basses" { \bassWords } >> % end ChoirStaff \new PianoStaff << \set PianoStaff.instrumentName = #"Piano " \new Staff = "upper" \upper \new Staff = "lower" \lower >> >> }
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < 4 パート SATB ボーカル譜 ] | [ 上へ : テンプレートを拡張する ] | [ 変数と関数を用いて入力の手間を省く > ] |
3.4.3 ゼロから楽譜を構築する
LilyPond コードを書くことにある程度熟練した後、あなたはテンプレートの 1 つを変更するよりもゼロから楽譜を構築するほうがより容易であることに気づくかもしれません。さらに、あなたはこの方法であなたの好みのタイプの音楽に適したあなた自身のスタイルを開発することもできます。例として、オルガン前奏曲のための楽譜を作成する手順を見てみましょう。
ヘッダ セクションから始めます。そこでタイトル、作曲者の名前などを記述し、それから任意の変数を定義し、最後にスコア ブロックに取り掛かります。以上のことを概要から始めて、その後に詳細を詰めていきます。
Jesu, meine Freude – これは 2 つの鍵盤とペダルを持つオルガンのために書かれたものです – をベースとする Bach の前奏曲の最初の 2 小節を使います。このセクションの最後でこの音楽の最初の 2 小節を見ることができます。上段鍵盤パートは 2 つのボイスを持ち、下段鍵盤とペダルはそれぞれ 1 つのボイスを持ちます。そのため、4 つの音楽定義と、拍子記号と調号を定義するための 1 つの音楽定義が必要となります:
\version "2.13.45" \header { title = "Jesu, meine Freude" composer = "J S Bach" } TimeKey = { \time 4/4 \key c \minor } ManualOneVoiceOneMusic = {s1} ManualOneVoiceTwoMusic = {s1} ManualTwoMusic = {s1} PedalOrganMusic = {s1} \score { }
ここでは、実際の音楽の代わりに空白音符 s1
を使用しました。実際の音楽は後で付け加えます。
次に、スコア ブロックで何をすべきなのかを見ていきましょう。単純に望む譜表構造を反映させます。通常、オルガン音楽は 3 つの譜で書かれます – 2 つの鍵盤とペダルのための譜です。鍵盤の譜はブレース (譜表の左端の波括弧) でまとめられているべきなので、それらに対して PianoStaff
を使用する必要があります。1 番目の鍵盤パートは 2 つのボイスを必要とし、2 番目の鍵盤パートは 1 つだけボイスを必要とします。
\new PianoStaff << \new Staff = "ManualOne" << \new Voice { \ManualOneVoiceOneMusic } \new Voice { \ManualOneVoiceTwoMusic } >> % end ManualOne Staff context \new Staff = "ManualTwo" << \new Voice { \ManualTwoMusic } >> % end ManualTwo Staff context >> % end PianoStaff context
次にペダル オルガンのための譜表を付け加える必要があります。これは PianoStaff
の下にきますが、PianoStaff
と同時進行でなければなりませんので、ペダル オルガンのための譜表と
PianoStaff
を山括弧で囲む必要があります。これを忘れるとエラーがログ ファイルに生成されます。このエラーはあなたが早かれ遅かれ遭遇する一般的なミスです!生成されるエラーを確認するために、このセクションの最後にある例をコピーし、この山括弧を削除し、コンパイルしてみてください。
<< % PianoStaff and Pedal Staff must be simultaneous \new PianoStaff << \new Staff = "ManualOne" << \new Voice { \ManualOneVoiceOneMusic } \new Voice { \ManualOneVoiceTwoMusic } >> % end ManualOne Staff context \new Staff = "ManualTwo" << \new Voice { \ManualTwoMusic } >> % end ManualTwo Staff context >> % end PianoStaff context \new Staff = "PedalOrgan" << \new Voice { \PedalOrganMusic } >> >>
2 番目の鍵盤パートとペダル オルガンの譜表は 1 つだけしか音楽表記を保持しないため、それらに対して同時進行構造 << .. >>
を使う必要は必ずしもありません。しかしながら、そうしても害はありませんし、\new Staff
の後に常に山括弧を置くというのは複数のボイスがある場合では推奨される良い習慣です。Voice はこれとは対照的に、あなたの音楽を連続して演奏すべきいくつかの変数に分けてコード化する場合に Voice の後に波括弧 { .. }
を常に置くべきです。
この構造をスコア ブロックに付け加えて、インデントを調整しましょう。さらに、適切な音部記号を付け加え、\voiceOne
と \voiceTwo
を使って上部譜の各ボイスで符幹、タイ、スラーの向きが正しくなるようにし、あらかじめ定義しておいた変数 \TimeKey
を使って拍子記号と調号を各譜に挿入します。
\score { << % PianoStaff and Pedal Staff must be simultaneous \new PianoStaff << \new Staff = "ManualOne" << \TimeKey % set time signature and key \clef "treble" \new Voice { \voiceOne \ManualOneVoiceOneMusic } \new Voice { \voiceTwo \ManualOneVoiceTwoMusic } >> % end ManualOne Staff context \new Staff = "ManualTwo" << \TimeKey \clef "bass" \new Voice { \ManualTwoMusic } >> % end ManualTwo Staff context >> % end PianoStaff context \new Staff = "PedalOrgan" << \TimeKey \clef "bass" \new Voice { \PedalOrganMusic } >> % end PedalOrgan Staff >> } % end Score context
これでこの構造は完成です。3 つの譜表を持つオルガン音楽はいずれも同様の構造を持ちますが、ボイスの数はさまざまになるかもしれません。この後に行うべきことは、音楽を付け加え、各パートを一緒にすることです。
\version "2.13.45"\header { title = "Jesu, meine Freude" composer = "J S Bach" } TimeKey = { \time 4/4 \key c \minor } ManualOneVoiceOneMusic = \relative g' { g4 g f ees | d2 c2 | } ManualOneVoiceTwoMusic = \relative c' { ees16 d ees8~ ees16 f ees d c8 d~ d c~ | c c4 b8 c8. g16 c b c d | } ManualTwoMusic = \relative c' { c16 b c8~ c16 b c g a8 g~ g16 g aes ees | f ees f d g aes g f ees d e8~ ees16 f ees d | } PedalOrganMusic = \relative c { r8 c16 d ees d ees8~ ees16 a, b g c b c8 | r16 g ees f g f g8 c,2 | } \score { << % PianoStaff and Pedal Staff must be simultaneous \new PianoStaff << \new Staff = "ManualOne" << \TimeKey % set time signature and key \clef "treble" \new Voice { \voiceOne \ManualOneVoiceOneMusic } \new Voice { \voiceTwo \ManualOneVoiceTwoMusic } >> % end ManualOne Staff context \new Staff = "ManualTwo" << \TimeKey \clef "bass" \new Voice { \ManualTwoMusic } >> % end ManualTwo Staff context >> % end PianoStaff context \new Staff = "PedalOrgan" << \TimeKey \clef "bass" \new Voice { \PedalOrganMusic } >> % end PedalOrgan Staff context >> } % end Score context
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < ゼロから楽譜を構築する ] | [ 上へ : テンプレートを拡張する ] | [ 楽譜とパート > ] |
3.4.4 変数と関数を用いて入力の手間を省く
これまでに、以下のような記述を見てきました:
hornNotes = \relative c'' { c4 b dis c } \score { { \hornNotes } }
これは音楽表記を最小化するのに役に立つ可能性があるということに気付くかもしれません:
fragmentA = \relative c'' { a4 a8. b16 } fragmentB = \relative c'' { a8. gis16 ees4 } violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA } \score { { \violin } }
さらに、これらの変数 (変数、マクロ、(ユーザ定義) コマンドなどと呼ばれます) を調整のために使うこともできます:
dolce = \markup{ \italic \bold dolce } padText = { \once \override TextScript #'padding = #5.0 } fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } violin = \relative c'' { \repeat volta 2 { c4._\dolce b8 a8 g a b | \padText c4.^"hi there!" d8 e' f g d | c,4.\fthenp b8 c4 c-. | } } \score { { \violin } \layout{ragged-right=##t} }
これらの明らかに変数は入力の手間を省くのに役立っています。例えそれらの変数が 1 回しか使用されないとしても、変数化することを考慮する価値があります – 複雑さを減らします。以前に使用した変数を使っていない例を見てみましょう。それはとても読み難く、特に最後の行が読み難いです。
violin = \relative c'' { \repeat volta 2 { c4._\markup{ \italic \bold dolce } b8 a8 g a b | \once \override TextScript #'padding = #5.0 c4.^"hi there!" d8 e' f g d | c,4.\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } b8 c4 c-. | } }
これまでに見てきたのは静的な置き換えです –
LilyPond は \padText
を見ると、それを定義した内容
(つまり、padText=
の右側にあるもの) に置き換えます。
LilyPond は非静的な置き換えも処理できます (それらを関数と見なすことができます)。
padText = #(define-music-function (parser location padding) (number?) #{ \once \override TextScript #'padding = #$padding #}) \relative c''' { c4^"piu mosso" b a b \padText #1.8 c4^"piu mosso" d e f \padText #2.6 c4^"piu mosso" fis a g }
変数を使うことは、LilyPond 入力構文に変更があった場合の作業を減らす良い方法でもあります (
古い入力ファイルをアップデートする を参照してください)。あなたがあなたの入力ファイルすべてに使用する単一の定義
(\dolce
のような) を持っていて、構文が変更された場合、すべての .ly
ファイルを変更する代わりに、\dolce
定義をアップデートするだけで済みます。
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < 変数と関数を用いて入力の手間を省く ] | [ 上へ : テンプレートを拡張する ] | [ 出力を調整する > ] |
3.4.5 楽譜とパート
TODO: this is really old stuff from the really old tutorial. Rewrite, fix, etc. Or maybe delete entirely. -gp Include section on tags -td and then move to section 5. Working ... -td
オーケストラ音楽では、すべての音符は 2 回譜刻されます。1 回は演奏家のためのパート譜で、1 回は指揮者のための総譜で譜刻されます。変数を使うことで二度手間を避けることができます。音楽は 1 回、変数に入力されます。その変数の内容は、パート譜と総譜の両方を生成するために使用されます。
音符を特別なファイルの中に定義すると便利です。例えば、ファイル horn-music.ly
は以下のホルン/バスーン デュオのパートを保持しているとします:
hornNotes = \relative c { \time 2/4 r4 f8 a cis4 f e d }
個々のパートは、ファイルの中に以下の記述をすることによって作り出されます:
\include "horn-music.ly" \header { instrument = "Horn in F" } { \transpose f c' \hornNotes }
以下の行:
\include "horn-music.ly"
は、ファイルの中でその行が置かれている場所で、‘horn-music.ly’ の内容に置き換わり、hornNotes
はその後に定義されます。コマンド \transpose f c'
は、引数 \hornNotes
は 5 度上へ移調すべきであるということを示しています。f
の音は譜面に表記された c'
で表され、これは通常のフレンチ ホルンを F にチューニングすることに相当します。この移調により出力は以下のようになります:
アンサンブルでは、しばしばボイスの 1 つが何小節も演奏されないことがあります。これは特別な休符 – 複小節休符 – によって示されます。これは大文字の R
とその後に続く演奏時間
(全音符には 1
、半音符には 2
などです) で入力されます。この演奏時間に掛け算を行うことによって、さらに長い休符を構築することができます。例えば、以下の休符は 2/4 拍子で 3 小節分の長さになります:
R2*3
この部分を譜刻するとき、複小節休符を圧縮する必要があります。これは以下のラン-タイム変数を設定することによって行います:
\set Score.skipBars = ##t
このコマンドは Score
コンテキストの中にあるプロパティ skipBars
を真 (##t
) にセットします。この休符とオプションを上記の音楽の先頭に追加することによって、以下のような結果になります:
楽譜はすべての音楽を一緒にすることによって作り出されます。他のボイスはファイル ‘bassoon-music.ly’ の中の bassoonNotes
の中にあると仮定すると、楽譜は以下のような記述で作られます:
\include "bassoon-music.ly" \include "horn-music.ly" << \new Staff \hornNotes \new Staff \bassoonNotes >>
そして、以下のような楽譜になります:
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 楽譜とパート ] | [ 上へ : トップ ページ ] | [ 調整の基本 > ] |
4. 出力を調整する
この章では出力を変更する方法について議論します。LilyPond は本当にさまざまな設定が可能です。もしかすると出力のすべての部分が変更されるかもしれません。
4.1 調整の基本 | ||
4.2 内部リファレンス マニュアル | ||
4.3 オブジェクトの見た目 | ||
4.4 オブジェクトの配置 | ||
4.5 オブジェクトの衝突 | ||
4.6 更なる調整 |
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 出力を調整する ] | [ 上へ : 出力を調整する ] | [ 調整の紹介 > ] |
4.1 調整の基本
4.1.1 調整の紹介 | ||
4.1.2 オブジェクトとインタフェイス | ||
4.1.3 オブジェクトとプロパティの命名規約 | ||
4.1.4 調整手段 |
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 調整の基本 ] | [ 上へ : 調整の基本 ] | [ オブジェクトとインタフェイス > ] |
4.1.1 調整の紹介
‘調整’ は入力ファイルの解釈中にとられるアクションを変更し、譜刻される音楽の見た目を変更するためにユーザが利用可能なさまざまな手段を指す LilyPond の用語です。いくつかの調整はとても簡単に使うことができます。他の調整はもっと複雑です。しかしながら、調整のために利用可能な手段を組み合わせることによって、ほとんどいかなる望みの見た目を持った楽譜でも譜刻することが可能になります。
このセクションでは、調整を理解するのに必要な基礎となるコンセプトをカバーします。その後、コピーするだけで効果が得られる作成準備が完了しているさまざまなコマンドについての情報を提供し、同時に、あなたがあなた自身の調整を開発する方法を学べるようにそれらのコマンドがどのように構築されるのかを示します。
この章を読み始める前に、あなたは コンテキストとエングラーバ を再読することを望むかもしれません。なぜなら、コンテキスト、エングラーバとそれらの中に含まれるプロパティは調整について理解し、調整を構成するための基礎だからです。
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 調整の紹介 ] | [ 上へ : 調整の基本 ] | [ オブジェクトとプロパティの命名規約 > ] |
4.1.2 オブジェクトとインタフェイス
調整には LilyPond プログラムの内部オペレーションと構造体への変更も含まれます。そのため、我々はまずそれらの内部オペレーションと構造体を記述するために使用されるいくつかの用語を導入しなければなりません。
‘オブジェクト’ という用語は入力ファイルを処理している最中に LilyPond によってビルドされる多くの内部構造体を参照するために使われる汎用的な用語です。LilyPond が \new Staff
のようなコマンドに遭遇した場合、タイプ Staff
の新しいオブジェクトを構築します。その Staff
オブジェクトは、その譜表のコンテキスト内部で機能するために割り当てられているエングラーバの詳細とともに、その譜表に関連付けられているすべてのプロパティ – 例えば、その譜表の名前、調号 – を保持します。同様に、Voice
オブジェクト、Score
オブジェクト、Lyrics
オブジェクトなどの他のすべてのコンテキストのプロパティを保持するためのオブジェクトが存在し、さらに、小節線、符頭、タイ、強弱記号などのすべての記譜要素を表すためのオブジェクトも存在します。各オブジェクトはそれ自体のプロパティ値のセットを持ちます。
いくつかのタイプのオブジェクトには特別な名前が与えられています。符頭、符幹、スラー、タイ、運指記号、音部記号などの譜刻される出力上の記譜要素を表すオブジェクトは ‘レイアウト オブジェクト’ と呼ばれ、しばしば ‘グラフィカル オブジェクト’ あるいは短くして ‘グロッブ (Grob: GRaphical OBject)’ と呼ばれます。これらのオブジェクトも上記の汎用的な観点から見るとオブジェクトであり、それゆえ、それらもまたそれらのオブジェクトに関連付けされたプロパティ – そのオブジェクトの位置、サイズ、色など – を持ちます。
いくつかのレイアウト オブジェクトも特別です。フレージング スラー、クレッシェンド、オッターバ (訳者: オクターブ?) 記号、他の多くのグラフィカル オブジェクトが置かれる場所は一点ではありません – それらは開始点、終了点、そしておそらくそれらの形に関係する他のプロパティを持ちます。これらのオブジェクトのように形が伸長されるオブジェクトは ‘スパナ (Spanners)’ と呼ばれます。
‘インタフェイス’ とは何なのかという説明が残っています。多くのオブジェクト – たとえそれらが非常に異なっていたとしても –
は同じ方法で処理される必要がある共通特徴 (common feature) を共有します。例えば、すべてのグラフィカル オブジェクトは色、サイズ、位置などを持ち、これらのプロパティはすべて LilyPond が入力ファイルを構文解釈する最中に同じ方法で処理されます。これらの内部オペレーションを簡潔にするために、これらの共通アクションとプロパティは 1 つのグループとして
grob-interface
と呼ばれるオブジェクトにまとめられています。これと同じような共有プロパティのグループ化が他にも多くあり、それぞれに対して最後に interface
が付く名前が与えられています。そのようなインタフェイスの総数は 100 を越えます。我々は後でなぜこれがユーザにとって利益となり、役に立つのかを見ていきます。
これらは、我々がこの章で使用するオブジェクトと関係する主要な用語です。
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < オブジェクトとインタフェイス ] | [ 上へ : 調整の基本 ] | [ 調整手段 > ] |
4.1.3 オブジェクトとプロパティの命名規約
我々は以前にも コンテキストとエングラーバ でいくつかのオブジェクト命名規約を見てきました。ここで参照のために、最も一般的なオブジェクトとプロパティをリストアップし、それに加えてそれらの命名規約と実際の名前の例を挙げます。何らかの大文字のアルファベットを表すために ‘A’ を使用し、いくつかの小文字のアルファベットを表すために ‘aaa’ を使用しています。他の文字は実際の命名でもそのまま使用されます。
オブジェクト/プロパティのタイプ | 命名規約 | 例 |
---|---|---|
コンテキスト | Aaaa や AaaaAaaaAaaa | Staff, GrandStaff |
レイアウト オブジェクト | Aaaa や AaaaAaaaAaaa | Slur, NoteHead |
エングラーバ | Aaaa_aaa_engraver | Clef_engraver, Note_heads_engraver |
インタフェイス | aaa-aaa-interface | grob-interface, break-aligned-interface |
コンテキスト プロパティ | aaa や aaaAaaaAaaa | alignAboveContext, skipBars |
レイアウト オブジェクト プロパティ | aaa や aaa-aaa-aaa | direction, beam-thickness |
これから見ていくのですが、タイプが異なるオブジェクトのプロパティは異なるコマンドによって変更されます。そのため、プロパティの名前からオブジェクトの種類を識別できるようになると役に立ちます。
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < オブジェクトとプロパティの命名規約 ] | [ 上へ : 調整の基本 ] | [ 内部リファレンス マニュアル > ] |
4.1.4 調整手段
\override コマンド
我々はすでに コンテキスト プロパティを変更する と
エングラーバを追加 / 削除する でコンテキストのプロパティを変更したり、エングラーバを追加/削除したりするために使用するコマンド
\set
と \with
を見てきました。ここでは更に重要ないくつかのコマンドについて見ていきます。
レイアウト オブジェクトのプロパティを変更するためのコマンドは
\override
です。このコマンドは LilyPond の奥深くにある内部プロパティを変更しなければならないため、これまで見てきたコマンドのように単純な構文ではありません。どのコンテキストの中にあるどのオブジェクトのどのプロパティを変更しなければならないのか、そこにセットする新しい値を何にするのかを正確に知っている必要があります。どのようにこれを行うのかを見ていきましょう。
このコマンドの一般的な構文は以下のようなものです:
\override Context.LayoutObject #'layout-property = #value
これは Context コンテキストのメンバである LayoutObject という名前のレイアウトの layout-property という名前のプロパティに値 value をセットします。
必要とされているコンテキストが明白であり、それが最下位レベルのコンテキストである – つまり、Voice
, ChordNames
や Lyrics
である – 場合、その Context は省略可能可能であり (そして通常は省略されます)、この後の例の多くでも省略します。後ほど、コンテキストを指定しなければならない場合について見ていきます。
これから後のセクションでは広範囲に亘るプロパティとそれらの値を扱います。しかしながら、そのフォーマットとそれらのコマンドの使用方法を示すためには、容易に理解できる簡単なプロパティと値を 2, 3 使用してみるだけです。
今や、レイアウト プロパティの前に置かれなければならない #'
やプロパティ値の前に置かれなければならない #
について心配する必要はありません。これらは常にそのような形式で正確に記述されなければなりません。これは調整では最も一般的に使用されるコマンドであり、この章の残りの部分の大半ではプロパティ (変更コマンド) の使用方法を示すための例を記述しています。ここでは符頭の色を変更する簡単な例を挙げます:
c d \override NoteHead #'color = #red e f g \override NoteHead #'color = #green a b c
\revert コマンド
一旦オーバライドされると、そのプロパティは再度オーバライドされるか
\revert
コマンドに遭遇するまで新しい値のままでいます。\revert
コマンドは以下の構文を持ち、プロパティの値をオリジナルのデフォルト値に戻します。何度か \override
コマンドが発行されている場合は、前の値に戻すわけではないということに注意してください。
\revert Context.LayoutObject #'layout-property
繰り返しますが、\override
コマンドでの Context と同様に、多くの場合で Context を記述する必要はありません。以下の例の多くで、Context は省略されます。ここでは、最後の 2 つの音符の符頭の色をデフォルトに戻します:
c d \override NoteHead #'color = #red e f g \override NoteHead #'color = #green a \revert NoteHead #'color b c
\once prefix
\override
コマンドと \set
コマンドには両方とも接頭辞 \once
が付く可能性があります。これはその後に続く \override
や \set
コマンドをその場一回限り有効にし、その後にそのプロパティの値をデフォルト値に戻します。上と同じ例を使って、以下のように 1 つだけの音符の色を変更することができます:
c d \once \override NoteHead #'color = #red e f g \once \override NoteHead #'color = #green a b c
\overrideProperty コマンド
オーバライド コマンドには \overrideProperty
というもう 1 つのフォーマットがあり、時々必要となります。完璧を期すためにここでこれに言及しましたが、詳細は
Difficult tweaks を参照してください。
\tweak コマンド
利用可能な最後の調整コマンドは \tweak
です。これは同じタイミングで起こるオブジェクト – 和音の中にある音符などのように –
のプロパティを変更するために使用されます。\override
コマンドを使用すると和音の中にあるすべての音符に影響を与えます。一方、\tweak
は入力ストリームの中でその \tweak
のすぐ後にある要素 1 つだけに影響を与えます。
ここで例を挙げます。C メジャー コードの中にある真ん中の音符 (ミドル E) の符頭のサイズを変更したいとします。まず最初に、\once \override
だとどうなるか見てみましょう:
<c e g>4 \once \override NoteHead #'font-size = #-3 <c e g> <c e g>
このオーバライドは和音の中にあるすべての符頭に影響を与えています。これは和音の中にあるすべての音符が同じタイミングで起こるためであり、\once
のアクションは \override
と同様に同じタイミングで起こる、指定されたタイプすべてのレイアウト オブジェクトへのオーバライドに適用されます。
\tweak
コマンドはこれとは異なるやり方で処理されます。これは入力ストリームの中ですぐ後に続く要素にだけ作用します。しかしながら、これは入力ストリームから直接作成されるオブジェクト –
本質的に符頭とアーティキュレーション – にだけ効果を持ちます。符幹や臨時記号などのオブジェクトは後で作成されるため、この方法では調整できません。さらに、\tweak
が符頭に適用される場合、それらは和音の内部になければなりません –
つまり、単一山括弧 < .. >
の内部です。そのため、単一の音符 (和音ではない音符) を調整するには、\tweak
コマンドはその音符とともに単一の山括弧で囲わなければなりません。
それでは例に戻り、この方法で和音の真ん中の音符のサイズを変更します:
<c e g>4 <c \tweak #'font-size #-3 e g>4
\tweak
の構文は \override
コマンドの構文とは異なるということに注意してください。コンテキストもレイアウト オブジェクトも指定されません。実際、それらを指定するとエラーになります。これらは両方とも入力ストリームの中で後に続く要素によって示されます。さらに、イコール記号を使うべきではないということに注意してください。そのため、\tweak
コマンドの一般的な構文は単純に以下のようになります:
\tweak #'layout-property #value
さらに、\tweak
コマンドは一連のアーティキュレーションの中にあるただ 1 つのアーティキュレーションを変更されるためにも使用できます。ここに例を挙げます:
a ^Black -\tweak #'color #red ^Red -\tweak #'color #green _Green
\tweak
コマンドは、まるでそれがアーティキュレーションの一部であるかのように、アーティキュレーション マークの前に置かれなければならないということに注意してください。
さらに、\tweak
コマンドは、同時に起こるネストされた連符記号のセットのうちの 1 つの見た目を変更するためにも使用されます。以下の例では、長い連符記号と 3 つの短い連符記号のうちの最初の連符記号が同時に起こります。そのため、\override
コマンドだと両方の連符記号に適用されてしまいます。この例では、\tweak
は 2 つの連符記号を区別するために使用されています。最初の \tweak
コマンドは長い連符記号を音符の上に置くことを指定していて、2 番目の \tweak
コマンドは最初の短い連符記号の数字を赤で描くことを指定しています。
\tweak #'direction #up \times 4/3 { \tweak #'color #red \times 2/3 { c8[ c8 c8] } \times 2/3 { c8[ c8 c8] } \times 2/3 { c8[ c8 c8] } }
ネストされた連符が同時に起こらない場合、それらの見た目は \override
コマンドを用いた通常通りの方法で変更されるかもしれません:
\times 2/3 { c8[ c c]} \once \override TupletNumber #'text = #tuplet-number::calc-fraction-text \times 2/3 { c[ c] c[ c] \once \override TupletNumber #'transparent = ##t \times 2/3 { c8[ c c] } \times 2/3 { c8[ c c]} }
参照
記譜法リファレンス: The tweak command
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 調整手段 ] | [ 上へ : 出力を調整する ] | [ レイアウト オブジェクトのプロパティ > ] |
4.2 内部リファレンス マニュアル
4.2.1 レイアウト オブジェクトのプロパティ | ||
4.2.2 インタフェイスの中で見つかるプロパティ | ||
4.2.3 プロパティのタイプ |
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 内部リファレンス マニュアル ] | [ 上へ : 内部リファレンス マニュアル ] | [ インタフェイスの中で見つかるプロパティ > ] |
4.2.1 レイアウト オブジェクトのプロパティ
あなたがスラーを楽譜に描き、そのスラーが細すぎるためにもう少し太くしたいと思ったとします。どうやってスラーを太くしますか?以前に LilyPond の自由度の高さについて述べたので、そのようなことが可能であることは知っています。あなたはおそらく \override
コマンドが必要であると推測するでしょう。しかしながら、スラーの太さプロパティは存在するのでしょうか?そして、それが存在するならどうやって変更するのでしょうか?このようなことに内部リファレンス マニュアルは触れています。内部リファレンス マニュアルには、あなたがスラーを太くするために必要な情報、他のすべての \override
コマンドを構築するために必要な情報が含まれています。
内部リファレンスを見ていく前に一言警告です。これはリファレンス ドキュメントであり、説明はほんの少しかまったく含まれていません: リファレンスの目的は情報を正確に、かつ簡潔に提供することです。そのため、内部リファレンスを一見してひるんでしまうかもしれません。しかし、心配しないでください!ここにあるガイダンスと説明を読めば、少し練習するだけで、内部リファレンスから必要な情報を取り出せるようになります。
実際の音楽からの簡単な断片を持つ具体例を使用していきましょう:
{ \time 6/8 { r4 b8 b[( g]) g | g[( e]) e d[( f]) a | a g } \addlyrics { The man who feels love's sweet e -- mo -- tion } }
ここで、スラーをもう少し太くしようと決めたことにします。それは可能でしょうか?スラーは確かにレイアウト オブジェクトです。そのため、その疑問は ‘スラーに属していて、太さを制御するプロパティは存在するのか?’ ということになります。その答えを得るために内部リファレンス – 縮めて IR – を見なければなりません。
あなたが使用しているバージョンの LilyPond のための内部リファレンスは LilyPond ウェブサイト http://lilypond.org で見つかるでしょう。ドキュメント ページに行き、内部リファレンスへのリンクをクリックしてください。学習目的のためには標準の HTML バージョンを使うべきであり、‘one big page’ (‘大きな 1 ページにまとめたもの’) や PDF を使うべきではありません。次の数段落を読めば、あなたが内部リファレンスを読むときに実際にすべきことがわかるでしょう。
内部リファレンスのトップ ページ下には 5 つのリンクがあります。バックエンド へのリンクを選択してください。そこにはレイアウト オブジェクトについての情報があります。バックエンド 下にある すべてのレイアウト オブジェクト へのリンクを選択してください。そのページには、あなたが使用しているバージョンの LilyPond で使用されるすべてのレイアウト オブジェクトがアルファベット順でリストアップされています。Slur へのリンクを選択すると、Slur のプロパティがリスト アップされます。
記譜法リファレンスからこのページを見つける方法もあります。スラーについて扱っているページで、内部リファレンスへのリンクが見つかるかもしれません。このリンクでこのページに直接行くことができます。しかしながら、あなたが調整するレイアウト オブジェクトの名前を想像できる場合は、すぐに内部リファレンスに行ってそこで探す方が簡単です。
内部リファレンスの Slur ページでは、まず Slur オブジェクトは
Slur_engraver
によって作成されるということが述べられています。それから、標準設定がをリストアップされています。標準設定はアルファベット順にはなっていないということに注意してください。太さを制御していそうなプロパティを探してブラウザをスクロール ダウンさせていくと、以下が見つかります:
thickness
(number)1.2
Line thickness, generally measured inline-thickness
これが太さを変更するプロパティのようです。thickness
の値は数であり、デフォルト値は 1.2、この値は他のプロパティでは line-thickness
と呼ばれるということがわかります。
前にも言ったように、内部リファレンスには説明がほとんど、あるいはまったくありません。しかしながら、すでにスラーの太さを変えるための十分な情報を持っています。レイアウト オブジェクトの名前は Slur
であり、変更するプロパティの名前は
thickness
であり、スラーをもっと太くするには新しい値を 1.2 よりも大きくすべきであることがわかります。
今度は、レイアウト オブジェクト名で見つけた値を置き換えることによって
\override
コマンドを構築することができます。コンテキストは省略します。最初は太さに非常に大きな値を割り当ててみます。それによって、そのコマンドが確かに機能していることを確かめることができます。実行するコマンドは以下のようになります:
\override Slur #'thickness = #5.0
プロパティ名の前に #'
を付けること、新しい値の前に #
を付けることを忘れないでください!
最後の疑問は ‘このコマンドをどこに置くべきか?’ ということです。そのことについて不確かであり、学んでいる最中であるのならば、ベストな答えはこうです ‘音楽表記の内部で、最初のスラーの直前’。ではやってみましょう:
{ \time 6/8 { % Increase thickness of all following slurs from 1.2 to 5.0 \override Slur #'thickness = #5.0 r4 b8 b[( g]) g | g[( e]) e d[( f]) a | a g } \addlyrics { The man who feels love's sweet e -- mo -- tion } }
確かにスラーが太くなっています。
これが \override
コマンドを構築する基本的な方法です。これより後のセクションで遭遇するものはもう少し複雑ですが、必要な要点はすべて知っています – しかしながら、まだ練習が必要でしょう。これは以下の例で提供されます。
コンテキストを見つけ出す
しかしながら、まず最初にコンテキストを指定しなければならないとしたらどうでしょうか?指定すべきコンテキストは何でしょうか?スラーとボイスは音楽表記の各行で明らかに関係が深いので、スラーは Voice
コンテキストの中にあると推測できるかもしれません。しかし、それは確かでしょうか?この問題を解決するには、Slur について記述している内部リファレンス ページの先頭に戻ります。そこには ‘Slur オブジェクトは Slur エングラーバによって作成される’ と書かれています。そのため、スラーは Slur_engraver
が存在しているコンテキストのどれかで作成されるということになります。Slur_engraver
へのリンクを辿ります。そのページの最後の方で Slur_engraver
は 5 つのボイス コンテキスト –
標準のボイス コンテキストである Voice
を含む – の一部であることが述べられています。ですから、推測は正しかったのです。そして、Voice
は最下位のコンテキストの 1 つである – このことは、そこに音符を入力するという事実によって明らかに示されています – ため、ここではそのコンテキストを省略することができるのです。
1 回だけオーバライドする
上記の最後の例ではすべてのスラーが太くなっています。しかし、最初のスラーだけを太くしたい場合はどうでしょうか?これは \once
コマンドを使うことによって達成されます。\override
コマンドの直前に \once
コマンドを置くことによって、\override
コマンドは直後にある音符から始まるスラーだけを変更するようになります。直後にある音符がスラーの開始点ではない場合、そのコマンドはまったく機能しません – それがスラーに遭遇するまで保持されるということはなく、ただ切り捨てられるだけです。そのため、\once
コマンド付きの \override
コマンドは以下のように上記の例とは異なる場所に置かなくてはなりません:
{ \time 6/8 { r4 b8 % Increase thickness of immediately following slur only \once \override Slur #'thickness = #5.0 b[( g]) g | g[( e]) e d[( f]) a | a g } \addlyrics { The man who feels love's sweet e -- mo -- tion } }
今度は、最初のスラーだけが太くなりました。
\once
コマンドは \set
コマンドの前でも使用される可能性があります。
元に戻す
最後に、最初の 2 つだけのスラーを太くしたい場合はどうでしょうか?その場合、2 つのコマンド – それぞれの前に \once
を付けた –
をスラーが始まる音符の直前に置きます:
{ \time 6/8 { r4 b8 % Increase thickness of immediately following slur only \once \override Slur #'thickness = #5.0 b[( g]) g | % Increase thickness of immediately following slur only \once \override Slur #'thickness = #5.0 g[( e]) e d[( f]) a | a g } \addlyrics { The man who feels love's sweet e -- mo -- tion } }
あるいは、\once
コマンドを省略して、2 番目のスラーの後に
thickness
プロパティをデフォルト値に戻すために
\revert
コマンドを使うこともできます:
{ \time 6/8 { r4 b8 % Increase thickness of all following slurs from 1.2 to 5.0 \override Slur #'thickness = #5.0 b[( g]) g | g[( e]) % Revert thickness of all following slurs to default of 1.2 \revert Slur #'thickness e d[( f]) a | a g } \addlyrics { The man who feels love's sweet e -- mo -- tion } }
\revert
コマンドは \override
コマンドで変更されたどのプロパティでもデフォルト値に戻すことができます。状況に相応しい方を使用してください。
これで内部リファレンスと調整の基本的な方法についての紹介を終わりにします。この章で後に続くセクションの中にあるいくつのかの例でも一部では、内部リファレンスの特徴についての追加の紹介や、そこから情報を取り出すための更なる練習を提供します。それらの例ではガイダンスや説明のための言葉はずっと少ないでしょう。
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < レイアウト オブジェクトのプロパティ ] | [ 上へ : 内部リファレンス マニュアル ] | [ プロパティのタイプ > ] |
4.2.2 インタフェイスの中で見つかるプロパティ
今度は歌詞をイタリック体で譜刻したいということにします。そうするには \override
コマンドをどのように使う必要があるのでしょうか?以前と同様に、まず ‘すべてのレイアウト オブジェクト’ をリストアップしている内部リファレンス ページを開き、歌詞をコントロールしていそうなオブジェクトを探します。LyricText
がそれであるようです。これをクリックすると、歌詞のテキストに対してセットすることができるプロパティが表示されます。そこには font-series
と font-size
が含まれますが、歌詞をイタリック体にするためのプロパティらしきものはありません。これは、形に関するプロパティはすべてのフォント オブジェクトに共通なものであり、そのため、各レイアウト オブジェクトに含まれているのではなく、他の同様な共通プロパティと一緒にグループ化されていて、インタフェイスの 1 つ font-interface
の中に置かれているからです。
そのため、インタフェイスのプロパティを見つける方法と、どのオブジェクトがこれらのインタフェイス プロパティを使うのかを調べる方法を学ぶ必要があります。
LyricText
について記述している内部リファレンスのページを再び開いてください。そのページの最後に LyricText
がサポートするインタフェイスへのリンクがリスト アップされています。そのリストには font-interface
を含むいくつかの要素があります。このリンクをクリックすると、このインタフェイスに関連付けされているプロパティのところに行きます。これらのプロパティは LyricText
を含む font-interface
をサポートするすべてのオブジェクトのプロパティでもあります。
font-shape(symbol)
を含むフォントを制御するユーザが設定可能なプロパティをすべて見つけました。font-shape(symbol)
では symbol
を upright
,
italics
, あるいは caps
にセットすることができます。
そこには、font-series
と font-size
もリスト アップされていることに気づくでしょう。そこで次のような疑問が湧いてきます:
共通フォントプロパティ font-series
と font-size
は
LyricText
とインタフェイス font-interface
の両方でリスト アップされているのに、なぜ font-shape
はそうでないのか?その答えは、font-series
と font-size
は、LyricText
オブジェクトが作成されるときに、それらのグローバルなデフォルト値から変更されるのに対して、font-shape
はそうではないからです。LyricText
の中にあるエントリから LyricText
に適用されるそれら 2 つのプロパティの値がわかります。font-interface
をサポートする他のオブジェクトは、それらのオブジェクトが作成されるときに、それらのプロパティを異なる値にセットします。
今度は歌詞をイタリック体に変更するように \override
コマンドを構築できるかどうかを見ていきましょう。オブジェクトは LyricText
であり、プロパティは font-shape
であり、セットする値は italic
です。前と同様に、コンテキストを省略します。
話は逸れますが重要なことを 1 つ挙げます。font-shape
の値はシンボルなので、シングル アポストロフィ '
を付ける必要があるということに注意してください。その理由は、以前の例での thickness
や font-shape
の前にアポストロフィを付ける必要がある理由と同じです。それらも両方ともシンボルです。シンボルは LilyPond によって内部的に読み取られます。それらのいくつかは thickness
や font-shape
のようなプロパティの名前であり、他のものは italic
のようにプロパティに与えられる値として使用されます。任意のテキスト文字列との違い – 任意のテキスト文字列は "a text string"
のような形で表記されます – に注意してください。シンボルと文字列についてのより詳細な説明は、Scheme チュートリアル を参照してください。
さて、それでは歌詞をイタリック体で譜刻するために必要となる
\override
コマンドは以下のようになります:
\override LyricText #'font-shape = #'italic
そして、これは以下のように影響を与える歌詞の前に、そして近くに置くべきです:
{ \time 6/8 { r4 b8 b[( g]) g | g[( e]) e d[( f]) a | a g } \addlyrics { \override LyricText #'font-shape = #'italic The man who feels love's sweet e -- mo -- tion } }
これで歌詞がすべてイタリック体で譜刻されました。
歌詞モードの中でコンテキストを指定する
歌詞の場合、以前のようなコマンドの発行の仕方の中でコンテキストを指定しようとしても失敗するでしょう。歌詞モードの中で入力される音節はスペース、改行、数字のいずれかで区切られます。他のすべての文字は音節の一部と見なされます。これが、終端の }
の前にはスペースか改行を置かなければならない理由です。そうしないと、終端の }
は最後の音節の一部に含まれてしまいます。同様に、コンテキスト名とオブジェクト名を区切るために、ピリオドまたはドット ‘.’ の前と後ろにスペースを挿入しなければなりません。さもないと 2 つの名前は一緒になってしまい、インタプリタはそれらを認識できなくなります。そのため、コマンドは以下のようにすべきです:
\override Lyrics . LyricText #'font-shape = #'italic
Note: 歌詞の中では、最後の音節と終端の波括弧の間に常にスペースを置いてください。
Note: 歌詞の中のオーバライドでは、コンテキスト名とオブジェクト名の間にあるドットの両側に常にスペースを置いてください。
参照
学習マニュアル: Scheme チュートリアル
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < インタフェイスの中で見つかるプロパティ ] | [ 上へ : 内部リファレンス マニュアル ] | [ オブジェクトの見た目 > ] |
4.2.3 プロパティのタイプ
これまでにプロパティのタイプを 2 つ見てきました:
number
と symbol
です。プロパティに与える値が有効であるためには、その値は正しいタイプであり、そのタイプのルールに従っていなければなりません。プロパティのタイプは内部リファレンスの中で常にプロパティ名の後の括弧の中に表示されています。ここに、あなたが必要になるであろうプロパティのタイプを、そのタイプのルールといくつかの例と共にリスト アップします。もちろん、\override
コマンドの中でプロパティの値を入力する時は、常にそれらの値の前にハッシュ記号 #
を付け加える必要があります。
プロパティ タイプ | 規則 | 例 |
---|---|---|
Boolean | 真か偽のどちらかで、それぞれ #t と #f で表されます | |
Dimension (譜表スペース) | 正の小数 (譜表スペース単位) | |
Direction | 有効な向きを表す定数またはそれと等価な数値 (-1 から 1 までの小数が許可されます) | |
Integer | 正の整数 | |
List | 値のセット。セットの値はスペースで区切られ、前にアポストロフィが付いた括弧で囲まれます | |
Markup | 有効なマークアップ | |
Moment | make-moment 関数で構築される全音符の分数 | |
Number | 正または負の小数 | |
(数の) Pair | ‘スペース . スペース’ で区切られ、前にアポストロフィが付いた括弧で囲まれた 2 つの数値 | |
Symbol | プロパティに許可されているシンボルのセットのいずれかであり、前にアポロストロフィを付けます | |
Unknown | 手続き。何のアクションも起こさない場合は | |
Vector | 前にアポストロフィ-ハッシュ | |
参照
学習マニュアル: Scheme チュートリアル
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < プロパティのタイプ ] | [ 上へ : 出力を調整する ] | [ オブジェクトの可視性と色 > ] |
4.3 オブジェクトの見た目
いくつかの例を使ってこれまでに学んだことを練習して、譜刻される楽譜の見た目を変更するためにどのように調整が使われるのかを見ていきましょう。
4.3.1 オブジェクトの可視性と色 | ||
4.3.2 オブジェクトのサイズ | ||
4.3.3 オブジェクトの長さと太さ |
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < オブジェクトの見た目 ] | [ 上へ : オブジェクトの見た目 ] | [ オブジェクトのサイズ > ] |
4.3.1 オブジェクトの可視性と色
教育目的の楽譜では、ある要素を省略した楽譜を譜刻して、学生にそれを付け足させるという訓練にしたいと思うかもしれません。簡単な例として、その訓練とは小節線の無い楽譜だと仮定してみましょう。しかしながら、通常、小節線は自動的に挿入されます。どうやって小節線が譜刻されることを防ぐのでしょうか?
このことに挑戦する前に、オブジェクト プロパティはインタフェイスと呼ばれるものにグループ化されているということを思い出してください – インタフェイスの中で見つかるプロパティ を参照してください。これはあるグラフィカル オブジェクトを調整するために一緒に使用されるかもしれないプロパティをグループ化したものです – あるオブジェクトに対してインタフェイス内のプロパティの 1 つを使うことが許可されるのなら、他のプロパティも許可されます。あるオブジェクトはいくつかのインタフェイス内にあるプロパティを使用し、別のオブジェクトはそれとは別のインタフェイス内にあるプロパティを使用します。ある特定のグラフィカルオブジェクトによって使用されるプロパティを保持しているインタフェイスは、そのグラフィカル オブジェクトについて記述している内部リファレンス ページの最後にリスト アップされていて、それらのプロパティはそれらのインタフェイスを参照することによって閲覧できます。
グラフィカル オブジェクトについての情報を見つけ出す方法を
レイアウト オブジェクトのプロパティ で説明しました。同じアプローチを使って、内部リファレンスで小節線を譜刻するレイアウト オブジェクトを見つけ出します。バックエンドを経由してすべてのレイアウト オブジェクトに行くと、そこに BarLine
と呼ばれるレイアウト オブジェクトがあることがわかります。そのレイアウト オブジェクトのプロパティには小節線の可視性をコントロールする
2 つのプロパティが含まれています: break-visibility
と stencil
です。さらに、BarLine
はインタフェイスのいくつかをサポートしています。grob-interface
もサポートされていて、そこには transparent
プロパティと color
プロパティが含まれています。これらすべてが小節線の可視性に影響を与えます (そしてもちろん、拡大解釈すれば他の多くのレイアウト オブジェクトにも影響を与えます)。次はこれらのプロパティをそれぞれ見ていきましょう。
ステンシル (stencil)
このプロパティは譜刻すべきシンボル (グリフ) を指定することによって小節線の見た目を制御します。他の多くのプロパティでも共通に言えますが、このプロパティの値に
#f
をセットすることによって何も譜刻させなくすることができます。ではやってみましょう。以前と同様に、暗黙のコンテキスト Voice
は省略します:
{ \time 12/16 \override BarLine #'stencil = ##f c4 b8 c d16 c d8 | g, a16 b8 c d4 e16 | e8 }
小節線はまだ譜刻されています。何が間違っているのでしょうか?内部リファレンスに戻って、BarLine
のプロパティを記述しているページを読み返してください。そのページの先頭に
“BarLine オブジェクトは Bar_engraver によって作成されます” と記述されています。Bar_engraver
ページに行ってください。そのページの最後で、Bar_engraver
を保持するコンテキストがリスト アップされています。それらのコンテキストのタイプはすべて Staff
です。ですから、\override
コマンドが予期したように機能しなかったのは、BarLine
はデフォルトの Voice
コンテキストの中にはいなかったからなのです。コンテキストが間違って指定された場合、そのコマンドは機能しません。エラー メッセージは生成されず、ログ ファイルには何もログが残りません。正しいコンテキストを付け加えることによってコマンドを修正してみましょう:
{ \time 12/16 \override Staff.BarLine #'stencil = ##f c4 b8 c d16 c d8 | g, a16 b8 c d4 e16 | e8 }
今度は小節線が消えました。
可視性の破棄 (break-visibility)
内部リファレンスの BarLine
のプロパティから
break-visibility
プロパティには 3 つのブール値からなるベクトルが必要であることがわかります。これらはそれぞれ、小節線が行の最後、行の途中、行の最初に譜刻されるかどうかを制御します。以下の例ではすべての小節線を消したいので、必要となる値は
'#(#f #f #f)
です。それではやってみましょう。Staff
コンテキストを含めることを忘れないでください。また、この値を書くときに括弧を始める前に #'#
を付ける必要があることにも注意してください。'#
はベクトルを導入するときに値の一部として必要とされ、先頭の #
は \override
コマンドの中で常に値の前に置くことが必要とされます。
{ \time 12/16 \override Staff.BarLine #'break-visibility = #'#(#f #f #f) c4 b8 c d16 c d8 | g, a16 b8 c d4 e16 | e8 }
今度もすべての小節線が消えました。
透過性 (transparent)
内部リファレンスの grob-interface
ページにあるプロパティから
transparent
プロパティはブール値であることがわかります。これはグラフィカル オブジェクトを透明にする場合には #t
にセットします。次の例では、小節線ではなく拍子記号を不可視にしてみましょう。そうするには、まず、拍子記号のグラフィカル オブジェクト名を見つける必要があります。TimeSignature
レイアウト オブジェクトのプロパティを見つけるために内部リファレンスの ‘すべてのレイアウト オブジェクト’ ページに戻ってください。TimeSigunature
は Time_signature_engraver
によって作り出され、さらに、Time_signature_engraver
は Staff
コンテキストに含まれ、さらに、Staff
コンテキストは grob-interface
をサポートしているということがわかります。そのため、拍子記号を透明にするためのコマンドは以下のようになります:
{ \time 12/16 \override Staff.TimeSignature #'transparent = ##t c4 b8 c d16 c d8 | g, a16 b8 c d4 e16 | e8 }
拍子記号は消えました。しかしながら、このコマンドは拍子記号があるべき場所に隙間を残しています。たぶん、これは学生がその部分を埋めるための練習としては望ましいでしょうが、他の状況ではこの隙間は望ましくありません。この隙間を取り除くには、拍子記号の transparent
の代わりにステンシル (型、型紙) を #f
にセットします:
{ \time 12/16 \override Staff.TimeSignature #'stencil = ##f c4 b8 c d16 c d8 | g, a16 b8 c d4 e16 | e8 }
違いは明白です: ステンシルを #f
にセットすると、オブジェクト自体が削除されます。一方、オブジェクトを transparent
(透明) にするとそのオブジェクトは消えますが、オブジェクトは不可視になっただけです。
色 (color)
最後に、小節線の色を白にすることによって小節線を不可視にしてみましょう。(これには白い小節線が譜表線と交差したところで譜表線を見えたり見えなくしてしまうかもしれないという問題があります。以下のいくつかの例で、このことを予測することはできないと思うかもしれません。そうなる理由と、それを制御する方法についての詳細は、 Painting objects white でカバーされています。しかしここでは色について学んでいるところなので、オブジェクトを白で描くことの限界を受け入れるだけにしてください。)
grob-interface
はカラー プロパティの値はリストであると指定しています。しかしながら、そのリストが何であるべきなのかの説明はありません。カラー プロパティで必要とされるリストは実際のところ内部ユニットの中にある値のリストです。しかし、内部ユニットの中にある値を知らなくても済むように、カラーを指定するための手段がいくつか用意されています。最初の方法は
List of colors にある最初の表でリスト アップされている
‘標準’ のカラーの 1 つを使用する方法です。小節線を白にするには以下のように記述します:
{ \time 12/16 \override Staff.BarLine #'color = #white c4 b8 c d16 c d8 | g, a16 b8 c d4 e16 | e8 }
今度も再び小節線は見えなくなりました。white の前にアポストロフィは付かないということに注意してください – これはシンボルではなく関数です。この関数が呼び出されると、この関数はカラーを白にセットするために必要とされる内部値のリストを提供します。標準カラー リストにある他のカラーもまた関数です。これが機能していることをあなた自身が納得するために、カラーをこのリストの中にある他の関数の 1 に変更しようと思うかもしれません。
カラーを変えるための 2 番目の方法は、
List of colors の
2 番目のリストの中にある X11 カラー名のリストを使用する方法です。しかしながら、以下のように、これらの前には X11 カラー名を内部値のリストに変更するもう 1 つの関数 – x11-color
– がなければなりません:
{ \time 12/16 \override Staff.BarLine #'color = #(x11-color 'white) c4 b8 c d16 c d8 | g, a16 b8 c d4 e16 | e8 }
この場合、関数 x11-color
はシンボルを引数として扱うので、シンボルの前にはアポストロフィをつけなくてはならず、x11-color
とシンボルは括弧で囲まれていなければならないということに注意してください。
まだ 3 番目の方法が残っています。これは RGB 値を内部カラーに変換する rgb-color
関数を使用する方法です。この関数は赤、緑、青の輝度を表す 3 つの引数をとります。これらの引数は 0 から 1 までの値をとります。ですから、カラーを赤にセットする場合の値は (rgb-color 1 0 0)
となり、白の場合は (rgb-color 1 1 1)
となります:
{ \time 12/16 \override Staff.BarLine #'color = #(rgb-color 1 1 1) c4 b8 c d16 c d8 | g, a16 b8 c d4 e16 | e8 }
最後に、X11 カラー セットの一部であるグレー スケールを用いる方法もあります。グレー スケールの範囲は黒 'grey0'
から白 'grey100'
まで
1 段階ずつあります。グレー スケールの使用方法を示すために、例の中にあるすべてのレイアウト オブジェクトのカラーをさまざまな濃度のグレーにセットしてみましょう:
{ \time 12/16 \override Staff.StaffSymbol #'color = #(x11-color 'grey30) \override Staff.TimeSignature #'color = #(x11-color 'grey60) \override Staff.Clef #'color = #(x11-color 'grey60) \override Voice.NoteHead #'color = #(x11-color 'grey85) \override Voice.Stem #'color = #(x11-color 'grey85) \override Staff.BarLine #'color = #(x11-color 'grey10) c4 b8 c d16 c d8 | g, a16 b8 c d4 e16 | e8 }
各レイアウト オブジェクトに関連付けされているコンテキストに注意してください。これらのコンテキストを正しく取得することが重要であり、そうしなければコマンドは機能しません!コンテキストの中には特定のエングラーバが置かれているということを忘れないでください。エングラーバに対するデフォルト コンテキストを見つけ出すには、内部リファレンスのレイアウト オブジェクトからスタートして、そこからそれを作り出すエングラーバのページに行きます。エングラーバのページには、通常はどのコンテキストにそのエングラーバが含まれているのかが記述されています。
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < オブジェクトの可視性と色 ] | [ 上へ : オブジェクトの見た目 ] | [ オブジェクトの長さと太さ > ] |
4.3.2 オブジェクトのサイズ
以前の例を見直すことから始めてみましょう (音楽表記をネストする を参照してください)。そこでは ossia として新たに一時的な譜表を導入する方法が示されています。
\new Staff ="main" { \relative g' { r4 g8 g c4 c8 d | e4 r8 << { f c c } \new Staff \with { alignAboveContext = #"main" } { f8 f c } >> r4 | } }
通常、オッシアは音部記号と拍子記号無しで記述され、メインの譜表よりもわずかに小さく譜刻されます。今度は、すでに音部記号と拍子記号を削除する方法を知っています –
以下のようにそれぞれのステンシルを #f
にセットするだけです:
\new Staff ="main" { \relative g' { r4 g8 g c4 c8 d | e4 r8 << { f c c } \new Staff \with { alignAboveContext = #"main" } { \override Staff.Clef #'stencil = ##f \override Staff.TimeSignature #'stencil = ##f { f8 f c } } >> r4 | } }
ここで、\with
節の後にある追加の括弧のペアが、その括弧に囲まれているオーバライドと音楽がオッシア譜表に適用されることを保証するために、必要となります。
しかし、\with
を使った譜表コンテキストの変更と
\override
を使った音部記号と拍子記号のステンシルの変更との違いは何なのでしょうか?主な違いは、\with
節の中で行われた変更はそのコンテキストが作成されるときに行われ、そのコンテキストではデフォルト値として残ります。一方、音楽の中に埋め込まれた \set
コマンドや
\override
コマンドは動的です – それらは音楽のある特定のポイントに同期して変更を行います。変更が \unset
や \revert
を使ってセットを解除されたり元に戻された場合、デフォルト値 – これは \with
節でセットされていた場合はその値、そうでない場合は通常のデフォルト値 – に戻ります。
いくつかのコンテキスト プロパティは \with
節でのみ変更可能です。これらは、コンテキストが作成された後では、変更されることのないプロパティです。alignAboveContext
とそのパートナー alignBelowContext
がそのようなプロパティです – いったん譜表が作成されると、譜表のアラインメントは決定され、それを後で変更しようとすることには意味がありません。
レイアウト オブジェクトのデフォルト値は \with
節でセットすることもできます。通常の \override
コマンドをコンテキスト名を省いて使用するだけです。コンテキスト名を省略するのは、そのコンテキストは明らかに
\with
節が変更しようとしているコンテキストだからです。実際、\with
節の中でコンテキストを指定するとエラーが発生します。
それでは上記の例を以下のように書き換えます:
\new Staff ="main" { \relative g' { r4 g8 g c4 c8 d | e4 r8 << { f c c } \new Staff \with { alignAboveContext = #"main" % Don't print clefs in this staff \override Clef #'stencil = ##f % Don't print time signatures in this staff \override TimeSignature #'stencil = ##f } { f8 f c } >> r4 | } }
最後に、レイアウト オブジェクトのサイズを変更してみます。
いくつかのレイアウト オブジェクトはある書体から選択されたグリフとして作成されます。これには符頭、臨時記号、マークアップ、音部記号、拍子記号、強弱記号、歌詞が含まれます。それらのサイズは、これから見ていくように、font-size
プロパティを変更することによって変更されます。スラーやタイのような他のレイアウト オブジェクト – 一般には、スパナ オブジェクト (spanner objects) – は個々に描かれるため、font-size
プロパティとは関係がありません。一般に、それらのオブジェクトはそれらを取り付けられるオブジェクトからサイズを決定する (訳者: 例えば、スラーはそのスラーが付着する音符からそのスラーのサイズを決定する) ので、通常はサイズを手動で変更する必要はありません。さらに、符幹や小節線の長さ、連桁や他の線の太さ、譜表線の間隔などといった他のプロパティはすべて特別な方法で変更する必要があります。
オッシアの例に戻って、まず font-size
を変更してみましょう。これを行うには 2 通りの方法があります。以下のようなコマンドで NoteHead
のような各オブジェクト タイプのフォント サイズを変更する:
\override NoteHead #'font-size = #-2
あるいは、\set
を使って特別なプロパティ fontSize
を設定するか、それを \with
節に含める
(ただし、\set
は含めません) ことによってすべてのフォントのサイズを変更します:
\set fontSize = #-2
これらの命令文は両方ともフォント サイズを前の値から 2 段階減らします。各段階でサイズはおよそ 12% 増減します。
それではオッシアの例でフォント サイズを変更してみましょう:
\new Staff ="main" { \relative g' { r4 g8 g c4 c8 d | e4 r8 << { f c c } \new Staff \with { alignAboveContext = #"main" \override Clef #'stencil = ##f \override TimeSignature #'stencil = ##f % Reduce all font sizes by ~24% fontSize = #-2 } { f8 f c } >> r4 | } }
これでもまだ完璧ではありません。符頭とフラグは小さくなりましたが、符幹はそれに対して長すぎ、譜表線は離れすぎています。これらをフォント サイズの減少に比例してスケール ダウンさせる必要があります。次のサブ セクションでそれを行う方法について議論します。
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < オブジェクトのサイズ ] | [ 上へ : オブジェクトの見た目 ] | [ オブジェクトの配置 > ] |
4.3.3 オブジェクトの長さと太さ
LilyPond では距離と長さは一般に譜表スペース – 譜表の中の隣り合う線の間隔 –
で測ります (特別な場合では、譜表スペースの半分で測ることもあります)。一方、たいていの thickness
プロパティは line-thickness
と呼ばれる内部プロパティを単位として測ります。例えば、デフォルトでは、ヘアピン (訳者: 強弱記号) の線の太さは
1 単位の line-thickness
であり、音符の符幹の thickness
は 1.3 です。けれども、それとは単位の異なる太さプロパティがあるということにも注意してください。例えば、連桁の太さプロパティは譜表スペースで測ります。
それでは、どうやって長さをフォント サイズに比例させるのでしょうか?これは、まさにこの目的のために提供されている magstep
と呼ばれる特別な関数の助けを借りることによって達成できます。この関数は引数を 1 つ – フォント サイズの変化 (前の例では #-2) –
をとり、他のオブジェクトの縮小に比例したスケーリング ファクタを返します。以下のように使用します:
\new Staff ="main" { \relative g' { r4 g8 g c4 c8 d | e4 r8 << { f c c } \new Staff \with { alignAboveContext = #"main" \override Clef #'stencil = ##f \override TimeSignature #'stencil = ##f fontSize = #-2 % Reduce stem length and line spacing to match \override StaffSymbol #'staff-space = #(magstep -2) } { f8 f c } >> r4 | } }
符幹の長さと他の多くの長さに関係するプロパティは常に
staff-space
プロパティの値と比例関係になるよう算出されるため、それらの長さも自動的にスケール ダウンされます。これはオッシアの垂直方向のスケールだけに効果を及ぼすということに注意してください – 水平方向のスケールは、メインの音楽と同期するよう、メインの音楽のレイアウトによって決定されるため、水平方向のスケールは
staff-space
の変更によっていかなる影響も受けません。もちろん、メインの音楽のすべてのスケールがこの方法で変更された場合、水平方向のスペースも影響を受けます。このことについては、後のレイアウト セクションで議論します。
そして、これでオッシアの作成は完了です。他のすべてのオブジェクトのサイズと長さが類似の方法で変更されるかもしれません。
上記の例のようなスケールのちょっとした変更に対して、小節線、連桁、ヘアピン、スラーなどのさまざまな描画線の太さは通常はグローバルな調節を必要としません。ある特定のレイアウト オブジェクトの太さを調節する必要がある場合、それを達成する最良の方法はそのオブジェクトの thickness
プロパティをオーバライドすることです。スラーの太さを変更する例は レイアウト オブジェクトのプロパティ で示されています。すべての描画オブジェクト (つまり、フォントから作り出されるオブジェクトではないもの) の太さが同様の方法で変更されるかもしれません。
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < オブジェクトの長さと太さ ] | [ 上へ : 出力を調整する ] | [ 自動配置 > ] |
4.4 オブジェクトの配置
4.4.1 自動配置 | ||
4.4.2 譜表内部オブジェクト | ||
4.4.3 譜表外部オブジェクト |
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < オブジェクトの配置 ] | [ 上へ : オブジェクトの配置 ] | [ 譜表内部オブジェクト > ] |
4.4.1 自動配置
音楽記譜法には譜表に属するオブジェクトがいくつかあり、他のオブジェクトは譜表の外側に置かれるべきです。それらはそれぞれ譜表内部オブジェクトと譜表外部オブジェクトと呼ばれます。
譜表内部オブジェクトは譜表上に置かれます – 符頭、符幹、臨時記号などです。通常、それらの位置は音楽自体によって決定されます – 譜表内部オブジェクトは譜表のある特定の線と同じ垂直位置に置かれたり、そこに置かれるべき他のオブジェクトにくっつけられたりします。近接する和音の中にある符頭、符幹、臨時記号の衝突は普通は自動的に回避されます。これから見ていくように、この自動配置を変更することができるコマンドとオーバライドがあります。
譜表の外部にあるオブジェクトには、リハーサル記号、テキスト、強弱記号などがあります。LilyPond が持つ譜表外部オブジェクトの垂直位置のルールは、譜表外部オブジェクトをできるだけ譜表の近くに、しかし他のオブジェクトと衝突しない程度の近さに置くというものです。以下で示すように、LilyPond はオブジェクトを配置する順番を決定するために
outside-staff-priority
プロパティを使用します。
最初に、LilyPond はすべての譜表内部オブジェクトを配置します。それから、outside-staff-priority
に従って譜表外部オブジェクトを並べます。譜表外部オブジェクトは最小の outside-staff-priority
を持つオブジェクトから順番に 1 つずつ並べられ、すでに配置されたオブジェクトと衝突しないように配置されます。つまり、2 つの譜表外部オブジェクトが同じスペースを巡って競合する場合、より小さな outside-staff-priority
を持つオブジェクトが譜表の近くに配置されます。2 つのオブジェクトが同じ outside-staff-priority
を持つ場合、先に発生するオブジェクトが譜表の近くに配置されます。
以下の例では、すべてのマークアップ テキストが同じ優先度を持っています (なぜなら、優先度が明示的にセットされていないからです)。‘Text3’ が自動的に譜表の近く、‘Text2’ のすぐ下に納まるよう配置されていることに注意してください。
c2^"Text1" c^"Text2" c^"Text3" c^"Text4"
デフォルトでは、譜も互いにできるだけ近くなるよう配置されます (最小間隔に従います)。音符が隣接する譜表に向かって長く突き出てている場合、譜を離さないと記譜したものが重なり合ってしまう場合にのみ譜は離されます。以下の例は譜の調整によって音符が ‘ぴったりと納まる’ 様子を示しています:
<< \new Staff { \relative c' { c a, } } \new Staff { \relative c'''' { c a, } } >>
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 自動配置 ] | [ 上へ : オブジェクトの配置 ] | [ 譜表外部オブジェクト > ] |
4.4.2 譜表内部オブジェクト
これまでにコマンド \voiceXXX
がスラー、タイ、運指法記号、符幹の向きに依存する他のすべてに対してどのように影響を与えるかを見てきました。これらのコマンドは、多声部音楽を記述しているときに上下する旋律を見分けられるようにすることを可能にするために不可欠なものです。しかしながら、この自動機能をオーバライドする必要がある場合もあります。このオーバライドは音楽全体に対しても、個々の音符に対してもできます。この自動機能を制御しているプロパティは各レイアウト オブジェクトの
direction
プロパティです。まず、これは何をするのかを説明し、それから、作成済みのコマンドをいくつか紹介します。それらのコマンドを使うと、一般的な変更のための明示的なオーバライドをコードしなくて済みます。
スラーやタイのようなレイアウト オブジェクトはカーブを描き、曲がり、上下します。符幹やフラグのような他のオブジェクトも上下の向きによって位置が左右します。direction
がセットされているときは、これは自動的に制御されます。
以下の例は、小節 1 で符幹のデフォルトの振る舞いを示しています。高い位置にある音符の符幹は下向きで、低い位置にある音符の符幹は上向きです。続いて 4 つの音符の符幹をすべて強制的に下向きにし、4 つの音符の符幹をすべて強制的に上向きにし、最後に 4 つの音符の符幹をデフォルトに戻します。
a4 g c a \override Stem #'direction = #DOWN a g c a \override Stem #'direction = #UP a g c a \revert Stem #'direction a g c a
ここで定数 DOWN
と UP
を使っています。これらはそれぞれ値 -1
と +1
を持ち、定数の代わりにそれらの数値を使うこともできまはす。さらに値 0
を使う場合もあります。この値は符幹では UP
を意味するものとして扱われますが、いくつかのオブジェクトでは ‘center’ という意味になります。値 0
を持つ定数に CENTER
があります。
しかしながら、これらの明示的なオーバライドは普通は使われません。もっと簡単で定義済みのコマンドが利用可能だからです。ここに一般的なコマンドの表を挙げます。それぞれのコマンドの意味が明白でない場合は、そのコマンドの意味を述べています。
下/左 | 上/右 | 元に戻す | 効果 |
---|---|---|---|
| | | 矢印が下に付く、上に付く、付かない |
| | | 譜表線を避けるための移動方向 |
| | | |
| | | Note: スラー コマンドとは別になります |
| | | |
| | | |
| | | スパナとして挿入されるテキストが譜表の下/上にくる |
| | | |
| | | 連符記号が音符の下/上にくる |
これらの定義済みコマンドの前には \once
が付かないかもしれません。コマンドの効果を単一の音符に制限したい場合、等価の \once \override
コマンドを使用するか、あるいは、定義済みコマンドを使用して、効果を受けた音符の後に対応する \xxxNeutral
コマンドを置かなければなりません。
運指法記号 (Fingering)
単一の音符に対する運指法記号の配置も direction
プロパティによって制御できますが、direction
を変更しても和音の運指法記号は影響を受けません。これから見ていくように、和音の中の個々の音符の運指法記号を制御するための特別なコマンドがあります。このコマンドを使うことで運指法記号を各音符の上、下、左、右に配置することができます。
まず、単一の音符の運指法記号に対する direction
を効果を示します。最初の小節はデフォルト状態で、その後で DOWN
と UP
を指定したときの効果を示します:
c-5 a-3 f-1 c'-5 \override Fingering #'direction = #DOWN c-5 a-3 f-1 c'-5 \override Fingering #'direction = #UP c-5 a-3 f-1 c'-5
しかしながら、direction
プロパティをオーバライドすることは、手動で運指法記号を音符の上または下に配置するもっとも簡単な方法ではありません。運指法番号の前に -
の代わりに _
または ^
を使う方が普通は適切です。ここで、上記の例にこの方法を用いた例を挙げます:
c-5 a-3 f-1 c'-5 c_5 a_3 f_1 c'_5 c^5 a^3 f^1 c'^5
direction
プロパティは和音では無視されますが、方向を示す接頭辞 _
と ^
は機能します。以下で示すように、デフォルトでは、運指法記号は和音の音符の上と下の両方に自動的に配置されます:
<c-5 g-3> <c-5 g-3 e-2> <c-5 g-3 e-2 c-1>
しかし、以下で示すように、運指法番号のすべてまたはいずれかを手動で強制的に和音の上または下に配置するために、これはオーバライドされるかもしれません:
<c-5 g-3 e-2 c-1> <c^5 g_3 e_2 c_1> <c^5 g^3 e^2 c_1>
\set fingeringOrientations
コマンドを使うことによって和音の中にある個々の音符の運指法記号の配置をより細かく制御することさえできます。このコマンドのフォーマットは以下のようなものです:
\set fingeringOrientations = #'([up] [left/right] [down])
fingeringOrientations
は Voice
コンテキストのプロパティであり、New_fingering_engraver
によって作成、使用されるため、\set
が使用されます。
このプロパティには 1 つから 3 つまでの値のリストがセットされるかもしれません。このプロパティは運指法記号を上 (リストに up
がある場合)、下 (リストに down
がある場合)、左 (リストに left
がある場合。リストに right
がある場合は右)
に配置します。逆に配置位置がリストされていない場合、その位置に運指法記号は配置されません。LilyPond はこれらの制約を受け取り、
後に続く和音の音符への運指法記号をうまく配置します。left
と right
は相互排他的であるということに注意してください –
運指法記号は左右のどちらかにしか配置されないか、どちらにも配置されません。
Note: このコマンドを使って単一の音符への運指法記号の配置をコントロールするには、その音符を山括弧で囲んで単一音符の和音として記述する必要があります。
いくつか例を挙げます:
\set fingeringOrientations = #'(left) <f-2> < c-1 e-2 g-3 b-5 > 4 \set fingeringOrientations = #'(left) <f-2> < c-1 e-2 g-3 b-5 > 4 \set fingeringOrientations = #'(up left down) <f-2> < c-1 e-2 g-3 b-5 > 4 \set fingeringOrientations = #'(up left) <f-2> < c-1 e-2 g-3 b-5 > 4 \set fingeringOrientations = #'(right) <f-2> < c-1 e-2 g-3 b-5 > 4
運指法記号が少し込み合っているように見える場合は、font-size
でサイズを下げることができます。デフォルト値は内部リファレンスの Fingering
オブジェクトのページから
-5
であることがわかるので、-7
にセットしてみましょう:
\override Fingering #'font-size = #-7 \set fingeringOrientations = #'(left) <f-2> < c-1 e-2 g-3 b-5 > 4 \set fingeringOrientations = #'(left) <f-2> < c-1 e-2 g-3 b-5 > 4 \set fingeringOrientations = #'(up left down) <f-2> < c-1 e-2 g-3 b-5 > 4 \set fingeringOrientations = #'(up left) <f-2> < c-1 e-2 g-3 b-5 > 4 \set fingeringOrientations = #'(right) <f-2> < c-1 e-2 g-3 b-5 > 4
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 譜表内部オブジェクト ] | [ 上へ : オブジェクトの配置 ] | [ オブジェクトの衝突 > ] |
4.4.3 譜表外部オブジェクト
譜表外部オブジェクトは自動的に衝突を回避するよう配置されます。小さな値の outside-staff-priority
プロパティを持つオブジェクトは譜表の近くに配置され、他の譜表外部オブジェクトは衝突を避けるのに必要な分だけ離されます。outside-staff-priority
は grob-interface
の中で定義されているため、すべてのレイアウト オブジェクトのプロパティです。デフォルトでは、すべての譜表内部オブジェクトの outside-staff-priority
は
#f
にセットされていて、譜表外部オブジェクトが作成されたときにその譜表外部オブジェクトの outside-staff-priority
に適当な数値がセットされます。以下の表はデフォルトで Staff
コンテキストまたは
Voice
コンテキストの中に配置されるいくつかの一般的な譜表外部オブジェクトのデフォルトの
outside-staff-priority
値を示しています。
レイアウト オブジェクト | 優先度 | 以下のオブジェクトの配置を制御する: |
---|---|---|
| | 全休符上のテキスト |
| | マークアップ テキスト |
| | オッターバ (オクターブを上下させる記号) の囲み |
| | テキスト スパナ |
| | すべての強弱記号 |
| | Volta (番号付きのリピート) の囲み |
| | トリル記号 |
これらのうちのいくつかのデフォルトでの配置を示している例を挙げます。
% Set details for later Text Spanner \override TextSpanner #'(bound-details left text) = \markup { \small \bold Slower } % Place dynamics above staff \dynamicUp % Start Ottava Bracket \ottava #1 c' \startTextSpan % Add Dynamic Text c\pp % Add Dynamic Line Spanner c\< % Add Text Script c^Text c c % Add Dynamic Text c\ff c \stopTextSpan % Stop Ottava Bracket \ottava #0 c, c c c
この例はテキスト スパナ – 音楽の上に置かれる延長線付きのテキスト – の作成方法についても示しています。スパナは \startTextSpan
コマンドから
\stopTextSpan
コマンドまで延び、テキストのフォーマットは
\override TextSpanner
コマンドによって定義されます。詳細は
Text spanners を参照してください。
この例はさらにオッターバ囲みを作成する方法についても示しています。
小節番号、メトロノーム記号、リハーサル記号は示されていないということに注意してください。デフォルトでは、それらは Score
コンテキストの中で作成され、それらの outside-staff-priority
は Staff
コンテキストの中で作成されるレイアウト オブジェクトとは異なり無視されます。小節番号、メトロノーム記号あるいはリハーサル記号をそれらの outside-staff-priority
に従って配置したいのなら、Score
コンテキストからそれぞれ Bar_number_engraver
,
Metronome_mark_engraver
, Mark_engraver
を削除して最上位の
Staff
コンテキストに置く必要があります。そうした場合、それらの記号には以下のデフォルトの outside-staff-priority
値が与えられます:
レイアウト オブジェクト | 優先度 |
---|---|
| |
| |
| |
outside-staff-priority
のデフォルト値による配置があなたの望みに合わない場合、いずれかのオブジェクトの優先度をオーバライドすることになるかもしれません。上記の例で、オッターバ囲みをテキスト スパナの下に配置したいとします。すべきことは、OttavaBracket
は Staff
コンテキストの中に作成されるということを思い出し、OttavaBracket
の優先度を内部リファレンスか上記の表で調べて、それを TextSpanner
の値よりも小さくすることです:
% Set details for later Text Spanner \override TextSpanner #'(bound-details left text) = \markup { \small \bold Slower } % Place dynamics above staff \dynamicUp %Place following Ottava Bracket below Text Spanners \once \override Staff.OttavaBracket #'outside-staff-priority = #340 % Start Ottava Bracket \ottava #1 c' \startTextSpan % Add Dynamic Text c\pp % Add Dynamic Line Spanner c\< % Add Text Script c^Text c c % Add Dynamic Text c\ff c \stopTextSpan % Stop Ottava Bracket \ottava #0 c, c c c
スラーはデフォルトでは譜表内部オブジェクトに分類されています。しかしながら、譜表の上部に配置された音符に付くスラーはしばしば譜表の上に表示されます。このことは、スラーがまず最初に配置されるため、アーティキュレーションなどの譜表外部オブジェクトをあまりにも高い位置に押し上げる可能性があります。アーティキュレーションの avoid-slur
プロパティに
'inside
をセットすることでアーティキュレーションをスラーよりも内側に配置することができます。しかし、avoid-slur
プロパティはアーティキュレーションの
outside-staff-priority
が #f
にセットされている場合にのみ効果を持ちます。代替手段として、スラーの outside-staff-priority
に数値をセットすることによって、スラーを他の譜表外部オブジェクトとともに
outside-staff-priority
値に従って配置することができます。ここで、2 つの方法の効果を示す例を挙げます:
c4( c^\markup\tiny\sharp d4.) c8 c4( \once \override TextScript #'avoid-slur = #'inside \once \override TextScript #'outside-staff-priority = ##f c^\markup\tiny\sharp d4.) c8 \once \override Slur #'outside-staff-priority = #500 c4( c^\markup\tiny\sharp d4.) c8
outside-staff-priority
は、個々のオブジェクトの垂直方向の配置を制御するために使用することもできます。しかしながら、その結果は常に望み通りになるわけではありません。自動配置 にある例で “Text3” を “Text4” の上に配置したいとします。すべきことは TextScript
の優先度を内部リファレンスか上記の表で調べて、“Text3” の優先度を大きくすることです:
c2^"Text1" c^"Text2" \once \override TextScript #'outside-staff-priority = #500 c^"Text3" c^"Text4"
これはたしかに “Text3” を “Text4” の上に配置しています。しかし、“Text3”を “Text2” の上に配置して、“Text4” を押し下げてもいます。おそらく、これはそれほど望ましい結果ではないでしょう。本当に望んでいることは、すべての注釈を譜表の上に譜表から同じ距離だけ離して配置することです。そうするには明らかに、テキストのためにもっと広いスペースを確保するために、音符を水平方向に広げる必要があります。これは \textLengthOn
コマンドを用いることで達成できます。
\textLengthOn
デフォルトでは、音楽のレイアウトが考慮されている限り、マークアップによって作り出されるテキストは水平方向のスペースと関係しません。\textLengthOn
コマンドはこの動作を逆にして、テキストの配置に便宜をはかる必要がある限り、音符の間隔を広げます:
\textLengthOn % Cause notes to space out to accommodate text c2^"Text1" c^"Text2" c^"Text3" c^"Text4"
デフォルトの動作に戻すためのコマンドは \textLengthOff
です。\once
は \override
, \set
, \revert
それに \unset
だけに付けることができるということを思い出してください。そのため、\textLengthOn
で \once
を使うことはできません。
マークアップ テキストは譜表の上に突き出している音符を避けます。このことが望ましくない場合、優先度を #f
にセットすることによって上方向への自動再配置を Off にすることになるかもしれません。ここで、マークアップ テキストがそのような音符とどのように相互作用するかを示す例を挙げます。
% This markup is short enough to fit without collision c2^"Tex" c''2 R1 % This is too long to fit, so it is displaced upwards c,,2^"Text" c''2 R1 % Turn off collision avoidance \once \override TextScript #'outside-staff-priority = ##f c,,2^"Long Text " c''2 R1 % Turn off collision avoidance \once \override TextScript #'outside-staff-priority = ##f \textLengthOn % and turn on textLengthOn c,,2^"Long Text " % Spaces at end are honored c''2
強弱記号
通常、強弱記号は譜表の下に配置されます。しかしながら、dynamicUp
コマンドを使うことで上に配置されるかもしれません。強弱記号は、その記号が付いている音符と垂直方向の関係で配置され、フレージング スラーや小節番号などの譜表内部オブジェクトのすべてよりも下 (あるいは上) に配置されます。このことは、以下の例のように、到底受け入れられない結果を生み出す可能性があります:
\clef "bass" \key aes \major \time 9/8 \dynamicUp bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! | ees,2.~\)\mf ees4 r8 |
しかしながら、音符とそれに付けられた強弱記号が互いに近い場合、自動配置は後の方にある強弱記号を譜表から離すことによって衝突を避けます。しかし、以下のかなり不自然な例が示すように、それは最適な配置ではないかもしれません:
\dynamicUp a4\f b\mf c\mp b\p
‘実際’ の音楽で同じような状況があった場合、音符の間隔をもう少し広げて、すべての強弱記号が譜表から垂直方向に同じだけ離れるようにする方が望ましいかもしれません。マークアップ テキストの場合は \textLengthOn
コマンドを用いることによってそうすることができますが、強弱記号には等価のコマンドがありません。そのため、\override
コマンドを用いてそれを達成する方法を見出す必要があります。
グラフィカル オブジェクトのサイズ
まず最初に、グラフィカル オブジェクトのサイズがどのように決定されるかを学ばなくてはなりません。すべてのグラフィカル オブジェクトの内部では参照ポイントが定義され、それはそれらの親オブジェクトとの相対位置を決定するために使用されます。このポイントは親オブジェクトから垂直方向に X-offset
、垂直方向に Y-offset
離れた位置になります。オブジェクトの水平方向の広がりは数値のペア X-extent
で与えられ、そのペアはオブジェクトの左端と右端の参照ポイントとの相対関係について述べています。垂直方向の広がりも同様に数値のペア Y-extent
によって与えられます。これらは grob-interface
をサポートするすべてのグラフィカル オブジェクトが持つプロパティです。
デフォルトでは、譜表外部オブジェクトには 0 の幅が与えられているため、水平方向で重なる可能性があります。これは extra-spacing-width
に '(+inf.0 . -inf.0)
をセットすることによって、左端の広がりにプラス無限大、右端の広がりにマイナス無限大を付け加えるというトリックによって達成されています。そのため、譜表外部オブジェクトが水平方向で重ならないことを保証するには、extra-spacing-width
の値を '(0 . 0)
にオーバライドする必要があります。これにより、本当の幅が明らかになります。以下は強弱記号テキストに対してこれを行うコマンドです:
\override DynamicText #'extra-spacing-width = #'(0 . 0)
これが前の例で機能するかどうかを見てみましょう:
\dynamicUp \override DynamicText #'extra-spacing-width = #'(0 . 0) a4\f b\mf c\mp b\p
確かに強弱記号の再配置をストップさせています。しかし、2 つの問題が残っています。強弱記号を互いにもう少し離すべきであり、それらは譜表から同じ距離にあるほうが望ましいです。最初の問題は簡単に解決できます。extra-spacing-width
を 0 にする代わりに、もう少し大きな値を与えるのです。単位は 2 本の譜表線の間隔なので、左端を 1 単位の半分だけ左に移動させ、右端を 1 単位の半分だけ右に移動させると解決になります:
\dynamicUp % Extend width by 1 staff space \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5) a4\f b\mf c\mp b\p
これで前よりも良くなりました。しかし、強弱記号が音符に合わせて上下するよりも、同じベースラインで揃っている方が望ましいでしょう。それを行うためのプロパティは staff-padding
であり、後に続くセクションでカバーされています。
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 譜表外部オブジェクト ] | [ 上へ : 出力を調整する ] | [ オブジェクトを移動させる > ] |
4.5 オブジェクトの衝突
4.5.1 オブジェクトを移動させる | ||
4.5.2 表記の重なりを修正する | ||
4.5.3 実際の音楽からの例 |
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < オブジェクトの衝突 ] | [ 上へ : オブジェクトの衝突 ] | [ 表記の重なりを修正する > ] |
4.5.1 オブジェクトを移動させる
これを聞いて驚くかもしれませんが、LilyPond は完璧ではありません。いくつかの記譜要素が重なりある可能性があります。これは遺憾なことですが、実際にはごく稀です。通常、オブジェクトを移動させる必要性は読みやすさや美しさのためです – オブジェクトの周りにもう少しスペースを多く/少なくとった方がより良くなるといった場合です。
記譜要素の重なりを解決する主要なアプローチが 3 つあります。それらは以下の順番で考慮されるべきです:
- 重なり合っているオブジェクトの 1 つの direction を 譜表内部オブジェクト でリストアップした内部オブジェクトのための定義済みコマンドを用いて変更することになるかもしれません。符幹、スラー、連桁、タイ、強弱記号、テキスト、連符はこの方法で容易に再配置できるかもしれません。この方法の限界は配置の仕方の選択肢が 2 つしかないことであり、どちらも適当でないかもしれません。
-
LilyPond がレイアウト オブジェクトを配置するときに使用するオブジェクト プロパティを
\override
を用いて変更することになるかもしれません。オブジェクト プロパティに変更を加えることの利点は、(a) スペースをとる必要がある場合に他のいくつかのオブジェクトは自動的に移動させられます、(b) 1 回のオーバライドを同じオブジェクト タイプのインスタンスすべてに適用することができます。変更するプロパティには以下のものが含まれます:-
direction
これはすでに詳しくカバーされています – 譜表内部オブジェクト を参照してください。
-
padding
,left-padding
,right-padding
,staff-padding
あるオブジェクトが配置されるとき、そのオブジェクトの
padding
プロパティが、そのオブジェクトとそのオブジェクトに最も隣接するオブジェクトの端との間に置かれる間隔を指定します。配置される最中のオブジェクトのpadding
値が使用されるということに注意してください。すでに配置されたオブジェクトのpadding
値は無視されます。padding
によって指定された間隔はside-position-interface
をサポートするオブジェクトすべてに適用することができます。臨時記号のグループの配置は、
padding
の代わりに、left-padding
とright-padding
によって制御されます。これらのプロパティはAccidentalPlacement
オブジェクトの中にあり、注意すべきことに、そのオブジェクトは Staff コンテキストの中にあります。譜刻プロセスでは、符頭が最初に譜刻され、臨時記号 (がある場合は) が次に符頭の左側に付け加えられます。このとき、臨時記号と符頭の間隔はright-padding
プロパティによって指定されます。そのため、AccidentalPlacement
オブジェクトのright-padding
プロパティだけが臨時記号の配置に影響を与えます。staff-padding
プロパティはpadding
プロパティと深い関わりがあります:padding
プロパティは、side-position-interface
をサポートするオブジェクトとそれに最隣接する他のオブジェクト (一般には音符や譜表線) との間のスペースの最小量を制御します。一方、staff-padding
は常に譜表の外側に配置されるレイアウト オブジェクトにのみ適用されます – これは譜表の外側に配置されるオブジェクトと譜表の間に挿入されるべきスペースの最小量を制御します。staff-paddin
は譜表ではなく音符との相対関係で配置されるオブジェクトには影響を与えないということに注意してください。そのようなオブジェクトに対してstaff-padding
のオーバライドを行ったとしてもエラーは起きないかもしれませんが、無視されます。あなたが再配置しようとしているオブジェクトに対して求められる
padding
プロパティはどれなのかを見つけるには、内部リファレンスに戻ってそのオブジェクトのプロパティを調べる必要があります。padding
プロパティはあなたが再配置しようとしているオブジェクトの中には無いかもしれないということに注意してください。その場合は、そのオブジェクトに関係があるオブジェクトを調べてください。すべての
padding
値は譜表スペースで測られます。たいていのオブジェクトでは、この値はデフォルトで約 1.0 かそれ以下にセットされています (それぞれのオブジェクトで値はさまざまです)。間隔を大きく (あるいは小さく) する必要がある場合、その値はオーバライドされるかもしれません。 -
self-alignment-X
このプロパティを使うことで、親オブジェクトの参照ポイントに従って、オブジェクトを左、右、中央に揃えることができます。このプロパティは
self-alignment-interface
をサポートするオブジェクトすべてに対して使用することができます。一般に、テキストを保持するオブジェクトです。値はLeft
,RIGHT
,CENTER
です。代替手段として、-1
から+1
までの数値を指定することもできます。-1
は左揃えであり、+1
は右揃え、その間の数値は左揃えから右揃えへのテキストを移動させます (訳者:-0.5
であれば、左揃えと中央揃えの中間ということ)。1
よりも大きな数値を指定することでテキストをさらに左へ、-1
よりも小さな数値を指定することでテキストをさらに右へ移動させることができます。この値を1
増減することによる移動量はそのテキストの長さの半分です。 -
extra-spacing-width
このプロパティは
item-interface
をサポートするオブジェクトすべてで利用可能です。このプロパティは 2 つの数値をとり、最初の数値はオブジェクトの左側に余白を追加し、2 番目の数値はオブジェクトの右側に余白を追加します。負値はオブジェクトの端を左に移動させ、正値は右に移動させます。そのため、オブジェクトを広くするには、最初の数値を負値にして、2 番目の数値を正値にする必要があります。すべてのオブジェクトが両方の数値を遵守するわけではないということに注意してください。例えば、Accidental
オブジェクトは最初の数値 (左端) にしか注意を払いません。 -
staff-position
staff-position
はstaff-symbol-referencer-interface
のプロパティです。これは、譜表との相対関係で配置されるオブジェクトによってサポートされます。このプロパティはオブジェクトの垂直方向の位置を、譜表の中央にある譜表線から譜表スペースの半分を単位として、指定します。このプロパティは複数小節に亘る休符、タイ、異なるボイスの中にある音符といったレイアウト オブジェクトの衝突を解決する場合に有用です。 -
force-hshift
和音の中で近接して配置された音符や異なるボイスの中にあって同時に起こる音符は、符頭の衝突を避けるために、2 つ (場合によってはそれ以上) の列に配置されます。この列は音符列と呼ばれ、その列に音符をレイアウトするために
NoteColumn
と呼ばれるオブジェクトが作成されます。force-hshift
プロパティはNoteColumn
のプロパティです (実際にはnote-column-interface
のプロパティです)。このプロパティを変更することで音符列を、音符列特有の単位 – すなわち、最初のボイスの中にある音符の符頭の幅 – に従って、移動させることができます。このプロパティは、通常の\shiftOn
コマンド (ボイスの明示的なインスタンス化 を参照してください) が音符の衝突を解決できないような複雑な状況で使用されるべきです。この目的のためには、extra-offset
プロパティを用いるよりもforce-hshift
プロパティを用いる方が好ましいです。なぜなら、譜表スペースを単位とした距離を算出する必要が無く、NoteColumn
の内外に音符を移動させることは符頭のマージといった他のアクションに影響を与えるからです。
-
-
最後に、他の方法がすべて失敗した場合、オブジェクトを手動で譜表の中央線からの垂直方向の相対位置に従って、あるいは新たに設定した位置との距離に従って、再配置することになるかもしれません。この方法の欠点は、再配置のための正確な値を算出する必要がある –
しばしば、その算出はそれぞれのオブジェクトに対して個々に、トライ&エラーで行われます – 必要があるということ、さらに、この方法による移動は
LilyPond が他のオブジェクトをすべて配置した後に行われるため、ユーザはその結果として起こるかもしれない衝突をすべて回避する責任があるということです。しかし、この方法の最大の問題点は、音楽が後で変更された場合に、再配置用の値を再び算出する必要があるということです。このタイプの手動再配置のために使用されるプロパティは以下のようなものです:
-
extra-offset
-
このプロパティは
grob-interface
をサポートするレイアウト オブジェクトのいずれかに適用されます。このプロパティはペアになった数値をとり、それぞれの数値は水平方向と垂直方向の移動を指定します。負値はオブジェクトを左または下へ移動させます。単位は譜表スペースです。この移動はオブジェクトの譜刻が完了した後に行われるため、あるオブジェクトを任意の位置へ、他のオブジェクトに影響を与えることなく、再配置することができます。 -
positions
-
このプロパティは、連桁、スラー、連符の傾きと高さを手動で調節するために最も有用なプロパティです。このプロパティはペアになった数値をとり、それぞれの数値は連桁、スラーなどの左端と右端の位置を譜表の中央線との距離で指定します。単位は譜表スペースです。けれども、スラーとフレージング スラーを任意の値で再配置することはできないということに注意してください。LilyPond はまずスラーが取り得る位置のリストを生成し、それからデフォルトでは “最良に見える” スラーを探します。
positions
がオーバライドされていた場合、そのリストの中からリクエストされた位置に最も近いスラーが選択されます。
-
あるオブジェクトがこれらのプロパティすべてを持っているわけではありません。内部リファレンスに行き、そのオブジェクトではどのプロパティが利用可能なのかを調べる必要があります。
オブジェクト タイプ | オブジェクト名 |
---|---|
アーティキュレーション (Articulation) | |
連桁 (Beam) | |
強弱記号 (Dynamic) (垂直方向) | |
強弱記号 (Dynamic) (水平方向) | |
運指法記号 (Fingering) | |
リハーサル / テキスト記号 (Rehearsal / Text mark) | |
スラー (Slur) | |
テキスト – つまり、 | |
タイ (Tie) | |
連符 (Tuplet) | |
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < オブジェクトを移動させる ] | [ 上へ : オブジェクトの衝突 ] | [ 実際の音楽からの例 > ] |
4.5.2 表記の重なりを修正する
今度は、前のセクションで扱ったプロパティが記譜の重なりを解決する手助けをどのようにできるかを見ていきましょう。
padding プロパティ
padding
プロパティに値をセットすることによって、音符とその上または下に譜刻される記号との間の距離を増減することができます。
c2\fermata \override Script #'padding = #3 b2\fermata
% This will not work, see below: \override MetronomeMark #'padding = #3 \tempo 4=120 c1 % This works: \override Score.MetronomeMark #'padding = #3 \tempo 4=80 d1
2 番目の例では、ある特定のオブジェクトを扱うのはどのコンテキストなのかを突き止めることが重要であるということに注意してください。MetronomeMark
オブジェクトは Score
コンテキストの中で処理されるため、Voice
コンテキストの中でのプロパティの変更は無視されます。更に詳細を知りたければ、
Modifying properties を参照してください。
outside-staff-priority
に従って配置されているオブジェクトの並びの中のあるオブジェクトの padding
プロパティが増やされた場合、そのオブジェクトとそれよりも外側にあるすべてオブジェクトが移動させられます。
left-padding と right-padding
right-padding
プロパティは臨時記号とそれが適用される音符との間のスペースに影響を与えます。このプロパティを変更することは必ずしも必要ではありませんが、以下の例は変更を必要とする状況の 1 つを示しています。B ナチュラルと B フラットの両方を保持する和音を譜刻したいとします。あいまいさ (あるいは多義: ここでは B が B ナチュラルと B フラットの両方に解釈できるということ) を避けるために、音符の前にナチュラル記号とフラット記号の両方を置くことにします。以下に、それを達成するための試みをいくつか挙げます:
<b bes> <b! bes> <b? bes>
どれもうまくいっていません。2 番目と 3 番目の (和) 音符では 2 つの記号が衝突しています。
これを達成するための方法の 1 つは、臨時記号のステンシルを、ナチュラル記号とフラット記号を望んでいる並びで保持しているマークアップでオーバライドすることです。以下のように:
naturalplusflat = \markup { \natural \flat } \relative c'' { \once \override Accidental #'stencil = #ly:text-interface::print \once \override Accidental #'text = #naturalplusflat \once \override Score.AccidentalPlacement #'right-padding = #1.5 <b bes> }
これは必然的に臨時記号のステンシルをオーバライドすることになります。このオーバライドについては後々までカバーされません。ステンシル タイプは手続きでなければならず、ここでは Accidental
の
text
プロパティの内容 – フラット記号が後に続くナチュラル記号 –
を譜刻するように変更されています。それらの記号は right-padding
のオーバライドによって符頭からさらに遠くへ移動させられています。
staff-padding プロパティ
staff-padding
を使うことで、強弱記号などのオブジェクトを、それらが取り付けられる音符の位置に依存した高さではなく、譜表上のある固定した高さのベースラインに揃えることができます。このプロパティは DynamicText
のプロパティではなく、DynamicSpanner
のプロパティです。この理由は、このベースラインは延長スパナを含むすべての強弱起動に等しく適用されるべきだからです。そのため、これは以前のセクションでの例の中にある強弱記号を揃えるための方法になります:
\dynamicUp % Extend width by 1 unit \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5) % Align dynamics to a base line 2 units above staff \override DynamicLineSpanner #'staff-padding = #2 a4\f b\mf c\mp b\p
self-alignment-X プロパティ
以下の例はこのプロパティが、運指法記号オブジェクトの右端を親の音符の参照ポイントに揃えることによって、弦楽器の運指法記号オブジェクトと音符の符幹とのこのプロパティが衝突を解決している様子を示しています:
\voiceOne < a \2 > \once \override StringNumber #'self-alignment-X = #RIGHT < a \2 >
staff-position プロパティ
あるボイスの中にある複数小節に亘る休符は他のボイスの中にある音符と衝突する可能性があります。このような休符は小節線と小節線の間の中央に譜刻されるため、LilyPond がそれと衝突するかもしれない音符を突き止めるのは非常に困難です。なぜなら、現在の音符間それに音符-休符間の衝突対応は、同時に起こる音符と休符に対してのみ行われるからです。以下に、このタイプの衝突の例を挙げます:
<< {c c c c} \\ {R1} >>
ここでの最良の解決策は、複数小節に亘る休符を下へ移動させることです。なぜなら、その休符はボイス 2 の中にあるからです。\voiceTwo
(すなわち、<<{...} \\ {...}>>
構造の
2 番目のボイス) のデフォルト状態では、MultiMeasureRest
の staff-position
は -4
にセットされています。そのため、そのプロパティを、例えば半譜表スペース 4 つ分押し下げるには、-8
に変更する必要があります。
<< {c c c c} \\ \override MultiMeasureRest #'staff-position = #-8 {R1} >>
これは、例えば extra-offset
を使うよりも良い解決方法です。なぜなら、その休符の上に加線が自動的に挿入されるからです。
extra-offset プロパティ
extra-offset
プロパティは、あるオブジェクトの水平方向と垂直方向の配置を完全に制御します。
以下の例では、2 番目の運指法記号が少し左に、そして 1.8 譜表スペース下に移動させられています:
\stemUp f-5 \once \override Fingering #'extra-offset = #'(-0.3 . -1.8) f-5
positions プロパティ
positions
プロパティは連符、スラー、フレージング スラー、連桁の位置と傾きを手動で制御することを可能にします。ここで、装飾音符に付いたスラーを避けようとしているために醜いフレージング スラーを持つ例を挙げます。
r4 \acciaccatura e8\( d8 c ~c d c d\)
フレージング スラーを音符の上へ移動させることで、より良い結果が得られます:
r4 \phrasingSlurUp \acciaccatura e8\( d8 c ~c d c d\)
しかし、何らかの理由でそうすることができない場合、それに代わる解決策は、positions
プロパティを使ってフレージング スラーの左端を少し下げることです。この方法でも見栄えの悪さを解決できます。
r4 \once \override PhrasingSlur #'positions = #'(-4 . -3) \acciaccatura e8\( d8 c ~c d c d\)
さらに、Chopin の 前奏曲 Op 28 No. 2 の左手の譜の開始部分から取った例を挙げます。連桁が上部にある音符と衝突しています:
{ \clef "bass" << {b,8 ais, b, g,} \\ {e, g e, g} >> << {b,8 ais, b, g,} \\ {e, g e, g} >> }
これは、譜表の中央線から 2 譜表スペース上の位置にある連桁の両端を、例えば、3 に手動で上げることによって解決することができます:
{ \clef "bass" << \override Beam #'positions = #'(3 . 3) {b,8 ais, b, g,} \\ {e, g e, g} >> << {b,8 ais, b, g,} \\ {e, g e, g} >> }
オーバライドの効果は継続して 2 番目のブロックのボイス 1 にも適用されていますが、ボイス 2 の連桁にはまったく適用されていないということに注意してください。
force-hshift プロパティ
今や、私はボイスを聴いている の最後で挙げた Chopin の例にどのように修正を加えるべきかを知っています。この例は以下のような状態でした:
\new Staff \relative c'' { \key aes \major << { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { \voiceFour <ees c>2 des2 } >> | <c ees aes c>1 | }
最初の和音の下の方にある 2 つの音符 (つまり、3 番目のボイス (ボイス 4) の音符)
を上の方にある 2 つの音符の音符列からずらすべきではありません。これを修正するには、下の音符の force-hshift
–
これは NoteColumn
のプロパティです – を 0 にセットします。2 番目の和音の下の方の音符は、上の方の音符のすぐ右に置くのが最良です。そうするには、この音符の force-hshift
を 0.5 にセットします –
つまり、上の方の音符の音符列から符頭の幅の半分だけ右にずらします。
ここで、最終結果を挙げます:
\new Staff \relative c'' { \key aes \major << { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { \voiceFour \once \override NoteColumn #'force-hshift = #0 <ees c>2 \once \override NoteColumn #'force-hshift = #0.5 des2 } >> | <c ees aes c>1 | }
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 表記の重なりを修正する ] | [ 上へ : オブジェクトの衝突 ] | [ 更なる調整 > ] |
4.5.3 実際の音楽からの例
調整についてのセクションを、望みの出力を作り出すためにいくつかの調整を必要とするトリッキーな例を処理するときにとられるステップを示すことで締めくくります。この例は、記譜法についての普通ではない問題を解決するための記譜法リファレンスの使い方を示すために慎重に選ばれたものです。この例は一般的な譜刻プロセスを代表するものではありません。ですから、この例の複雑さでやる気を失わないでください!幸いなことに、このように複雑な問題は非常に稀です!
この例は Chopin の Première Ballade, Op. 23 の第 6 - 9 小節からとりました。序盤の Lento から Moderato へと移調する部分です。まず最初に望んでいる出力挙げますが、例があまりにも複雑になり過ぎないように強弱記号、運指法記号、ペダル記号は省きました。
まず、第 3 小節の右手パートには 4 つのボイスが必要であることに注目します。それぞれのボイスは、連桁でつながれた 5 つの 8 分音符、タイで結ばれた C、半音符の D – これは 8 分音符の D とマージされています、付点 4 分音符の F シャープ – これも同じピッチの 8 分音符とマージされています
– です。他の部分はすべて単一のボイスなので、最も容易な方法は 4 つのボイスを必要になったときに一時的に導入する方法です。一時的に多声にする方法を忘れてしまったのならば、私はボイスを聴いている を見てください。音符を 2 つの変数として入力し、譜表構造を Score
ブロックの中でセットアップすることから始めて、それで LilyPond がデフォルトでどのような出力を作り出すのか見てみましょう:
rhMusic = \relative c'' { r2 c4. g8 | bes1~ | \time 6/4 bes2. r8 % Start polyphonic section of four voices << {c,8 d fis bes a | } \\ {c,8~ c2 | } \\ {s8 d2 | } \\ {s4 fis4. | } >> g2. } lhMusic = \relative c' { r2 <c g ees>2 | <d g, d>1 | r2. d,,4 r4 r | r4 } \score { \new PianoStaff << \new Staff = "RH" << \key g \minor \rhMusic >> \new Staff = "LH" << \key g \minor \clef "bass" \lhMusic >> >> }
すべての音符は間違っていません。しかしながら、見た目は満足とは程遠いものです。タイは移調する拍子記号と衝突していて、第 3 小節の連桁の付け方は間違っていて、音符はマージされておらず、いくつかの記譜要素は欠けています。簡単なものから片付けていきましょう。連桁の付け方は手動で連桁を挿入することで修正でき、左手パートのスラーと右手パートのフレージング スラーは簡単に追加できます – なぜなら、これらはすべてチュートリアルでカバーされているからです。これらの修正を加えると、以下のようになります:
rhMusic = \relative c'' { r2 c4.\( g8 | bes1~ | \time 6/4 bes2. r8 % Start polyphonic section of four voices << {c,8[ d fis bes a] | } \\ {c,8~ c2 | } \\ {s8 d2 | } \\ {s4 fis4. | } >> g2.\) } lhMusic = \relative c' { r2 <c g ees>2( | <d g, d>1) | r2. d,,4 r4 r | r4 } \score { \new PianoStaff << \new Staff = "RH" << \key g \minor \rhMusic >> \new Staff = "LH" << \key g \minor \clef "bass" \lhMusic >> >> }
第 1 小節は正しくなりました。第 2 小節にはアルペジオが含まれていて、2 重の小節線で終わります。この学習マニュアルではこれらのことは言及されてこなかったのに、どうやってやればいいのでしょうか?ここで、記譜法リファレンスに移行する必要があります。索引で ‘arpeggio’ と ‘bar line’ を探せばすぐに、アルペジオは
\arpeggio
を和音の後に付け加えることによって作り出され、2 重小節線は \bar "||"
コマンドによって作り出されることがわかります。それは簡単にできます。次に、タイと拍子記号の衝突を修正する必要があります。これはタイを上に移動させる方法が最善です。オブジェクトの移動については以前に オブジェクトを移動させる でカバーしました。そこでは、譜表との相対位置で配置されるオブジェクトは、そのオブジェクトの staff-position
プロパティをオーバライドすることによって、移動させることができると述べられています。このプロパティは譜表スペースの半分を単位として、譜表の中央線からの距離で指定されます。ですから、以下の以下のオーバライドをタイで結ばれる最初の音符の前に置けば、タイは中央線から 3.5 半譜表スペースだけ上の位置に移動させられます:
\once \override Tie #'staff-position = #3.5
これで第 2 小節の修正も完了で、以下のようになります:
rhMusic = \relative c'' { r2 c4.\( g8 | \once \override Tie #'staff-position = #3.5 bes1~ | \bar "||" \time 6/4 bes2. r8 % Start polyphonic section of four voices << {c,8[ d fis bes a] | } \\ {c,8~ c2 | } \\ {s8 d2 | } \\ {s4 fis4. | } >> g2.\) } lhMusic = \relative c' { r2 <c g ees>2( | <d g, d>1)\arpeggio | r2. d,,4 r4 r | r4 } \score { \new PianoStaff << \new Staff = "RH" << \key g \minor \rhMusic >> \new Staff = "LH" << \key g \minor \clef "bass" \lhMusic >> >> }
第 3 小節 – Moderato セクションの開始部分 – に取り掛かります。チュートリアルで \markup
コマンドを使ってボールド体のテキストを付け加える方法を示しましたので、‘Moderato’ をボールド体で付け加えることは容易です。しかし、異なるボイスの中にある音符をマージするにはどうするのでしょうか?ここで、助けを求めて記譜法リファレンスに移行する必要があります。記譜法リファレンスで “merge” を探せばすぐに、
Collision resolution で符頭や付点の付き方が異なる音符をマージするためのコマンドにたどり着きます。今回の例では、多声部セクションで両方のタイプの音符をマージする
(異なる符頭を持つ音符のマージと、付点の付き方が異なる音符のマージ)
必要があるので、記譜法リファレンスで見つけた情報を使って、以下のコマンド:
\mergeDifferentlyHeadedOn \mergeDifferentlyDottedOn
を多声部セクションの開始点に置き、以下のコマンド:
\mergeDifferentlyHeadedOff \mergeDifferentlyDottedOff
をセクションの終了点に置きます。これで、例は以下のようになります:
rhMusic = \relative c'' { r2 c4.\( g8 | \once \override Tie #'staff-position = #3.5 bes1~ | \bar "||" \time 6/4 bes2.^\markup {\bold "Moderato"} r8 \mergeDifferentlyHeadedOn \mergeDifferentlyDottedOn % Start polyphonic section of four voices << {c,8[ d fis bes a] | } \\ {c,8~ c2 | } \\ {s8 d2 | } \\ {s4 fis4. | } >> \mergeDifferentlyHeadedOff \mergeDifferentlyDottedOff g2.\) } lhMusic = \relative c' { r2 <c g ees>2( | <d g, d>1)\arpeggio | r2. d,,4 r4 r | r4 } \score { \new PianoStaff << \new Staff = "RH" << \key g \minor \rhMusic >> \new Staff = "LH" << \key g \minor \clef "bass" \lhMusic >> >> }
オーバライドは 2 つの F シャープの音符をマージしましたが、2 つの D をマージしませんでした。なぜマージしなかったのでしょうか?その答えは記譜法リファレンスの同じセクションにあります –
マージされる音符は反対向きの符幹を持っていなくてはならず、同じ音符列に 3 つ目の音符がある場合は 2 つの音符をマージさせることはできません。今回の例では、2 つの D は両方とも上向きの符幹を持っていて、3 つ目の音符 – C – が存在します。我々は \stemDown
を用いて符幹の向きを変更する方法を知っていて、記譜法リファレンスも C を移動させる方法について述べています –
\shift
コマンドの 1 つを用いてシフトを行います。しかし、どのシフトを行えばよいのでしょうか?C はシフト off のボイス 2 の中にあり、2 つの D はボイス 1 とボイス 3 –
それぞれ、シフト off とシフト on – の中にあります。ですから、C が 2 つの D と衝突するのを避けるために、\shiftOnn
を用いて C を更にシフトさせる必要があります。これらの変更を加えると、以下のようになります:
rhMusic = \relative c'' { r2 c4.\( g8 | \once \override Tie #'staff-position = #3.5 bes1~ | \bar "||" \time 6/4 bes2.^\markup {\bold "Moderato"} r8 \mergeDifferentlyHeadedOn \mergeDifferentlyDottedOn % Start polyphonic section of four voices << {c,8[ d fis bes a] | } \\ % Move the c2 out of the main note column so the merge will work {c,8~ \shiftOnn c2 | } \\ % Stem on the d2 must be down to permit merging {s8 \stemDown d2 | } \\ {s4 fis4. | } >> \mergeDifferentlyHeadedOff \mergeDifferentlyDottedOff g2.\) } lhMusic = \relative c' { r2 <c g ees>2( | <d g, d>1)\arpeggio | r2. d,,4 r4 r | r4 } \score { \new PianoStaff << \new Staff = "RH" << \key g \minor \rhMusic >> \new Staff = "LH" << \key g \minor \clef "bass" \lhMusic >> >> }
もうちょっとです。残っている問題は 2 つだけです:
マージされた D の下向きの符幹はあるべきではなく、C は D の右側に配置した方が良いということです。以前に行った調整からこれらを行う方法を両方とも知っています:
符幹を透明にして、force-hshift
プロパティを用いて C を移動させます。ここで、最終結果を示します:
rhMusic = \relative c'' { r2 c4.\( g8 | \once \override Tie #'staff-position = #3.5 bes1~ | \bar "||" \time 6/4 bes2.^\markup {\bold "Moderato"} r8 \mergeDifferentlyHeadedOn \mergeDifferentlyDottedOn << {c,8[ d fis bes a] | } \\ % Reposition the c2 to the right of the merged note {c,8~ \once \override NoteColumn #'force-hshift = #1.0 % Move the c2 out of the main note column so the merge will work \shiftOnn c2} \\ % Stem on the d2 must be down to permit merging {s8 \stemDown \once \override Stem #'transparent = ##t d2} \\ {s4 fis4.} >> \mergeDifferentlyHeadedOff \mergeDifferentlyDottedOff g2.\) } lhMusic = \relative c' { r2 <c g ees>2( | <d g, d>1)\arpeggio | r2. d,,4 r4 r | r4 } \score { \new PianoStaff << \new Staff = "RH" << \key g \minor \rhMusic >> \new Staff = "LH" << \key g \minor \clef "bass" \lhMusic >> >> }
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 実際の音楽からの例 ] | [ 上へ : 出力を調整する ] | [ 調整のその他の使用方法 > ] |
4.6 更なる調整
4.6.1 調整のその他の使用方法 | ||
4.6.2 調整のために変数を使用する | ||
4.6.3 スタイル シート | ||
4.6.4 その他の情報源 | ||
4.6.5 処理に時間のかかる調整を避ける | ||
4.6.6 Scheme を用いた高度な調整 |
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 更なる調整 ] | [ 上へ : 更なる調整 ] | [ 調整のために変数を使用する > ] |
4.6.1 調整のその他の使用方法
異なるボイスの中にある音符をタイで結ぶ
以下の例は異なるボイスの中にある音符をタイで結ぶ方法を示しています。通常、タイで結べるのは同じボイスの中にある 2 つ音符だけです。2 つのボイスを使い、そのうちの 1 つにタイで結んだ音符を置きます:
そして、そのボイスの最初の上向き符幹を消します。これで、タイはボイスをまたがっているように見えます:
<< { \once \override Stem #'transparent = ##t b8~ b8\noBeam } \\ { b[ g8] } >>
符幹は表示されなくなっただけなので、タイの長さが十分ではありません。符幹の length
を 8
にセットすることで符幹を伸ばすことができます:
<< { \once \override Stem #'transparent = ##t \once \override Stem #'length = #8 b8~ b8\noBeam } \\ { b[ g8] } >>
MIDI でフェルマータをシミュレートする
譜表外部オブジェクトを出力から削除しようとする場合、そのオブジェクトの
transparent
プロパティではなく stencil
プロパティをオーバライドする方が通常は望ましいです。あるオブジェクトの stencil
プロパティを
#f
にセットすると、そのオブジェクトは出力から完全に削除されます。このことは、削除されたオブジェクトがそのオブジェクトとの相対位置で配置される他のオブジェクトの配置にまったく影響を及ぼさないということを意味します。
例えば、MIDI 出力でフェルマータをシミュレートするためにメトロノーム設定を変更したいとします。その場合、メトロノーム記号を出力に表示させたくありません。そして、それが 2 つのシステム (小節とその中にある表記) 間のスペースと、譜表上にある隣接する注釈の位置に影響を与えることを望みません。そのため、そのメトロノーム記号の stencil
プロパティを
#f
にセットする方法が最良です。ここで、2 つの手法の結果を示します:
\score { \relative c'' { % Visible tempo marking \tempo 4=120 a4 a a \once \override Score.MetronomeMark #'transparent = ##t % Invisible tempo marking to lengthen fermata in MIDI \tempo 4=80 a\fermata % New tempo for next section \tempo 4=100 a a a a } \layout { } \midi { } }
\score { \relative c'' { % Visible tempo marking \tempo 4=120 a4 a a \once \override Score.MetronomeMark #'stencil = ##f % Invisible tempo marking to lengthen fermata in MIDI \tempo 4=80 a\fermata % New tempo for next section \tempo 4=100 a a a a } \layout { } \midi { } }
両方の手段とも、フェルマータ部分の演奏時間を伸ばすメトロノーム記号を出力から削除していて、両方とも MIDI の演奏に必要な効果を与えています。しかし、1 番目の例の透明なメトロノーム記号がそれに続く拍子指示を上に押し上げているのに対して、2 番目のメトロノーム記号 (ステンシルが削除されたもの) は押し上げていません。
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 調整のその他の使用方法 ] | [ 上へ : 更なる調整 ] | [ スタイル シート > ] |
4.6.2 調整のために変数を使用する
オーバライド コマンドはしばしば長く、入力するのが大変なものになります。そして、それらは完全に正しく記述されなければなりません。同じオーバライドが何度も使用される場合、それらを保持する変数を定義すると非常に役に立ちます。
歌詞の中のある特定の単語をボールド イタリック体で譜刻することによって、それらを強調したいと仮定します。歌詞の中では、\italic
と \bold
は (書式を) 変更したい単語や文と一緒に \markup
ブロックの中に入れた場合にのみ機能しますが、それを毎回入力するのは大変です。埋め込む必要のある単語自体が、2 つのコマンドを簡単な変数を用いて使うことを妨げます。代替手段として、\override
コマンドと \revert
コマンドを使うことはできないでしょうか?
\override Lyrics . LyricText #'font-shape = #'italic
\override Lyrics . LyricText #'font-series = #'bold
\revert Lyrics . LyricText #'font-shape
\revert Lyrics . LyricText #'font-series
これらも、強調する必要のある単語がたくさんある場合、入力するのが非常に大変です。しかしながら、これらは 2 つの変数として定義することができ、それらの変数で単語を囲むことによって使ってその単語を強調することができます。これらのオーバライドに変数を用いることのもう 1 つの利点は、ドットの両側にスペースを置く必要が無いことです。なぜなら、これらのオーバライドは \lyricmode
の中で直接解釈されるわけではないからです。ここで変数を用いる例を挙げますが、実際には早く打ち込めるようにもっと短い変数名を使用します:
emphasize = { \override Lyrics.LyricText #'font-shape = #'italic \override Lyrics.LyricText #'font-series = #'bold } normal = { \revert Lyrics.LyricText #'font-shape \revert Lyrics.LyricText #'font-series } global = { \time 4/4 \partial 4 \key c \major} SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a a g } AltoMusic = \relative c' { c4 | c4. c8 e4 e | f f e } TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 } BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 } VerseOne = \lyrics { E -- | ter -- nal \emphasize Fa -- ther, \normal | strong to save, } VerseTwo = \lyricmode { O | \emphasize Christ, \normal whose voice the | wa -- ters heard, } VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, \normal | who didst brood } VerseFour = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r } \score { \new ChoirStaff << \new Staff << \clef "treble" \new Voice = "Soprano" { \voiceOne \global \SopranoMusic } \new Voice = "Alto" { \voiceTwo \AltoMusic } \new Lyrics \lyricsto "Soprano" { \VerseOne } \new Lyrics \lyricsto "Soprano" { \VerseTwo } \new Lyrics \lyricsto "Soprano" { \VerseThree } \new Lyrics \lyricsto "Soprano" { \VerseFour } >> \new Staff << \clef "bass" \new Voice = "Tenor" { \voiceOne \TenorMusic } \new Voice = "Bass" { \voiceTwo \BassMusic } >> >> }
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 調整のために変数を使用する ] | [ 上へ : 更なる調整 ] | [ その他の情報源 > ] |
4.6.3 スタイル シート
LilyPond が作り出す出力にはさまざまな変更を加えることができます (詳細は 出力を調整する を参照してください)。しかしながら、調整を加えたい入力ファイルがたくさんあるとしたらどうでしょう?また、単に調整を実際の音楽表記から分離したいとしたらどうでしょう?これはとても簡単なことです。
以下の例を見てみましょう。#()
を持つ部分を理解できなくても心配しないでください。Scheme を用いた高度な調整 で説明されています。
mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0) #:line(#:dynamic "mp" #:text #:italic "dolce" ))) tempoMark = #(define-music-function (parser location markp) (string?) #{ \once \override Score . RehearsalMark #'self-alignment-X = #left \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0) \mark \markup { \bold $markp } #}) \relative c'' { \tempo 4=50 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2 \tempoMark "Poco piu mosso" cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2 }
この例には出力が重なり合うという問題がいくつかあり、オブジェクトを移動させる のテクニックを使ってそれらを修正しています。そこで、さらに mpdolce
定義と tempoMark
定義に関して何かしてみましょう。それらは望みの出力を作り出していますが、それらを別の楽曲で使いたいとします。単純にそれらを各ファイルの先頭部分にカット&ペーストすることもできますが、わずらわしいです。その方法では定義は依然として入力ファイルの中にあり、私は個人的にすべての #()
は何か醜いと感じます。それらを他のファイルの中に隠すことにしましょう:
%%% save this to a file called "definitions.ly" %%% これを "definitions.ly" というファイル名で保存してください mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0) #:line(#:dynamic "mp" #:text #:italic "dolce" ))) tempoMark = #(define-music-function (parser location markp) (string?) #{ \once \override Score . RehearsalMark #'self-alignment-X = #left \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0) \mark \markup { \bold $markp } #})
今度は音楽ファイルを変更しましょう (このファイルを ‘"music.ly"’ として保存してください)。
\include "definitions.ly" \relative c'' { \tempo 4=50 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2 \once \override Score.RehearsalMark #'padding = #2.0 \tempoMark "Poco piu mosso" cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2 }
これで前よりも良くなりましたが、いくつか変更を加えることにします。グリッサンド (訳者: 第 1 小節の C シャープと A の間) は見え難いので、もっと太く、符頭に近づけます。メトロノーム記号を、最初の音符の上ではなく、音部記号の上に持ってきます。最後に、私の作曲の先生は ‘C’ 拍子記号を嫌っているので、‘4/4’ に変更した方が良さそうです。
‘music.ly’ には変更を加えないでください。‘definitions.ly’ を以下のように書き換えます:
%%% definitions.ly mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0) #:line( #:dynamic "mp" #:text #:italic "dolce" ))) tempoMark = #(define-music-function (parser location markp) (string?) #{ \once \override Score . RehearsalMark #'self-alignment-X = #left \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0) \mark \markup { \bold $markp } #}) \layout{ \context { \Score \override MetronomeMark #'extra-offset = #'(-9 . 0) \override MetronomeMark #'padding = #'3 } \context { \Staff \override TimeSignature #'style = #'numbered } \context { \Voice \override Glissando #'thickness = #3 \override Glissando #'gap = #0.1 } }
もっと良くなりました!今度はこれを公表したいとします。私の作曲の先生は ‘C’ 拍子記号を嫌っていますが、私は幾分好きです。現在の definitions.ly
を web-publish.ly
にコピーして、それにを変更を加えてみましょう。この音楽はスクリーンに表示される PDF を作り出すことを意図したものなので、出力のフォントを全体に大きくすることにします。
%%% definitions.ly mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0) #:line( #:dynamic "mp" #:text #:italic "dolce" ))) tempoMark = #(define-music-function (parser location markp) (string?) #{ \once \override Score . RehearsalMark #'self-alignment-X = #left \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0) \mark \markup { \bold $markp } #}) #(set-global-staff-size 23) \layout{ \context { \Score \override MetronomeMark #'extra-offset = #'(-9 . 0) \override MetronomeMark #'padding = #'3 } \context { \Staff } \context { \Voice \override Glissando #'thickness = #3 \override Glissando #'gap = #0.1 } }
音楽ファイルの中では、単に \include "definitions.ly"
を
\include "web-publish.ly"
に置き換えるだけです。もちろん、これをもっと便利なようにすることができます。‘definitions.ly’ ファイルには
mpdolce
と tempoMark
の定義だけを持たせて、‘web-publish.ly’ ファイルには上で記述した \layout
セクションだけを持たせ、‘university.ly’ ファイルには私の先生の好む出力を作り出すための調整だけを持たせます。‘music.ly’ の先頭部分は以下のようになります:
\include "definitions.ly" %%% Only uncomment one of these two lines! \include "web-publish.ly" %\include "university.ly"
このアプローチは、あなたがパーツ一式を作っているだけだとしても役に立つ可能性があります。私は自分のプロジェクトのために半ダースの ‘スタイル シート’ ファイルを使います。私はそれぞれの音楽ファイルを
\include "../global.ly"
で始め、‘gloval.ly’ には以下の内容を記述しています:
%%% global.ly \version "2.13.45" #(ly:set-option 'point-and-click #f) \include "../init/init-defs.ly" \include "../init/init-layout.ly" \include "../init/init-headers.ly" \include "../init/init-paper.ly"
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < スタイル シート ] | [ 上へ : 更なる調整 ] | [ 処理に時間のかかる調整を避ける > ] |
4.6.4 その他の情報源
内部リファレンスは LilyPond についての多くの情報を持っていますが、LilyPond の内部ファイルを調べることによってさらに多くの情報を収集することができます。内部ファイルを探究するには、まずあなたの使っているシステム特有のディレクトリを見つけ出す必要があります。このディレクトリの場所は、(a) あなたが lilypond.org からコンパイル済みのバイナリをダウンロードすることによって LilyPond を手に入れたのか、それとも、パッケージ マネージャから LilyPond をインストールした (つまり、Linux と一緒に配布されたか、fink や cygwin でインストールされた) のか、(b) LilyPond はどの OS 上で使用されているのか、に依存します:
lilypond.org からダウンロードした
- Linux
‘INSTALLDIR/lilypond/usr/share/lilypond/current/’ に進んでください
- MacOS X
‘INSTALLDIR/LilyPond.app/Contents/Resources/share/lilypond/current/’ に進んでください。ターミナルからこのディレクトリへ
cd
で移動するか、LilyPond アプリケーション上でコントロール クリックして ‘Show Package Contents’ を選択します。 - Windows
‘INSTALLDIR/LilyPond/usr/share/lilypond/current/’ に進んでください。Windows Explorer を使います。
パッケージ マネージャからインストールした、あるいは、ソースからコンパイルした
‘PREFIX/share/lilypond/X.Y.Z/’ に進んでください。PREFIX はパッケージ マネージャか configure
スクリプトによってセットされるものであり、X.Y.Z は LilyPond のバージョン番号です。
このディレクトリの中に 2 つの興味深いサブディレクトリがあります:
- ‘ly/’ - LilyPond フォーマットに関するファイルを保持しています
- ‘scm/’ -Scheme フォーマットに関するファイルを保持しています
‘ly/’ の中にあるファイルから見ていきましょう。‘ly/property-init.ly’ をテキスト エディタで開いてください。エディタはあなたが普段 .ly
ファイルを編集するために使っているもので結構です。このファイルは標準の LilyPond 定義済みコマンド – \stemUp
や
\slurDotted
など – のすべての定義を保持しています。1 つまたは複数の \override
コマンドを保持している変数の定義以外のものはないということがわかるでしょう。例えば、\tieDotted
は以下のように定義されています:
tieDotted = { \override Tie #'dash-period = #0.75 \override Tie #'dash-fraction = #0.1 }
あなたがこれらのデフォルト値を好まない場合、これらの定義済みコマンドを容易に再定義することができます – 他の変数と同様に、入力ファイルの先頭で定義します。
以下のファイルは ‘ly/’ で見つかる有用なファイルです:
ファイル名 | 内容 |
---|---|
‘ly/engraver-init.ly’ | エングラーバ コンテキストの定義 |
‘ly/paper-defaults-init.ly’ | 紙面関係のデフォルトの仕様 |
‘ly/performer-init.ly’ | パフォーマ コンテキストの定義 |
‘ly/property-init.ly’ | すべての共通定義済みコマンドの定義 |
‘ly/spanner-init.ly’ | スパナ関係の定義済みコマンドの定義 |
他の設定 (マークアップ コマンドの定義など) は
.scm
(Scheme) ファイルとして保存されています。Scheme プログラミング言語は、LilyPond 内部処理へのプログラム可能なインタフェイスを提供するために使用されます。これらのファイルについての詳しい説明は、Scheme 言語についての知識が必要となるため、このマニュアルの範囲外です。Scheme 言語とこれらのファイルを理解するには、十分な知識や時間が必要であるということを知っておくべきです
(Scheme チュートリアル を参照してください)。
あなたがこの知識を持っているのなら、興味を持つかもしれない Scheme ファイルは以下のものです:
ファイル名 | 内容 |
---|---|
‘scm/auto-beam.scm’ | サブ 連桁のデフォルト (訳者: 8 分音符には連桁だけが使用され、16 分音符やそれよりも短い音符には連桁とサブ 連桁が使われるのだと思います) |
‘scm/define-grobs.scm’ | Grob (グラフィカル オブジェクト) プロパティのデフォルト設定 |
‘scm/define-markup-commands.scm’ | すべてのマークアップ コマンドの仕様 |
‘scm/midi.scm’ | MIDI 出力のデフォルト設定 |
‘scm/output-lib.scm’ | フレット、色、臨時記号、小節線などの見た目に影響を与える設定 |
‘scm/parser-clef.scm’ | サポートされる音部記号の定義 |
‘scm/script.scm’ | アーティキュレーションのデフォルト設定 |
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < その他の情報源 ] | [ 上へ : 更なる調整 ] | [ Scheme を用いた高度な調整 > ] |
4.6.5 処理に時間のかかる調整を避ける
LilyPond は入力ファイルの処理中に追加のチェックを行うことができます。これらのチェックは実行時間を伸ばしますが、適切な結果を得るのに必要とされる手動調整を減らすかもしれません。テキストや歌詞の一部が余白まではみ出す場合、これらのチェックは楽譜のその行を縮めてマージンの内側に収まるようにします。
すべての状況下で有効にするには、以下のように、音楽の中の行ではなく
Score
の \with
ブロックの中にこれらのチェックのオーバライドを置くことによって、動作可能な状態にする必要があります:
\new Score \with { % Makes sure text scripts and lyrics are within the paper margins \override PaperColumn #'keep-inside-line = ##t \override NonMusicalPaperColumn #'keep-inside-line = ##t } { .. }
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
[ < 処理に時間のかかる調整を避ける ] | [ 上へ : 更なる調整 ] | [ テンプレート > ] |
4.6.6 Scheme を用いた高度な調整
\override
と \tweak
コマンドを用いることで多くのことが可能になりますが、LilyPond のアクションを変更するもっと強力な手段が
LilyPond 内部処理へのプログラム可能なインタフェイスを通じて利用可能です。Scheme プログラミング言語で書かれたコードは LilyPond の内部処理に直接組み込むことができます。もちろん、それを行うには Scheme プログラミングについての基礎知識が必要であり、その手引きが Scheme チュートリアル で提供されています。
多くの実現可能なことの 1 つの例としては、プロパティに定数をセットする代わりに Scheme プロシージャをセットすることができます。このプロパティが LilyPond によってアクセスされたときに、このプロシージャが呼び出されます。このプロシージャが呼び出されたときに、このプロシージャによって決定された値を動的にそのプロパティにセットすることができます。以下の例では、符頭にその音符の譜表上での位置に従って色を付けています:
#(define (color-notehead grob) "Color the notehead according to its position on the staff." (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7))) (case mod-position ;; Return rainbow colors ((1) (x11-color 'red )) ; for C ((2) (x11-color 'orange )) ; for D ((3) (x11-color 'yellow )) ; for E ((4) (x11-color 'green )) ; for F ((5) (x11-color 'blue )) ; for G ((6) (x11-color 'purple )) ; for A ((0) (x11-color 'violet )) ; for B ) ) ) \relative c' { % Arrange to obtain color from color-notehead procedure \override NoteHead #'color = #color-notehead c2 c' | b4 g8 a b4 c | c,2 a' | g1 | } \addlyrics { Some -- where o -- ver the Rain -- bow, way up high, }
Tweaking with Scheme に、これらのプログラム可能なインタフェイスの使い方を示している例がもっとあります。
[ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < Scheme を用いた高度な調整 ] | [ 上へ : トップ ページ ] | [ 単一の譜表 > ] |
A. テンプレート
このセクションにはセットアップ済みの LilyPond 楽譜を持つテンプレートがあります。音符を付け加えて、LilyPond を実行してください。あとは美しく譜刻された楽譜をお楽しみください!
A.1 単一の譜表 | ||
A.2 ピアノ テンプレート | ||
A.3 弦楽四重奏 | ||
A.4 合唱 | ||
A.5 Orchestral templates | ||
A.6 Ancient notation templates | ||
A.7 Jazz コンボ | ||
A.8 lilypond-book テンプレート |
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < テンプレート ] | [ 上へ : テンプレート ] | [ > ] |
A.1 単一の譜表
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < 単一の譜表 ] | [ 上へ : 単一の譜表 ] | [ > ] |
A.1.1 音符のみ
これは音符を持つ譜表を提供するとても簡単なテンプレートであり、ソロの楽器や旋律に適しています。これをファイルにカット&ペーストして、音符を付け加えれば完了です!
\version "2.13.45"melody = \relative c' { \clef treble \key c \major \time 4/4 a4 b c d } \score { \new Staff \melody \layout { } \midi { } }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : 単一の譜表 ] | [ > ] |
A.1.2 音符と歌詞
この小さなテンプレートは歌詞を持つ簡単な旋律を表しています。カット&ペーストして、音符を付け加えて、それから歌詞の単語を付け加えてください。この例は自動ビームを off にしています。これはボーカル パートでは一般的なことです。自動ビームを使用するには、対応する行を変更するか、コメント アウトしてください。
\version "2.13.45"melody = \relative c' { \clef treble \key c \major \time 4/4 a4 b c d } text = \lyricmode { Aaa Bee Cee Dee } \score{ << \new Voice = "one" { \autoBeamOff \melody } \new Lyrics \lyricsto "one" \text >> \layout { } \midi { } }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : 単一の譜表 ] | [ > ] |
A.1.3 音符とコード
旋律とコードを持つリード譜を欲しくはありませんか?他を見る必要はありません!
melody = \relative c' { \clef treble \key c \major \time 4/4 f4 e8[ c] d4 g a2 ~ a } harmonies = \chordmode { c4:m f:min7 g:maj c:aug d2:dim b:sus } \score { << \new ChordNames { \set chordChanges = ##t \harmonies } \new Staff \melody >> \layout{ } \midi { } }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : 単一の譜表 ] | [ ピアノ テンプレート > ] |
A.1.4 音符、歌詞それにコード
これは旋律、単語、コードを持つ歌曲の楽譜のためのテンプレートです。
melody = \relative c' { \clef treble \key c \major \time 4/4 a4 b c d } text = \lyricmode { Aaa Bee Cee Dee } harmonies = \chordmode { a2 c } \score { << \new ChordNames { \set chordChanges = ##t \harmonies } \new Voice = "one" { \autoBeamOff \melody } \new Lyrics \lyricsto "one" \text >> \layout { } \midi { } }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : テンプレート ] | [ > ] |
A.2 ピアノ テンプレート
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ピアノ テンプレート ] | [ 上へ : ピアノ テンプレート ] | [ > ] |
A.2.1 ソロ ピアノ
いくつかの音符を持つシンプルなピアノ譜を挙げます。
upper = \relative c'' { \clef treble \key c \major \time 4/4 a4 b c d } lower = \relative c { \clef bass \key c \major \time 4/4 a2 c } \score { \new PianoStaff << \set PianoStaff.instrumentName = #"Piano " \new Staff = "upper" \upper \new Staff = "lower" \lower >> \layout { } \midi { } }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : ピアノ テンプレート ] | [ > ] |
A.2.2 ピアノと歌詞を持つ旋律
これは一般的な歌曲のフォーマットです: 旋律と歌詞を持つ譜表と、その下にピアノ伴奏譜があります。
melody = \relative c'' { \clef treble \key c \major \time 4/4 a b c d } text = \lyricmode { Aaa Bee Cee Dee } upper = \relative c'' { \clef treble \key c \major \time 4/4 a4 b c d } lower = \relative c { \clef bass \key c \major \time 4/4 a2 c } \score { << \new Voice = "mel" { \autoBeamOff \melody } \new Lyrics \lyricsto mel \text \new PianoStaff << \new Staff = "upper" \upper \new Staff = "lower" \lower >> >> \layout { \context { \Staff \RemoveEmptyStaves } } \midi { } }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : ピアノ テンプレート ] | [ > ] |
A.2.3 中央に歌詞を持つピアノ譜
旋律と歌詞のための譜表を持つ代わりに、歌詞をピアノ譜の 2 つの譜の間に置くことができます。
upper = \relative c'' { \clef treble \key c \major \time 4/4 a4 b c d } lower = \relative c { \clef bass \key c \major \time 4/4 a2 c } text = \lyricmode { Aaa Bee Cee Dee } \score { \new GrandStaff << \new Staff = upper { \new Voice = "singer" \upper } \new Lyrics \lyricsto "singer" \text \new Staff = lower { \lower } >> \layout { \context { \GrandStaff \accepts "Lyrics" } \context { \Lyrics \consists "Bar_engraver" } } \midi { } }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : ピアノ テンプレート ] | [ 弦楽四重奏 > ] |
A.2.4 中央に強弱記号を持つピアノ譜s
多くのピアノ譜は、強弱記号を 2 つの譜の間に置きます。これを実現するにはちょっとした調整が必要ですが、そのテンプレートがここにあるので、あなた自身が調整を行う必要はありません。
global = { \key c \major \time 4/4 } upper = \relative c'' { \clef treble a4 b c d } lower = \relative c { \clef bass a2 c } dynamics = { s2\fff\> s4 s\!\pp } pedal = { s2\sustainOn s\sustainOff } \score { \new PianoStaff = "PianoStaff_pf" << \new Staff = "Staff_pfUpper" << \global \upper >> \new Dynamics = "Dynamics_pf" \dynamics \new Staff = "Staff_pfLower" << \global \lower >> \new Dynamics = "pedal" \pedal >> \layout { } } \score { \new PianoStaff = "PianoStaff_pf" << \new Staff = "Staff_pfUpper" << \global \upper \dynamics \pedal >> \new Staff = "Staff_pfLower" << \global \lower \dynamics \pedal >> >> \midi { } }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : テンプレート ] | [ > ] |
A.3 弦楽四重奏
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < 弦楽四重奏 ] | [ 上へ : 弦楽四重奏 ] | [ > ] |
A.3.1 弦楽四重奏
これは簡単な弦楽四重奏のためのテンプレートです。これは拍子記号と調号のために
\global
セクションを使っています。
global= { \time 4/4 \key c \major } violinOne = \new Voice \relative c'' { \set Staff.instrumentName = #"Violin 1 " c2 d e1 \bar "|." } violinTwo = \new Voice \relative c'' { \set Staff.instrumentName = #"Violin 2 " g2 f e1 \bar "|." } viola = \new Voice \relative c' { \set Staff.instrumentName = #"Viola " \clef alto e2 d c1 \bar "|." } cello = \new Voice \relative c' { \set Staff.instrumentName = #"Cello " \clef bass c2 b a1 \bar "|." } \score { \new StaffGroup << \new Staff << \global \violinOne >> \new Staff << \global \violinTwo >> \new Staff << \global \viola >> \new Staff << \global \cello >> >> \layout { } \midi { } }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : 弦楽四重奏 ] | [ 合唱 > ] |
A.3.2 弦楽四重奏パート
"弦楽四重奏テンプレート" は適切な弦楽四重奏の楽譜を作り出しますが、個々のパート譜を譜刻する必要がある場合はどうでしょうか?今度の新しいテンプレートは
\tag
機能を用いて容易に楽曲を個々のパートに分ける方法を示しています。
このテンプレートは別々のファイルに分ける必要があります。ファイル名は各ファイルの開始部分のコメントの中に記述されています。piece.ly
はすべての音楽定義を保持しています。他のファイル - score.ly
, vn1.ly
, vn2.ly
,
vla.ly
それに vlc.ly
- は対応するパートを作り出します。
別々のファイルに分ける場合は、指定されたコメントを外すことを忘れないでください!
%%%%% piece.ly %%%%% (This is the global definitions file) global= { \time 4/4 \key c \major } Violinone = \new Voice { \relative c''{ \set Staff.instrumentName = #"Violin 1 " c2 d e1 \bar "|." }} %********************************* Violintwo = \new Voice { \relative c''{ \set Staff.instrumentName = #"Violin 2 " g2 f e1 \bar "|." }} %********************************* Viola = \new Voice { \relative c' { \set Staff.instrumentName = #"Viola " \clef alto e2 d c1 \bar "|." }} %********************************* Cello = \new Voice { \relative c' { \set Staff.instrumentName = #"Cello " \clef bass c2 b a1 \bar "|."}} %********************************** music = { << \tag #'score \tag #'vn1 \new Staff { << \global \Violinone >> } \tag #'score \tag #'vn2 \new Staff { << \global \Violintwo>> } \tag #'score \tag #'vla \new Staff { << \global \Viola>> } \tag #'score \tag #'vlc \new Staff { << \global \Cello>> } >> } %%% These are the other files you need to save on your computer %%%%% score.ly %%%%% (This is the main file) %\include "piece.ly" %%% uncomment this line when using a separate file #(set-global-staff-size 14) \score { \new StaffGroup \keepWithTag #'score \music \layout { } \midi { } } %{ Uncomment this block when using separate files %%%%% vn1.ly %%%%% (This is the Violin 1 part file) \include "piece.ly" \score { \keepWithTag #'vn1 \music \layout { } } %%%%% vn2.ly %%%%% (This is the Violin 2 part file) \include "piece.ly" \score { \keepWithTag #'vn2 \music \layout { } } %%%%% vla.ly %%%%% (This is the Viola part file) \include "piece.ly" \score { \keepWithTag #'vla \music \layout { } } %%%%% vlc.ly %%%%% (This is the Cello part file) \include "piece.ly" \score { \keepWithTag #'vlc \music \layout { } } %}
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : テンプレート ] | [ > ] |
A.4 合唱
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < 合唱 ] | [ 上へ : 合唱 ] | [ > ] |
A.4.1 SATB ボーカル譜
これは標準の 4 パート SATB (ソプラノ、アルト、テナー、バス) ボーカル譜です。もっと大きな合唱では、すべてのパートで使用されるセクションをインクルードすると便利です。例えば、拍子記号と調号はほとんど常にすべてのパートで同じです。"賛美歌" テンプレートのように、4 つのボイスは 2 つの譜にグループ分けされています。
global = { \key c \major \time 4/4 } sopMusic = \relative c'' { c4 c c8[( b)] c4 } sopWords = \lyricmode { hi hi hi hi } altoMusic = \relative c' { e4 f d e } altoWords = \lyricmode { ha ha ha ha } tenorMusic = \relative c' { g4 a f g } tenorWords = \lyricmode { hu hu hu hu } bassMusic = \relative c { c4 c g c } bassWords = \lyricmode { ho ho ho ho } \score { \new ChoirStaff << \new Lyrics = "sopranos" \new Staff = "women" << \new Voice = "sopranos" { \voiceOne << \global \sopMusic >> } \new Voice = "altos" { \voiceTwo << \global \altoMusic >> } >> \new Lyrics = "altos" \new Lyrics = "tenors" \new Staff = "men" << \clef bass \new Voice = "tenors" { \voiceOne << \global \tenorMusic >> } \new Voice = "basses" { \voiceTwo << \global \bassMusic >> } >> \new Lyrics = "basses" \context Lyrics = "sopranos" \lyricsto "sopranos" \sopWords \context Lyrics = "altos" \lyricsto "altos" \altoWords \context Lyrics = "tenors" \lyricsto "tenors" \tenorWords \context Lyrics = "basses" \lyricsto "basses" \bassWords >> }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : 合唱 ] | [ > ] |
A.4.2 SATB ボーカル譜と自動ピアノ譜
このテンプレートは、"合唱テンプレート"で示された標準の SATB ボーカル譜に自動ピアノ譜を付け加えています。これは LilyPond の強みの 1 つを示しています - 音楽定義を何回も使用することができます。ボーカルの音符 (例えば、tenorMusic
の音符) に変更が加えられた場合、その変更はピアノ譜にも適用されます。
global = { \key c \major \time 4/4 } sopMusic = \relative c'' { c4 c c8[( b)] c4 } sopWords = \lyricmode { hi hi hi hi } altoMusic = \relative c' { e4 f d e } altoWords =\lyricmode { ha ha ha ha } tenorMusic = \relative c' { g4 a f g } tenorWords = \lyricmode { hu hu hu hu } bassMusic = \relative c { c4 c g c } bassWords = \lyricmode { ho ho ho ho } \score { << \new ChoirStaff << \new Lyrics = "sopranos" \new Staff = "women" << \new Voice = "sopranos" { \voiceOne << \global \sopMusic >> } \new Voice = "altos" { \voiceTwo << \global \altoMusic >> } >> \new Lyrics = "altos" \new Lyrics = "tenors" \new Staff = "men" << \clef bass \new Voice = "tenors" { \voiceOne << \global \tenorMusic >> } \new Voice = "basses" { \voiceTwo << \global \bassMusic >> } >> \new Lyrics = "basses" \context Lyrics = "sopranos" \lyricsto "sopranos" \sopWords \context Lyrics = "altos" \lyricsto "altos" \altoWords \context Lyrics = "tenors" \lyricsto "tenors" \tenorWords \context Lyrics = "basses" \lyricsto "basses" \bassWords >> \new PianoStaff << \new Staff << \set Staff.printPartCombineTexts = ##f \partcombine << \global \sopMusic >> << \global \altoMusic >> >> \new Staff << \clef bass \set Staff.printPartCombineTexts = ##f \partcombine << \global \tenorMusic >> << \global \bassMusic >> >> >> >> }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : 合唱 ] | [ Orchestral templates > ] |
A.4.3 整列されたコンテキストを持つ SATB
このテンプレートは基本的に単純な "合唱" テンプレートと同じですが、歌詞が
alignAboveContext
と alignBelowContext
を用いて配置されています。
global = { \key c \major \time 4/4 } sopMusic = \relative c'' { c4 c c8[( b)] c4 } sopWords = \lyricmode { hi hi hi hi } altoMusic = \relative c' { e4 f d e } altoWords = \lyricmode { ha ha ha ha } tenorMusic = \relative c' { g4 a f g } tenorWords = \lyricmode { hu hu hu hu } bassMusic = \relative c { c4 c g c } bassWords = \lyricmode { ho ho ho ho } \score { \new ChoirStaff << \new Staff = "women" << \new Voice = "sopranos" { \voiceOne << \global \sopMusic >> } \new Voice = "altos" { \voiceTwo << \global \altoMusic >> } >> \new Lyrics \with { alignAboveContext = #"women" } \lyricsto "sopranos" \sopWords \new Lyrics \with { alignBelowContext = #"women" } \lyricsto "altos" \altoWords % we could remove the line about this with the line below, since we want % the alto lyrics to be below the alto Voice anyway. % \new Lyrics \lyricsto "altos" \altoWords \new Staff = "men" << \clef bass \new Voice = "tenors" { \voiceOne << \global \tenorMusic >> } \new Voice = "basses" { \voiceTwo << \global \bassMusic >> } >> \new Lyrics \with { alignAboveContext = #"men" } \lyricsto "tenors" \tenorWords \new Lyrics \with { alignBelowContext = #"men" } \lyricsto "basses" \bassWords % again, we could replace the line above this with the line below. % \new Lyrics \lyricsto "basses" \bassWords >> }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : テンプレート ] | [ > ] |
A.5 Orchestral templates
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < Orchestral templates ] | [ 上へ : Orchestral templates ] | [ Ancient notation templates > ] |
A.5.1 Orchestra, choir and piano
このテンプレートは、同じタイプの楽器をまとめて副グループ化するために
StaffGroup
と GrandStaff
をネストして使用する方法と、移調楽器のために \transpose
を使用する方法を示しています。変数の中にある音楽はすべて C で保存されています。音楽は C で入力されるか、そうでなければ、楽器の調で入力されてから変数に代入される前に C に移調されています。
#(set-global-staff-size 17) \paper { indent = 3.0\cm % space for instrumentName short-indent = 1.5\cm % space for shortInstrumentName } fluteMusic = \relative c' { \key g \major g'1 b } % Pitches as written on a manuscript for Clarinet in A % are transposed to concert pitch. clarinetMusic = \transpose c' a \relative c'' { \key bes \major bes1 d } trumpetMusic = \relative c { \key g \major g''1 b } % Key signature is often omitted for horns hornMusic = \transpose c' f \relative c { d'1 fis } percussionMusic = \relative c { \key g \major g1 b } sopranoMusic = \relative c'' { \key g \major g'1 b } sopranoLyrics = \lyricmode { Lyr -- ics } altoIMusic = \relative c' { \key g \major g'1 b } altoIIMusic = \relative c' { \key g \major g'1 b } altoILyrics = \sopranoLyrics altoIILyrics = \lyricmode { Ah -- ah } tenorMusic = \relative c' { \clef "treble_8" \key g \major g1 b } tenorLyrics = \sopranoLyrics pianoRHMusic = \relative c { \key g \major g''1 b } pianoLHMusic = \relative c { \clef bass \key g \major g1 b } violinIMusic = \relative c' { \key g \major g'1 b } violinIIMusic = \relative c' { \key g \major g'1 b } violaMusic = \relative c { \clef alto \key g \major g'1 b } celloMusic = \relative c { \clef bass \key g \major g1 b } bassMusic = \relative c { \clef "bass_8" \key g \major g,1 b } \score { << \new StaffGroup = "StaffGroup_woodwinds" << \new Staff = "Staff_flute" { \set Staff.instrumentName = #"Flute" % shortInstrumentName, midiInstrument, etc. % may be set here as well \fluteMusic } \new Staff = "Staff_clarinet" { \set Staff.instrumentName = \markup { \concat { "Clarinet in B" \flat } } % Declare that written Middle C in the music % to follow sounds a concert B flat, for % output using sounded pitches such as MIDI. \transposition bes % Print music for a B-flat clarinet \transpose bes c' \clarinetMusic } >> \new StaffGroup = "StaffGroup_brass" << \new Staff = "Staff_hornI" { \set Staff.instrumentName = #"Horn in F" \transposition f \transpose f c' \hornMusic } \new Staff = "Staff_trumpet" { \set Staff.instrumentName = #"Trumpet in C" \trumpetMusic } >> \new RhythmicStaff = "RhythmicStaff_percussion" << \set RhythmicStaff.instrumentName = #"Percussion" \percussionMusic >> \new PianoStaff << \set PianoStaff.instrumentName = #"Piano" \new Staff { \pianoRHMusic } \new Staff { \pianoLHMusic } >> \new ChoirStaff = "ChoirStaff_choir" << \new Staff = "Staff_soprano" { \set Staff.instrumentName = #"Soprano" \new Voice = "soprano" \sopranoMusic } \new Lyrics \lyricsto "soprano" { \sopranoLyrics } \new GrandStaff = "GrandStaff_altos" \with { \accepts Lyrics } << \new Staff = "Staff_altoI" { \set Staff.instrumentName = #"Alto I" \new Voice = "altoI" \altoIMusic } \new Lyrics \lyricsto "altoI" { \altoILyrics } \new Staff = "Staff_altoII" { \set Staff.instrumentName = #"Alto II" \new Voice = "altoII" \altoIIMusic } \new Lyrics \lyricsto "altoII" { \altoIILyrics } >> \new Staff = "Staff_tenor" { \set Staff.instrumentName = #"Tenor" \new Voice = "tenor" \tenorMusic } \new Lyrics \lyricsto "tenor" { \tenorLyrics } >> \new StaffGroup = "StaffGroup_strings" << \new GrandStaff = "GrandStaff_violins" << \new Staff = "Staff_violinI" { \set Staff.instrumentName = #"Violin I" \violinIMusic } \new Staff = "Staff_violinII" { \set Staff.instrumentName = #"Violin II" \violinIIMusic } >> \new Staff = "Staff_viola" { \set Staff.instrumentName = #"Viola" \violaMusic } \new Staff = "Staff_cello" { \set Staff.instrumentName = #"Cello" \celloMusic } \new Staff = "Staff_bass" { \set Staff.instrumentName = #"Double Bass" \bassMusic } >> >> \layout { } }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : テンプレート ] | [ > ] |
A.6 Ancient notation templates
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < Ancient notation templates ] | [ 上へ : Ancient notation templates ] | [ > ] |
A.6.1 Transcription of mensural music
When transcribing mensural music, an incipit at the beginning of the piece is useful to indicate the original key and tempo. While today musicians are used to bar lines in order to faster recognize rhythmic patterns, bar lines were not yet invented during the period of mensural music; in fact, the meter often changed after every few notes. As a compromise, bar lines are often printed between the staves rather than on the staves.
global = { \set Score.skipBars = ##t % incipit \once \override Score.SystemStartBracket #'transparent = ##t \override Score.SpacingSpanner #'spacing-increment = #1.0 % tight spacing \key f \major \time 2/2 \once \override Staff.TimeSignature #'style = #'neomensural \override Voice.NoteHead #'style = #'neomensural \override Voice.Rest #'style = #'neomensural \set Staff.printKeyCancellation = ##f \cadenzaOn % turn off bar lines \skip 1*10 \once \override Staff.BarLine #'transparent = ##f \bar "||" \skip 1*1 % need this extra \skip such that clef change comes % after bar line \bar "" % main \revert Score.SpacingSpanner #'spacing-increment % CHECK: no effect? \cadenzaOff % turn bar lines on again \once \override Staff.Clef #'full-size-change = ##t \set Staff.forceClef = ##t \key g \major \time 4/4 \override Voice.NoteHead #'style = #'default \override Voice.Rest #'style = #'default % FIXME: setting printKeyCancellation back to #t must not % occur in the first bar after the incipit. Dto. for forceClef. % Therefore, we need an extra \skip. \skip 1*1 \set Staff.printKeyCancellation = ##t \set Staff.forceClef = ##f \skip 1*7 % the actual music % let finis bar go through all staves \override Staff.BarLine #'transparent = ##f % finis bar \bar "|." } discantusNotes = { \transpose c' c'' { \set Staff.instrumentName = #"Discantus " % incipit \clef "neomensural-c1" c'1. s2 % two bars \skip 1*8 % eight bars \skip 1*1 % one bar % main \clef "treble" d'2. d'4 | b e' d'2 | c'4 e'4.( d'8 c' b | a4) b a2 | b4.( c'8 d'4) c'4 | \once \override NoteHead #'transparent = ##t c'1 | b\breve | } } discantusLyrics = \lyricmode { % incipit IV- % main Ju -- bi -- | la -- te De -- | o, om -- nis ter -- | ra, __ om- | "..." | -us. | } altusNotes = { \transpose c' c'' { \set Staff.instrumentName = #"Altus " % incipit \clef "neomensural-c3" r1 % one bar f1. s2 % two bars \skip 1*7 % seven bars \skip 1*1 % one bar % main \clef "treble" r2 g2. e4 fis g | % two bars a2 g4 e | fis g4.( fis16 e fis4) | g1 | \once \override NoteHead #'transparent = ##t g1 | g\breve | } } altusLyrics = \lyricmode { % incipit IV- % main Ju -- bi -- la -- te | % two bars De -- o, om -- | nis ter -- ra, | "..." | -us. | } tenorNotes = { \transpose c' c' { \set Staff.instrumentName = #"Tenor " % incipit \clef "neomensural-c4" r\longa % four bars r\breve % two bars r1 % one bar c'1. s2 % two bars \skip 1*1 % one bar \skip 1*1 % one bar % main \clef "treble_8" R1 | R1 | R1 | r2 d'2. d'4 b e' | % two bars \once \override NoteHead #'transparent = ##t e'1 | d'\breve | } } tenorLyrics = \lyricmode { % incipit IV- % main Ju -- bi -- la -- te | % two bars "..." | -us. | } bassusNotes = { \transpose c' c' { \set Staff.instrumentName = #"Bassus " % incipit \clef "bass" r\maxima % eight bars f1. s2 % two bars \skip 1*1 % one bar % main \clef "bass" R1 | R1 | R1 | R1 | g2. e4 | \once \override NoteHead #'transparent = ##t e1 | g\breve | } } bassusLyrics = \lyricmode { % incipit IV- % main Ju -- bi- | "..." | -us. | } \score { \new StaffGroup = choirStaff << \new Voice = "discantusNotes" << \global \discantusNotes >> \new Lyrics = "discantusLyrics" \lyricsto discantusNotes { \discantusLyrics } \new Voice = "altusNotes" << \global \altusNotes >> \new Lyrics = "altusLyrics" \lyricsto altusNotes { \altusLyrics } \new Voice = "tenorNotes" << \global \tenorNotes >> \new Lyrics = "tenorLyrics" \lyricsto tenorNotes { \tenorLyrics } \new Voice = "bassusNotes" << \global \bassusNotes >> \new Lyrics = "bassusLyrics" \lyricsto bassusNotes { \bassusLyrics } >> \layout { \context { \Score % no bars in staves \override BarLine #'transparent = ##t % incipit should not start with a start delimiter \remove "System_start_delimiter_engraver" } \context { \Voice % no slurs \override Slur #'transparent = ##t % Comment in the below "\remove" command to allow line % breaking also at those barlines where a note overlaps % into the next bar. The command is commented out in this % short example score, but especially for large scores, you % will typically yield better line breaking and thus improve % overall spacing if you comment in the following command. %\remove "Forbid_line_break_engraver" } } }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : Ancient notation templates ] | [ Jazz コンボ > ] |
A.6.2 Gregorian transcription template
This example demonstrates how to do modern transcription of Gregorian music. Gregorian music has no measure, no stems; it uses only half and quarter note heads, and special marks, indicating rests of different length.
\include "gregorian.ly" chant = \relative c' { \set Score.timing = ##f f4 a2 \divisioMinima g4 b a2 f2 \divisioMaior g4( f) f( g) a2 \finalis } verba = \lyricmode { Lo -- rem ip -- sum do -- lor sit a -- met } \score { \new Staff << \new Voice = "melody" \chant \new Lyrics = "one" \lyricsto melody \verba >> \layout { \context { \Staff \remove "Time_signature_engraver" \remove "Bar_engraver" \override Stem #'transparent = ##t } \context { \Voice \override Stem #'length = #0 } \context { \Score barAlways = ##t } } }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : テンプレート ] | [ lilypond-book テンプレート > ] |
A.7 Jazz コンボ
これはジャズ アンサンブルのための非常に高度なテンプレートです。すべての楽器は \key c \major
で記述されていることに注意してください。これは、調をコンサート ピッチで参照させます。音楽が \tranpose
セクションの中に置かれている場合は、調は自動的に移調されます。
\header { title = "Song" subtitle = "(tune)" composer = "Me" meter = "moderato" piece = "Swing" tagline = \markup { \column { "LilyPond example file by Amelie Zapf," "Berlin 07/07/2003" } } } %#(set-global-staff-size 16) \include "english.ly" %%%%%%%%%%%% Some macros %%%%%%%%%%%%%%%%%%% sl = { \override NoteHead #'style = #'slash \override Stem #'transparent = ##t } nsl = { \revert NoteHead #'style \revert Stem #'transparent } crOn = \override NoteHead #'style = #'cross crOff = \revert NoteHead #'style %% insert chord name style stuff here. jazzChords = { } %%%%%%%%%%%% Keys'n'thangs %%%%%%%%%%%%%%%%% global = { \time 4/4 } Key = { \key c \major } % ############ Horns ############ % ------ Trumpet ------ trpt = \transpose c d \relative c'' { \Key c1 | c | c | } trpHarmony = \transpose c' d { \jazzChords } trumpet = { \global \set Staff.instrumentName = #"Trumpet" \clef treble << \trpt >> } % ------ Alto Saxophone ------ alto = \transpose c a \relative c' { \Key c1 | c | c | } altoHarmony = \transpose c' a { \jazzChords } altoSax = { \global \set Staff.instrumentName = #"Alto Sax" \clef treble << \alto >> } % ------ Baritone Saxophone ------ bari = \transpose c a' \relative c { \Key c1 c1 \sl d4^"Solo" d d d \nsl } bariHarmony = \transpose c' a \chordmode { \jazzChords s1 s d2:maj e:m7 } bariSax = { \global \set Staff.instrumentName = #"Bari Sax" \clef treble << \bari >> } % ------ Trombone ------ tbone = \relative c { \Key c1 | c | c } tboneHarmony = \chordmode { \jazzChords } trombone = { \global \set Staff.instrumentName = #"Trombone" \clef bass << \tbone >> } % ############ Rhythm Section ############# % ------ Guitar ------ gtr = \relative c'' { \Key c1 \sl b4 b b b \nsl c1 } gtrHarmony = \chordmode { \jazzChords s1 c2:min7+ d2:maj9 } guitar = { \global \set Staff.instrumentName = #"Guitar" \clef treble << \gtr >> } %% ------ Piano ------ rhUpper = \relative c'' { \voiceOne \Key c1 | c | c } rhLower = \relative c' { \voiceTwo \Key e1 | e | e } lhUpper = \relative c' { \voiceOne \Key g1 | g | g } lhLower = \relative c { \voiceTwo \Key c1 | c | c } PianoRH = { \clef treble \global \set Staff.midiInstrument = #"acoustic grand" << \new Voice = "one" \rhUpper \new Voice = "two" \rhLower >> } PianoLH = { \clef bass \global \set Staff.midiInstrument = #"acoustic grand" << \new Voice = "one" \lhUpper \new Voice = "two" \lhLower >> } piano = { << \set PianoStaff.instrumentName = #"Piano" \new Staff = "upper" \PianoRH \new Staff = "lower" \PianoLH >> } % ------ Bass Guitar ------ Bass = \relative c { \Key c1 | c | c } bass = { \global \set Staff.instrumentName = #"Bass" \clef bass << \Bass >> } % ------ Drums ------ up = \drummode { \voiceOne hh4 <hh sn> hh <hh sn> hh4 <hh sn> hh <hh sn> hh4 <hh sn> hh <hh sn> } down = \drummode { \voiceTwo bd4 s bd s bd4 s bd s bd4 s bd s } drumContents = { \global << \set DrumStaff.instrumentName = #"Drums" \new DrumVoice \up \new DrumVoice \down >> } %%%%%%%%% It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%% \score { << \new StaffGroup = "horns" << \new Staff = "trumpet" \trumpet \new Staff = "altosax" \altoSax \new ChordNames = "barichords" \bariHarmony \new Staff = "barisax" \bariSax \new Staff = "trombone" \trombone >> \new StaffGroup = "rhythm" << \new ChordNames = "chords" \gtrHarmony \new Staff = "guitar" \guitar \new PianoStaff = "piano" \piano \new Staff = "bass" \bass \new DrumStaff \drumContents >> >> \layout { \context { \Staff \RemoveEmptyStaves } \context { \Score \override BarNumber #'padding = #3 \override RehearsalMark #'padding = #2 skipBars = ##t } } \midi { } }
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < Jazz コンボ ] | [ 上へ : テンプレート ] | [ > ] |
A.8 lilypond-book テンプレート
以下のテンプレートは lilypond-book
で使用するためのものです。このプログラムに馴染みがないのなら、
LilyPond-book を参照してください。
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < lilypond-book テンプレート ] | [ 上へ : lilypond-book テンプレート ] | [ > ] |
A.8.1 LaTeX
LilyPond 断片を LaTeX ドキュメントに含めることができます。
\documentclass[]{article} \begin{document} 通常の LaTeX テキスト。 \begin{lilypond} \relative c'' { a4 b c d } \end{lilypond} さらに LaTeX テキスト。 \begin{lilypond} \relative c'' { d4 c b a } \end{lilypond} \end{document}
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : lilypond-book テンプレート ] | [ > ] |
A.8.2 Texinfo
LilyPond 断片を Texinfo に含めることができます。実際、このマニュアル全体が Texinfo で書かれています。
\input texinfo @node Top Texinfo テキスト @lilypond[verbatim,fragment,ragged-right] a4 b c d @end lilypond さらに Texinfo テキスト @lilypond[verbatim,fragment,ragged-right] d4 c b a @end lilypond @bye
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ Scheme チュートリアル >> ] | ||
[ < ] | [ 上へ : lilypond-book テンプレート ] | [ Scheme チュートリアル > ] |
A.8.3 xelatex
\documentclass{article} \usepackage{ifxetex} \ifxetex %xetex 特有の要素 \usepackage{xunicode,fontspec,xltxtra} \setmainfont[Numbers=OldStyle]{Times New Roman} \setsansfont{Arial} \else %pdftex を使おうとしていないのなら、以下の内容は無意味かもしれません %This can be empty if you are not going to use pdftex \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{mathptmx}%Times \usepackage{helvet}%Helvetica \fi %ここで、pdftex も理解できるパッケージをすべて挿入することができます \usepackage[ngerman,finnish,english]{babel} \usepackage{graphicx} \begin{document} \title{A short document with LilyPond and xelatex} \maketitle \emph{text} の内部にある通常の \textbf{font} コマンドは機能します。 なぜなら、それは \textsf{\LaTeX{} と XeteX でサポートされているから です。}もし \verb+\XeTeX+ のような特殊なコマンドを使用したければ、 それらを再度 \verb+\ifxetex+ 環境の中に入れる必要があります。この方 法で \ifxetex \XeTeX{} コマンド \else XeTeX コマンド \fi - これは通 常の \LaTeX ではありません - を表示させることができます。 通常のテキストの中では、以下のように簡単に LilyPond コマンドを使う ことができます: \begin{lilypond} {a2 b c'8 c' c' c'} \end{lilypond} \noindent などのようにです。 LilyPond に設定されいる断片集のフォントは、断片の内部で設定されて いる必要があります。これを行うには、アプリケーション使用方法を読んで lilypond-book の使い方を学ぶ必要があります。 \selectlanguage{ngerman} Auch Umlaute funktionieren ohne die \LaTeX -Befehle, wie auch alle anderen seltsamen Zeichen: __ ______, wenn sie von der Schriftart unterst__tzt werden. \end{document}
[ << テンプレート ] | [トップ][目次][インデックス][ ? ] | [ GNU Free Documentation License >> ] | ||
[ < ] | [ 上へ : トップ ページ ] | [ Tweaking with Scheme > ] |
B. Scheme チュートリアル
B.1 Tweaking with Scheme |
[ << Scheme チュートリアル ] | [トップ][目次][インデックス][ ? ] | [ GNU Free Documentation License >> ] | ||
[ < Scheme チュートリアル ] | [ 上へ : Scheme チュートリアル ] | [ GNU Free Documentation License > ] |
B.1 Tweaking with Scheme
[ << Scheme チュートリアル ] | [トップ][目次][インデックス][ ? ] | [ LilyPond インデックス >> ] | ||
[ < Tweaking with Scheme ] | [ 上へ : トップ ページ ] | [ LilyPond インデックス > ] |
C. GNU Free Documentation License
Version 1.3, 3 November 2008
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. http://fsf.org/ Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. |
-
PREAMBLE
The purpose of this License is to make a manual, textbook, or other functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
-
APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not “Transparent” is called “Opaque”.
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text.
The “publisher” means any person or entity that distributes copies of the Document to the public.
A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
-
VERBATIM COPYING
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly display copies.
-
COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
-
MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
- Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
- List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
- State on the Title page the name of the publisher of the Modified Version, as the publisher.
- Preserve all the copyright notices of the Document.
- Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
- Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
- Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice.
- Include an unaltered copy of this License.
- Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
- Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
- For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
- Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
- Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version.
- Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section.
- Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles.
You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
-
COMBINING DOCUMENTS
You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements.”
-
COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
-
AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
-
TRANSLATION
Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
-
TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.
However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.
-
FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Document.
-
RELICENSING
“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A “Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of copyrightable works thus published on the MMC site.
“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.
“Incorporate” means to publish or republish a Document, in whole or in part, as part of another Document.
An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.
ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
Copyright (C) year your name. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. |
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with…Texts.” line with this:
with the Invariant Sections being list their titles, with the Front-Cover Texts being list, and with the Back-Cover Texts being list. |
If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
[ << GNU Free Documentation License ] | [トップ][目次][インデックス][ ? ] | [ >> ] | ||
[ < GNU Free Documentation License ] | [ 上へ : トップ ページ ] | [ > ] |
D. LilyPond インデックス
Jump to: | !
%
'
(
,
.
<
>
[
\
]
^
_
~
古
A B C D E F G H I K L M N O P Q R S T U V W X |
---|
Jump to: | !
%
'
(
,
.
<
>
[
\
]
^
_
~
古
A B C D E F G H I K L M N O P Q R S T U V W X |
---|
[トップ][目次][インデックス][ ? ] |
目次
- 1. 導入部
- 2. 一般的な記譜法
- 3. 基礎となるコンセプト
- 4. 出力を調整する
- A. テンプレート
- B. Scheme チュートリアル
- C. GNU Free Documentation License
- D. LilyPond インデックス
[トップ][目次][インデックス][ ? ] |
このドキュメントについて
This document was generated by Sawada on 1 月 3, 2011 using texi2html 1.82.
ナビゲーション パネルの中にあるボタンには以下のような意味があります:
ボタン | Name | 行き先 | 1.2.3 からの行き先 |
---|---|---|---|
[] | |||
[ << ] | FastBack | この章あるいは前の章の先頭 | 1 |
[] | |||
[トップ] | トップ | ドキュメントの表紙 (先頭) | |
[目次] | 目次 | 目次 | |
[インデックス] | インデックス | インデックス | |
[ ? ] | 情報 | 情報 (ヘルプ) | |
[] | |||
[ >> ] | FastForward | 次の章 | 2 |
[] | |||
[] | |||
[ < ] | Back | 前のセクション | 1.2.2 |
[] | |||
[ 上へ ] | 上 | 上のセクション | 1.2 |
[] | |||
[ > ] | Forward | 次のセクション | 1.2.4 |
この表で、 行き先 は、現在の位置が以下のような構造を持つドキュメントの サブサブセクション 1-2-3 であると仮定しています:
- 1. セクション 1
- 1.1 サブセクション 1-1
- ...
- 1.2 サブセクション 1-2
- 1.2.1 サブサブセクション 1-2-1
- 1.2.2 サブサブセクション 1-2-2
- 1.2.3 サブサブセクション 1-2-3 <== 現在の位置
- 1.2.4 サブサブセクション 1-2-4
- 1.3 サブセクション 1-3
- ...
- 1.4 サブセクション 1-4
- 1.1 サブセクション 1-1
他の言語: English, deutsch, español, français, magyar, italiano, nederlands