[トップ][目次][インデックス] |
LilyPond — 学習マニュアル
このマニュアルは LilyPond バージョン 2.24.4 の導入部です。 |
1. Installing | Installing LilyPond | |
2. チュートリアル | LilyPond で譜刻するための基本 | |
3. 一般的な記譜法 | LilyPond 導入の手引き | |
4. 基礎となるコンセプト | このマニュアルの残りの部分を読むために必要とされる基本的なコンセプト | |
5. 出力を調整する | 出力を変更するための導入部 | |
付録 | ||
---|---|---|
A. テンプレート | 作成 (コンパイル) 準備ができているテンプレート | |
B. GNU Free Documentation License | このドキュメントの使用許諾書 | |
C. LilyPond インデックス |
このマニュアルと他のドキュメントの関係について、あるいは、このマニュアルを他の形式で読む方法についての情報は、 マニュアル を参照してください。 マニュアルのいずれかを見失ってしまった場合、https://lilypond.org/ にマニュアルがすべて揃っています。 |
[ << Top ] | [トップ][目次][インデックス] | [ チュートリアル >> ] |
[ < Top ] | [ 上へ : Top ] | [ Graphical setup under GNU/Linux > ] |
1. Installing
This gentle, step-by-step installation tutorial guides you through installing LilyPond and creating a first music score.
LilyPond input files are simple text files. You can use any raw text editor to edit a LilyPond file (not a rich text editor such as Microsoft Word), but there are several editors tailored specifically for LilyPond, making the editing process very comfortable. Because a choice has to be made, this tutorial uses Frescobaldi, which is the most popular among such editors right now. However, there are several other options available. For more information, see editing Easier editing.
Please choose the tutorial according to your needs. (If you don’t know what the “command line” is, you want the graphical setup!)
1.1 Graphical setup under GNU/Linux | ||
1.2 Graphical setup under Windows | ||
1.3 Graphical setup under macOS | ||
1.4 Command line setup |
[ << Installing ] | [トップ][目次][インデックス] | [ チュートリアル >> ] |
[ < Installing ] | [ 上へ : Installing ] | [ Graphical setup under Windows > ] |
1.1 Graphical setup under GNU/Linux
These instructions work for the GNOME environment, for example on the default flavors of Ubuntu and Fedora. In other desktop environments, they can likely be adapted. For more minimal GNU/Linux distributions, see Command line setup.
First, find the GNOME Software app.
In GNOME Software, search “Frescobaldi”.
Install Frescobaldi. Behind the scenes, this should also automatically install some version of LilyPond.
Open Frescobaldi. It starts on a new file with some pre-filled text that will be explained later.
After the \version
line, enter a new line containing exactly
this:
{ c' }
Now click on the LilyPond icon, or press Control-M. On the right, a simple score appears.
Congratulations, you have just created your first music sheet with LilyPond! If you’re satisfied now, you can skip the rest of this section. However, it may be that the version of LilyPond that was installed is not the same one as this documentation is for. If you want a different LilyPond version, you can register it in Frescobaldi, without losing the initial one. To do this, first download the archive from Download, and double-click to unpack it.
Move the unpacked folder out of your Downloads folder to the folder where you want to permanently store it. For example, put it in your home folder.
Now, in Frescobaldi, go the Preferences.
Select “LilyPond Preferences”, and click “Add” to register a new LilyPond version.
Click on the file explorer icon.
Navigate to the folder you just extracted, then inside this folder, to ‘bin’ and finally ‘lilypond’.
You’re done! You can click ‘OK’. You now have two versions of LilyPond installed.
Now turn to チュートリアル to learn more about LilyPond’s syntax.
[ << Installing ] | [トップ][目次][インデックス] | [ チュートリアル >> ] |
[ < Graphical setup under GNU/Linux ] | [ 上へ : Installing ] | [ Graphical setup under macOS > ] |
1.2 Graphical setup under Windows
Download LilyPond for Windows from
Download. The file will
a ZIP archive called
‘lilypond-x.y.z-mingw-x86_64.zip’ (where
“mingw” means it’s for Windows). Extract this in the file
explorer. Place the resulting directory
lilypond-x.y.z-mingw-x86_64
in a
permanent location; the actual folder doesn’t matter, you just
need to put it somewhere you won’t move it afterwards. For
example, you could choose your home folder.
After this, download the latest release of Frescobaldi from the project’s download page. Choose the ‘.exe’ file.
Double-click on the downloaded file in the file explorer. This launches the setup wizard.
Accept the license and install Frescobaldi using the wizard. You will find a startup screen like this:
Navigate to the Frescobaldi preferences.
Navigate to “LilyPond Preferences” on the left.
Click “Edit” on the right. This leads to a dialog for choosing the LilyPond executable.
Click on the folder icon and navigate to the
lilypond-x.y.z-mingw-x86_64
folder you previously created.
Inside this folder, open ‘lilypond-x.y.z’, then ‘bin’,
and finally select ‘lilypond’.
Now click “OK”.
Click “OK” again.
Type this simple file in the window:
\version "2.24.4" { c' }
Compile it with Control-M or using the “LilyPond” icon. A minimal score appears.
Congratulations, you have just created your first music sheet with LilyPond! Now continue with the チュートリアル to learn more about LilyPond’s syntax.
[ << Installing ] | [トップ][目次][インデックス] | [ チュートリアル >> ] |
[ < Graphical setup under Windows ] | [ 上へ : Installing ] | [ Command line setup > ] |
1.3 Graphical setup under macOS
Download LilyPond for macOS from
Download. The file will
be an archive called
‘lilypond-x.y.z-darwin-x86_64.tar.gz’
(where “darwin” means it’s for macOS). In the Finder, extract
this archive. Place the resulting directory
lilypond-x.y.z-darwin-x86_64
in a
permanent location; the actual folder doesn’t matter, you just
need to put it somewhere you won’t move it afterwards. For
example, you could choose your home folder.
After this, download the latest release of Frescobaldi from the project’s download page. Choose the ‘.dmg’ file.
In the Finder, double-click on the file to run the installer. At this point, you might encounter a problem:
This is because Frescobaldi is developed independently from Apple. Nevertheless, it is totally secure software, but you have to tell Apple so. To do this, you first need to click “Cancel”. After having clicked “Cancel”, open the “System Preferences” app and select “Security & Privacy”.
Then click “Open Anyway”.
This leads to a new security warning. This time, you have the option to accept. Select “Open”. Again, do not fear: Frescobaldi is completely secure for your system.
Frescobaldi is now open. Find the Preferences.
Click on “LilyPond Preferences” on the left.
Click “Edit” on the right. This opens a new window:
Click on the ‘folder’ icon. A Finder window opens. Navigate to the ‘lilypond-x.y.z-darwin-x86_64’ folder you saved earlier. Inside it, find ‘lilypond-x.y.z’, then ‘bin’ and finally ‘lilypond’.
When you press “OK”, a new security warning about LilyPond will likely appear. Again, first click “Cancel”, then enable LilyPond in the preferences, and redo the procedure to select ‘lilypond’ in the Finder.
Now click “OK” to everything until you are back to the main Frescobaldi window. Enter this simple file in source view on the left:
\version "2.24.4" { c' }
Click on the button with the LilyPond icon to compile the file, or use the Control-M keyboard shortcut. For a third time, the system will warn you about security, this time with “gs” (GhostScript). Once more, go to the System Preferences to enable the program to be executed.
Finally, the next compilation run will work and you will find a minimal score.
Congratulations! You have compiled your first music sheet with LilyPond. Now continue with the チュートリアル to learn more about LilyPond’s syntax.
[ << Installing ] | [トップ][目次][インデックス] | [ チュートリアル >> ] |
[ < Graphical setup under macOS ] | [ 上へ : Installing ] | [ チュートリアル > ] |
1.4 Command line setup
On many GNU/Linux distributions, LilyPond can be installed from the package manager. This is also the case on macOS using either MacPorts or Homebrew.
In any case, you can install LilyPond by downloading the archive from Download and unpacking it. The binaries are usable immediately after unpacking. You can run
/.../lilypond-x.y.z/bin/lilypond file.ly
(on Windows, replace the slashes ‘/’ with backslashes ‘\’).
This compiles file.ly
, and produces file.pdf
.
To test your setup, you can use this minimal file:
\version "2.24.4" { c' }
This will produce this output in ‘file.pdf’:
Now continue with the チュートリアル to learn more about LilyPond’s syntax, or see Command-line usage for more information on calling LilyPond on the command line.
[ << Installing ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < Command line setup ] | [ 上へ : Top ] | [ ファイルをコンパイルする > ] |
2. チュートリアル
この章は LilyPond に取り組むための基本的な入門書です。
2.1 ファイルをコンパイルする | ||
2.2 入力ファイルの書き方 | ||
2.3 エラーに対処する | ||
2.4 このマニュアルの読み方 |
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < チュートリアル ] | [ 上へ : チュートリアル ] | [ 入力ファイルの書き方 > ] |
2.1 ファイルをコンパイルする
このセクションでは “コンパイル”—出力ファイルを作り出すために (あなたが記述した) LilyPond 入力ファイルを処理すること—について説明します。
“コンパイル” は LilyPond フォーマットで書かれた入力ファイルから出力ファイルを作り出す処理を意味する用語です。出力ファイルには一般に PDF (印刷や閲覧用)、MIDI (演奏用)、それに PNG (オンラインで使用)があります。LilyPond 入力ファイルはシンプルなテキストファイルです。
最初の例ではシンプルな入力ファイルを示します。
\version "2.24.4" { c' e' g' e' }
出力は以下のようになります:
Note: LilyPond 入力の音符と歌詞は、 { 波括弧 } で囲まれている必要があります。さらに、あいまいさを避けるために、波括弧は行の最初か最後でない限りはスペースによって囲まれているべきです。波括弧はこのマニュアルのいくつかの例では省略されているかもしれませんが、あなた自身が作成する楽譜では忘れないでください!マニュアルの中にある例を表示する方法についての更なる情報については、このマニュアルの読み方 を参照してください。
さらに、LilyPond 入力は大文字/小文字の区別 があります。{ c d e }
は有効な入力ですが、{ C D E }
はエラーになります。
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < ファイルをコンパイルする ] | [ 上へ : チュートリアル ] | [ 簡単な記譜法 > ] |
2.2 入力ファイルの書き方
このセクションでは、あなたが入力ファイルを書き始めるのを手助けするために LilyPond の基本的な構文をいくつか紹介します。
2.2.1 簡単な記譜法 | ||
2.2.2 入力ファイルに取り組む |
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < 入力ファイルの書き方 ] | [ 上へ : 入力ファイルの書き方 ] | [ ピッチ > ] |
2.2.1 簡単な記譜法
ピッチ | ||
演奏時間 (リズム) | ||
休符 | ||
拍子記号 | ||
テンポ記号 | ||
音部記号 | ||
すべてをまとめて |
LilyPond はいくつかの記譜要素を自動的に追加します。次の例では、我々は 4 つのピッチを指定しただけですが、LilyPond が音部記号、拍子記号、リズムを加えています。
{ c' e' g' e' }
この挙動は変更されるかもしれませんが、たいていのケースではこれらの自動値は役に立ちます。
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < 簡単な記譜法 ] | [ 上へ : 簡単な記譜法 ] | [ 演奏時間 (リズム) > ] |
ピッチ
音楽用語集: pitch, interval, scale, middle C, octave, accidental
LilyPondではピッチを指定するために小文字を使います。このセクションの全ての例の音符名には、オランダ語の命名システム
(ピアノの白鍵は c-b です) を用います。しかしながら、LilyPond は英語や
‘固定ド’ (do-re-mi-...) のような、多くの異なる命名スキームをサポートしています。
他の言語での音符名 を参照してください。文字
c
から b
はミドル Cの下の‘スモール・オクターブ’を示します。'
や ,
を後ろにつけると上か下のオクターブになります。ミドル Cから始まる音階とアルペジオの例です:
{ c' d' e' f' g' a' b' c'' g c' e' g' c'' e'' g'' c''' }
音符を入力するための最も簡単な方法は \relative
モードを使用することです。このモードでは、後に続く音符は常に前の音符に最も近い場所になるという仮定によって自動的にオクターブが選択されます。つまり、音符は前の音符から 3 譜表スペース (訳者: 1 譜表スペースとは同じ音階のド→レ、レ→ミ、~の間隔のこと) 以内に置かれます。我々はまず音楽の最も基本的な要素 – 音階 (ここでは各音符は前の音符からちょうど 1 譜表スペースの位置にきます) – からはじめます。
\relative { c' d e f g a b c }
最初の音符はc'
で示されるミドル C です。一連の音符はそれぞれ前の音符と最も近い場所に置かれています –
言い換えると、最初の c
はミドル C に最も近い C です。これに前の音符に最も近い D が続きます。我々は \relative
モードだけを使ってより大きな音程を持つ旋律を作ることができます:
\relative { d' f a g c b f d }
前の例では、最初の音符 – d
に一つ '
が付いている –
はミドル C から B へ上がっていくオクターブにある D です。
最初の音符にクォート '
やカンマ ,
を付け加える (あるいは取り除く) ことによって、開始オクターブを変更することができます:
\relative { e'' c a c }
相対モードは最初のうちは混乱を引き起こす可能性がありますが、たいていの旋律を入力するのに最も容易な方法です。相対計算が実際にどのように行われるのか見てみましょう。B – ト音記号の譜面の真ん中の譜線上にあります – から開始すると、C, D, E は上方向に 3 譜表スペース以内にあり、A, G, F は下方向に 3 譜表スペース以内にあります。そのため、B の後に続く音符が C, D, E である場合、その音符は B の上に置かれ、A, G, F である場合は B の下に置かれます。
\relative { b' c % c は b よりも 1 譜表スペース上なので、c は b の上になります b d % d は 2 つ上または 5 つ下なので、d は上になります b e % e は 3 つ上または 4 つ下なので、e は上になります b a % a は 6 つ上または 1 つ下なので、a は下になります b g % g は 5 つ上または 2 つ下なので、g は下になります b f % f は 4 つ上または 3 つ下なので、f は下になります }
これらの音符のいずれかにシャープやフラットが付いたとしてもまったく同じことが起こります。相対位置の算出時に臨時記号は完全に無視されます。譜表上の他のいずれかの位置にある音符からの譜表スペース数もまったく同じです。
3 譜表スペースよりも大きな音程を加えるために、シングル クォート '
(あるいはアポストロフィ) を音符名に付け加えることによってオクターブを上げることができます。音符名にカンマ ,
を付け加えることによってオクターブを下げることができます。
\relative { a' a, c' f, g g'' a,, f' }
音符を 2 オクターブ (あるいはそれ以上) 変えるには、複数化した ''
や
,,
を使用します – しかしながら、1 つのダブル クォート "
ではなく、2 つのシングル クォートを使用するよう注意してください!
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < ピッチ ] | [ 上へ : 簡単な記譜法 ] | [ 休符 > ] |
演奏時間 (リズム)
音楽用語集: beam, duration, whole note, half note, quarter note, dotted note
音符の演奏時間は音符名の後の番号によって指定されます。全音符には 1
を、半音符には 2
を、4 分音符には 4
を、などです。連桁
(符幹と符幹をつなぐ横棒。符幹は符頭から上下にでる縦棒。符頭は音符の玉)
は自動的に追加されます。
あなたが演奏時間を指定しなかった場合、前の音符の演奏時間が次の音符の演奏時間に対しても使用されます。最初の音符のデフォルトの演奏時間は 4 分音符です。
\relative { a'1 a2 a4 a8 a a16 a a a a32 a a a a64 a a a a a a a a2 }
付点音符を作成するには、演奏時間数にドット .
を付け加えます。付点音符の演奏時間は明記されなければなりません (つまり、数字で)。
\relative { a'4 a a4. a8 a8. a16 a a8. a8 a4. }
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < 演奏時間 (リズム) ] | [ 上へ : 簡単な記譜法 ] | [ 拍子記号 > ] |
休符
音楽用語集: rest
休符は r
という名前の音符のような形で入力されます:
\relative { a'4 r r2 r8 a r4 r4. r8 }
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < 休符 ] | [ 上へ : 簡単な記譜法 ] | [ テンポ記号 > ] |
拍子記号
音楽用語集: time signature
拍子記号は \time
コマンドでセットすることができます:
\relative { \time 3/4 a'4 a a \time 6/8 a4. a \time 4/4 a4 a a a }
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < 拍子記号 ] | [ 上へ : 簡単な記譜法 ] | [ 音部記号 > ] |
テンポ記号
音楽用語集: tempo indication, metronome
テンポ指示 と メトロノーム記号 は
\tempo
コマンドでセットすることができます:
\relative { \time 3/4 \tempo "Andante" a'4 a a \time 6/8 \tempo 4. = 96 a4. a \time 4/4 \tempo "Presto" 4 = 120 a4 a a a }
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < テンポ記号 ] | [ 上へ : 簡単な記譜法 ] | [ すべてをまとめて > ] |
音部記号
音楽用語集: clef
音部記号は \clef
コマンドを使ってセットすることができます:
\relative { \clef "treble" c'1 \clef "alto" c1 \clef "tenor" c1 \clef "bass" c1 }
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < 音部記号 ] | [ 上へ : 簡単な記譜法 ] | [ 入力ファイルに取り組む > ] |
すべてをまとめて
以上の要素をすべて集めたちょっとした例をお見せします:
\relative { \clef "bass" \time 3/4 \tempo "Andante" 4 = 120 c,2 e8 c' g'2. f4 e d c4 c, r }
参照
記譜法リファレンス: ピッチを記述する, リズムを記述する, 休符を記述する, 拍子, 音部記号
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < すべてをまとめて ] | [ 上へ : 入力ファイルの書き方 ] | [ エラーに対処する > ] |
2.2.2 入力ファイルに取り組む
LilyPond 入力ファイルは多くの一般的なプログラミング言語のソース ファイルと同じようなものです。それらは大文字/小文字の区別があり、空白はたいてい無視されます。表記は波括弧 { } で囲まれ、%
または %{ .. %}
でコメントになります。
上の文章があなたにとって意味不明だとしても、心配ありません!我々がそれらの用語の意味を説明します:
-
バージョン宣言:
すべての LilyPond ファイルにはバージョン宣言を持たせるべきです。バージョン宣言は、そのファイルが LilyPond のどのバージョン用に書かれたのかを説明します。バージョン宣言は以下の例のように記述します:
\version "2.24.4"
規則上、バージョン宣言は LilyPond ファイルの先頭に配置します。
バージョン宣言は少なくとも 2 つの理由で重要です。1 つ目の理由は、LilyPond 構文が変更された場合に、入力ファイルを自動アップデートすることを可能にします。2 つ目の理由は、そのファイルをコンパイルするのに必要な LilyPond のバージョンが判断できます。
入力ファイルでバージョン宣言を省略した場合、ファイルのコンパイル中に LilyPond は警告を表示します。
-
大文字/小文字の区別:
あなたが小文字 (つまり、
a, b, s, t)
で入力するか、大文字 (つまり、A, B, S, T
) で入力するかの違いです:{ c d e }
は有効な入力ですが、{ C D E }
ではエラーになります。 -
空白は無視される:
あなたがどれくらい多くのスペース (または新しい行) を追加しても問題にならないということです。
{ c d e }
は{ c d e }
や以下と同じ意味になります:{ c4 d e }
もちろん、このような書き方をすると読みにくいです。見やすい書き方は、コード ブロックにタブか 2 つのスペースでインデントを付けることです:
{ c4 d e }
しかしながら、多くの構文要素を他の要素と区切るために必要とされます。言い換えると、常に空白を 付け加える ことは可能ですが、常に空白を 削除 できるわけではありません。空白が足りないためにエラーが発生することあり、すべての構文要素の前後に空白を入れることは有用なことです。
-
表記:
LilyPond 入力の各部分は { 波括弧 } で囲まれている必要があります。これらの波括弧は LilyPond に入力が単一の音楽表記であることを教えます。これはちょうど数学での括弧
()
のようなものです。あいまいさを避けるために、波括弧は行の先頭か終端にないかぎりスペースで囲まれているべきです。波括弧で囲まれた表記が後に続く LilyPond コマンド (‘
relative c' { … }
’ など) もまた単一の音楽表記としてカウントされます。 -
コメント:
コメントは音楽入力を読む人間のための注釈です。これは構文解析中には無視されるため、譜刻される出力には影響を与えません。コメントには 2 つのタイプがあります。パーセント記号
%
は行コメントになります。%
の後の文字は無視されます。慣習上、行コメントはそのコメントが参照するコードの上に置かれます。a4 a a a % このコメントは B を持つ行を参照します b2 b
ブロック コメントは音楽入力のある部分全体をコメントにします。
%{
と%}
で囲まれた部分は無視されます。しかしながら、ブロック コメントを ‘ネスト’ させることはできません。このことはあるブロック コメントを他のブロック コメントの中に置くことはできないということを意味します。そうした場合、最初の%}
は両方のブロック コメントを終わらせてしまいます。以下のコード断片はコメントの使用例を示しています:% 以下はキラキラ星です c4 c g' g a a g2 %{ この行と以下の音符は無視されます。 なぜなら、これらはブロック コメントの中にあるからです f4 f e e d d c2 %}
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < 入力ファイルに取り組む ] | [ 上へ : チュートリアル ] | [ 一般的なトラブルシュート Tips > ] |
2.3 エラーに対処する
時には LilyPond はあなたが予期したような出力を作り出さないことがあります。このセクションでは、あなたが遭遇するかもしれない問題を解決するのに役立つリンクをいくつか提供します。
2.3.1 一般的なトラブルシュート Tips | ||
2.3.2 いくつかの一般的なエラー |
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < エラーに対処する ] | [ 上へ : エラーに対処する ] | [ いくつかの一般的なエラー > ] |
2.3.1 一般的なトラブルシュート Tips
LilyPond で発生する問題をトラブルシュートすることは、グラフィカルインターフェイスに慣れ親しんだ人々にとっては骨の折れることかもしれません。なぜなら無効な入力ファイルが生成される可能性があるからです。問題が発生した時は、論理的なアプローチが問題を特定して解決する最善の方法です。トラブルシュートの仕方を学ぶのに役立つガイドラインが トラブルシュート で提供されています。
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < 一般的なトラブルシュート Tips ] | [ 上へ : エラーに対処する ] | [ このマニュアルの読み方 > ] |
2.3.2 いくつかの一般的なエラー
表示されるエラーメッセージだけでは解決が難しい一般的なエラーがいくつかあります。それらのエラーについて 一般的なエラー で記述されています。
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < いくつかの一般的なエラー ] | [ 上へ : チュートリアル ] | [ 省略された構成要素 > ] |
2.4 このマニュアルの読み方
このセクションではドキュメントを効率的に読む方法を示し、さらに、オンライン版で利用できる有用な対話的機能をいくつか紹介します。
2.4.1 省略された構成要素 | ||
2.4.2 クリック可能な例 | ||
2.4.3 マニュアルの概要 |
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < このマニュアルの読み方 ] | [ 上へ : このマニュアルの読み方 ] | [ クリック可能な例 > ] |
2.4.1 省略された構成要素
入力ファイルに取り組む で見てきたように、LilyPond 入力は { } マークか
‘relative { … }
’
で囲まれていなければなりません。このマニュアルの残りの部分では、いくつかの短い例はこのことを省略しています。このような例を複製するためにあなたは表示されている入力をコピーできますが、あなたは入力ファイルの中で、
{
と {
の間にペーストしてください。
{ …例がここに来ます… }
さらに、すべての LilyPond ファイルは \version
宣言を持つべきであるということを思い出してください。マニュアルの中の例はコードの断片であり、ファイルではないため、\version
宣言は省略されています。しかしながら、あなたは入力ファイルの中にバージョン宣言を記述すべきです。
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < 省略された構成要素 ] | [ 上へ : このマニュアルの読み方 ] | [ マニュアルの概要 > ] |
2.4.2 クリック可能な例
Note: この機能は HTML マニュアルでのみ利用可能です。
多くの人々はすでにあるプログラムを試したり、いじったりすることでプログラムを学びます。これは LilyPond でも可能です。このマニュアルの HTML バージョンの中にある画像をクリックすると、画像を生成するために使用された正確な LilyPond 入力を見ることができます。以下の画像を試してみてください:
‘ly コード断片’ セクションにある記述をカット&ペーストすることによって、あなたは LilyPond を経験するための開始テンプレートを入手できます。まったく同じもの (線の太さなどもすべて同じ) を出力させるには、“Start cut-&-pastable section” からファイルの最後までをコピーしてください。
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 一般的な記譜法 >> ] |
[ < クリック可能な例 ] | [ 上へ : このマニュアルの読み方 ] | [ 一般的な記譜法 > ] |
2.4.3 マニュアルの概要
LilyPond にはたくさんのドキュメントがあります。新しいユーザは時々ドキュメントのどこを読むべきなのか混乱し、時には必須の部分を読み飛ばしてしまいます。
Note: ドキュメントの重要な部分を読み飛ばさないでください。その後のセクションを理解することがはるかに難しくなります。
- LilyPond に取り組もうとする前: 学習マニュアルの チュートリアル と 一般的な記譜法 を読んでください。理解できない音楽用語に遭遇した場合は、 音楽用語集 で調べてください。
- 楽譜全体を記述しようとする前: 学習マニュアルの 基礎となるコンセプト を読んでください。読み終わった時、 記譜法リファレンス の関係のあるセクションを読もうと思うかもしれません。
- デフォルトの出力を変更しようとする前: 学習マニュアルの 出力を調整する を読んでください。
- 大きなプロジェクトに取りかかる前: 使用方法の LilyPond 入力ファイルの記述に対する提案 を読んでください。
[ << チュートリアル ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < マニュアルの概要 ] | [ 上へ : Top ] | [ 単一譜表表記 > ] |
3. 一般的な記譜法
この章では、チュートリアル内の下記素材で、一般的な音楽記譜法による美しい楽譜を作成する方法を説明します。
3.1 単一譜表表記 | ||
3.2 同時に演奏する複数の音符 | ||
3.3 歌曲 | ||
3.4 仕上げ |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 一般的な記譜法 ] | [ 上へ : 一般的な記譜法 ] | [ 小節線と小節チェック > ] |
3.1 単一譜表表記
このセクションはでは 1 つの譜表の上にある 1 つの声部のために使用される一般的な記譜法を紹介します。
3.1.1 小節線と小節チェック | ||
3.1.2 ピッチと調号 | ||
3.1.3 タイとスラー | ||
3.1.4 アーティキュレーションと強弱記号 | ||
3.1.5 テキストを追加する | ||
3.1.6 自動連桁と手動連桁 | ||
3.1.7 高度なリズム コマンド |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 単一譜表表記 ] | [ 上へ : 単一譜表表記 ] | [ 小節線 > ] |
3.1.1 小節線と小節チェック
小節線 | ||
小節チェック |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 小節線と小節チェック ] | [ 上へ : 小節線と小節チェック ] | [ 小節チェック > ] |
小節線
単線の小節線は自動的に挿入されるので、手動で追加する必要はありません。他の種類の小節線は \bar "||"
で複縦線、\bar "|."
で終止線、のように \bar
を使って追加します。
小節線のすべてのリストは
小節線 を見てください。
\relative { g'1 e1 \bar "||" c2. c'4 \bar "|." }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 小節線 ] | [ 上へ : 小節線と小節チェック ] | [ ピッチと調号 > ] |
小節チェック
必須ではありませんが、入力コードの中で 小節チェック を挿入してどこに小節線を置こうとしているのかを示すべきです。小節チェックは挿入するには |
を入力します。小節チェックがあると、プログラムはあなたが各小節に入力した演奏時間が正しい長さになっているかを検証することができます。さらに、小節チェックは要素を整理する助けとなるため、
入力コードが読みやすくなります。
\relative { g'1 | e1 | c2. c' | g4 c g e | c4 r r2 | }
上の例のコードをコンパイルすると、コンソールに以下の警告が出力されます。
warning: barcheck failed at: 1/2 g'1 | e1 | c2. c' | g4 c g e | c4 r r2 |
この単純な例では長さの間違いは明確ですが、コンソール出力の警告は 3 小節目に 4
が欠けていることが効果的にわかります。
参照
記譜法リファレンス: 小節と小節番号のチェック
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 小節チェック ] | [ 上へ : 単一譜表表記 ] | [ ピッチ変更 > ] |
3.1.2 ピッチと調号
ピッチ変更 | ||
調号 | ||
警告: 調号とピッチ |
Note: 新しいユーザはしばしば LilyPond の調号の使い方を誤解します。 – このページの最後にある警告を読んでください。
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < ピッチと調号 ] | [ 上へ : ピッチと調号 ] | [ 調号 > ] |
ピッチ変更
音楽用語集: sharp, flat, double sharp, double flat, accidental
LilyPond の音符名はピッチを示しています。
例えば、c
は調号に関係なく常に C-ナチュラル を意味します。
多くの言語では、音符名は C メジャー / A マイナースケールのダイアトニックステップを参照する基準音、たとえば d
、そしてこの基準のピッチに対する
変更 を示すサフィックスで構成されます。音符名のためのデフォルトの入力言語はオランダ語です。シャープ は音符名に is
を付け加えることによって作られ、フラット は es
を付け加えることによって作られます。予想しているかもしれませんが、ダブル シャープ やダブル フラット は isis
や eses
を付け加えることによって作られます。この構文はドイツ語やオランダ語のような北欧とドイツの言語での命名規則から生まれました。
音符名 に対して他の命名スキームを使うには、
他の言語での音符名 を参照してください。
\relative { cis''4 ees fisis, aeses }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < ピッチ変更 ] | [ 上へ : ピッチと調号 ] | [ 警告 調号とピッチ > ] |
調号
音楽用語集: key signature, major, minor
調号 はコマンド \key
とそれに続くピッチと
\major
または \minor
によってセットされます。
\relative { \key d \major d'4 fis a c | \bar "||" \key c \minor c,4 ees g b | }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 調号 ] | [ 上へ : ピッチと調号 ] | [ タイとスラー > ] |
警告: 調号とピッチ
音楽用語集: accidental, key signature, pitch, flat, natural, sharp, transposition, Pitch names.
LilyPond は音楽の内容と印刷表現を区別します。d4 e fis2
のような入力は、音楽の内容としてピッチと長さを定義します。調号 は印刷表現の一部です。また、調号は音符の印刷表現のルールを設定します。LilyPond は 臨時記号 を譜刻するかどうかを決定するためにピッチと調号 を比較します。
コマンド \key
は印刷表現に作用する 調号 を設定しますが、
c
のような入力中の音符に割り当てられたピッチは変更 しません。
以下の例では:
\relative { \key d \major cis''4 d e fis }
臨時記号を譜刻されている音符はありません。しかしながら、あなたは入力ファイルで is
を付け加えて cis
や
fis
などとタイプしなければなりません。
コード b
は “譜表の最初の線 (一番上の線) のすぐ下に黒い点を譜刻せよ”
という意味ではありません。そうではなく、“ピッチが B ナチュラルである音符がある” という意味です。A フラット メジャーの調では、b
には臨時記号が付きます:
\relative { \key aes \major aes'4 c b c }
あなたがピアノを弾いているとします。黒鍵を押したいのであれば、音符名に -is
や -es
を付ける必要があります。
すべての変化を明示的に付け加えることは入力時にちょっとした努力を要するかもしれません。しかしながら、移調がより容易になる、異なる規約に対応して臨時記号を譜刻できるという利点があります。臨時記号がどのように異なる規則に対応して譜刻されるのかについてのいくつかの例は、 自動臨時記号 を参照してください。
参照
記譜法リファレンス: 他の言語での音符名, 臨時記号, 自動臨時記号, 調号
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 警告 調号とピッチ ] | [ 上へ : 単一譜表表記 ] | [ タイ > ] |
3.1.3 タイとスラー
タイ | ||
スラー | ||
フレージング スラー | ||
警告: スラー vs. タイ |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < タイとスラー ] | [ 上へ : タイとスラー ] | [ スラー > ] |
タイ
音楽用語集: tie
タイはタイでつながる2つの音符の最初の音符にチルダ ~
を付加することによって作成されます。
\relative { g'4~ g c2~ | c4~ c8 a~ a2 | }
タイでつながれた音符のように、ピッチが変わらない場合、後のピッチを省略し、長さだけを指定できます。
\relative { g'4~ 4 c2~ | 4~ 8 a~ 2 | }
この省略形はピッチが変わらずにリズムが変わる場所で有用ですが、長さを指定しないピッチにはスペースが続くということと、長さだけを指定した場合でも1つの音符として解釈されるということを覚えてください。
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < タイ ] | [ 上へ : タイとスラー ] | [ フレージング スラー > ] |
スラー
音楽用語集: slur
スラーは多くの音符にわたって描かれる曲線です。スラーの開始音符と終了音符にはそれぞれ (
と )
を付加します。(
は開始音符の後に記入することに注意してください。
\relative { d''4( c16) cis( d e c cis d) e( d4) }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < スラー ] | [ 上へ : タイとスラー ] | [ 警告 スラー vs. タイ > ] |
フレージング スラー
長い フレーズ を示すためのスラーは \(
と \)
によって挿入することができます。あなたはスラーとフレージング スラーを同時に使うことができます。
\relative { g'4\( g8( a) b( c) b4\) }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < フレージング スラー ] | [ 上へ : タイとスラー ] | [ アーティキュレーションと強弱記号 > ] |
警告: スラー vs. タイ
音楽用語集: articulation, slur, tie
スラー は タイ のように見えますが、意味が異なります。タイは単純に最初の音符をより長くするものであり、同じ音程の音符のペアに対してのみ使用することができます。スラーは複数の音符による アーティキュレーション (節、表現) を表していて、より大きな音符のグループに対して使用することができます。スラーとタイはネストさせることができます。
\relative { c''4(~ c8 d~ 4 e) }
参照
記譜法リファレンス: タイ, スラー, フレージング スラー
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 警告 スラー vs. タイ ] | [ 上へ : 単一譜表表記 ] | [ アーティキュレーション > ] |
3.1.4 アーティキュレーションと強弱記号
アーティキュレーションと強弱記号は、音符の後に特別なコードを追加することで付加することができます。
アーティキュレーション | ||
運指法記号 | ||
強弱記号 |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < アーティキュレーションと強弱記号 ] | [ 上へ : アーティキュレーションと強弱記号 ] | [ 運指法記号 > ] |
アーティキュレーション
音楽用語集: articulation
一般的な アーティキュレーション はダッシュ -
と単一文字を使うことで音符に付け加えることができます:
\relative { c''4-^ c-+ c-- c-! c4-> c-. c2-_ }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < アーティキュレーション ] | [ 上へ : アーティキュレーションと強弱記号 ] | [ 強弱記号 > ] |
運指法記号
音楽用語集: fingering
同様に、運指法 はダッシュ (-
) と譜刻する数字を使うことで音符に付け加えることができます:
\relative { c''4-3 e-5 b-2 a-1 }
通常、アーティキュレーションと運指法は自動的に譜刻されます。しかしながら、あなたはダッシュ (-
) を ^
(上へ) または
_
(下へ) に置き換えることによって方向を指定することができます。さらに、あなたは同じ音符に複数のアーティキュレーションを使用することもできます。しかしながらたいていの場合は、LilyPond にアーティキュレーションの方向を決定させるのが一番です。
\relative { c''4_-^1 d^. f^4_2-> e^-_+ }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 運指法記号 ] | [ 上へ : アーティキュレーションと強弱記号 ] | [ テキストを追加する > ] |
強弱記号
音楽用語集: dynamics, crescendo decrescendo
強弱記号 は音符にバック スラッシュ付きのマークを付け加えることによって作成されます:
\relative { c''4\ff c\mf c\p c\pp }
クレッシェンド と デクレッシェンド はコマンド \<
と
\>
によって開始されます。次の強弱記号 – 例えば、\f
– が (デ)クレッシェンドを終わらせます。コマンド \!
を使って終わらせることもできます:
\relative { c''4\< c\ff\> c c\! }
参照
記譜法リファレンス: アーティキュレーションと装飾, 運指の指示, 強弱記号
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 強弱記号 ] | [ 上へ : 単一譜表表記 ] | [ 自動連桁と手動連桁 > ] |
3.1.5 テキストを追加する
テキストをあなたの楽譜に追加することができます:
c''2^"espr" a'_"legato"
追加のフォーマット指定を \markup
コマンドで追加することができます:
c''2^\markup { \bold espr } a'2_\markup { \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
参照
記譜法リファレンス: テキストを記述する
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < テキストを追加する ] | [ 上へ : 単一譜表表記 ] | [ 高度なリズム コマンド > ] |
3.1.6 自動連桁と手動連桁
音楽用語集: beam
すべての 連桁 は自動的に描かれます:
\relative { a'8 ais d ees r d c16 b a8 }
あなたが自動連桁を好まない場合、手動で上書きすることもできます。ある箇所の連桁を修正するには、連桁を付ける最初の音符に [
を、最後の音符に ]
を付け加えます。[
は連桁の最初の音符の後に記入することに注意してください。
\relative { a'8[ ais] d[ ees r d] c16 b a8 }
もしあなたが楽譜全体あるいは一部で自動連桁を Off にしたいのなら、自動連桁を Off にするにはコマンド \autoBeamOff
を、再度自動連桁を On にするには \autoBeamOn
を使用します。
\relative { \autoBeamOff a'8 c b4 d8. c16 b4 | \autoBeamOn a8 c b4 d8. c16 b4 | }
参照
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 自動連桁と手動連桁 ] | [ 上へ : 単一譜表表記 ] | [ 部分小節 > ] |
3.1.7 高度なリズム コマンド
部分小節 | ||
連符 | ||
装飾小音符 |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 高度なリズム コマンド ] | [ 上へ : 高度なリズム コマンド ] | [ 連符 > ] |
部分小節
音楽用語集: anacrusis
ピックアップ (訳者: 本来の拍子以外の拍子を持つ小節のこと)
(または弱拍) はキーワード \partial
によって挿入されます。この後に演奏時間が続きます:
\partial 4
は 4 分音符のピックアップであり、\partial 8
は 8 分音符のピックアップです。
\relative { \partial 8 f''8 | c2 d | }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 部分小節 ] | [ 上へ : 高度なリズム コマンド ] | [ 装飾小音符 > ] |
連符
音楽用語集: note value, triplet
連符 は \tuplet
キーワードによって作成されます。これは 2 つの引数をとります: 分数と楽譜の断片です。分数の分母は通常の音符の数で、分子は連符の音符の数です。3 連符は 2 つの音符の代わりに 3 つの音符を演奏しますので、連符
の分数は 3/2 となります。
\relative { \tuplet 3/2 { f''8 g a } \tuplet 3/2 { c8 r c } \tuplet 3/2 { f,8 g16[ a g a] } \tuplet 3/2 { d4 a8 } }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 連符 ] | [ 上へ : 高度なリズム コマンド ] | [ 同時に演奏する複数の音符 > ] |
装飾小音符
音楽用語集: grace notes, acciaccatura, appoggiatura
装飾小音符 は \grace
コマンドによって作成されますが、キーワード \appoggiatura
や \acciaccatura
による接頭音楽表記によっても作成されます:
\relative { c''2 \grace { a32 b } c2 | c2 \appoggiatura b16 c2 | c2 \acciaccatura b16 c2 | }
参照
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 装飾小音符 ] | [ 上へ : 一般的な記譜法 ] | [ 音楽表記についての説明 > ] |
3.2 同時に演奏する複数の音符
このセクションでは同時に複数の音符 – 複数の楽器、単一の楽器に対する複数の譜 (すなわちピアノ)、和音 – を持つ方法について紹介します。
楽譜の中での多声は楽曲の中にある複数の声部を参照します。LilyPond の中での多声は同じ譜表上にある複数の声部を参照します。
3.2.1 音楽表記についての説明 | ||
3.2.2 複数の譜 | ||
3.2.3 譜表グループ | ||
3.2.4 音符を組み合わせて和音にする | ||
3.2.5 単一譜表での多声 |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 同時に演奏する複数の音符 ] | [ 上へ : 同時に演奏する複数の音符 ] | [ 数学的表記との類似 > ] |
3.2.1 音楽表記についての説明
数学的表記との類似 | ||
同時進行する音楽表記: 複数の譜 | ||
同時進行する音楽表記: 単一の譜表 |
LilyPond 入力ファイルの中では、音楽は 音楽表記 によって表されます。単一の音符は 1 つの音楽表記になります:
a'4
表記を波括弧で括ることによって 複合音楽表記 が作成されます。2 つの音符を持つ複合音楽表記を作成しました:
\relative { a'4 g4 }
波括弧の中にある音楽表記 (例えば、いくつかの音符) のグループはそれらがシークエンスであるということを意味しています (つまり、それぞれの音符は前の音符に続くということです)。もう 1 つ音楽表記の結果を示します:
\relative { { a'4 g } f4 g }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 音楽表記についての説明 ] | [ 上へ : 音楽表記についての説明 ] | [ 同時進行する音楽表記 複数の譜 > ] |
数学的表記との類似
このメカニズムは数学式と似ています: 大きな式は小さな式を組み合わせることによって作成されます。そのような式は表記と呼ばれ、それらの定義は再帰的なのであなたは任意に複雑で大きな表記を作ることができます。例えば、
1 1 + 2 (1 + 2) * 3 ((1 + 2) * 3) / (4 * 5)
これは表記のシークエンスであり、各表記は次の (より大きな) 表記に組み込まれています。最も単純な表記は数であり、より大きな表記は演算子 (+
, *
,
/
など) と括弧を組み合わせることによって作成されます。数学式と同様に、音楽表記も任意の深さにネストさせることができ、それは多声楽譜のような複雑な音楽のために必要なことです。
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 数学的表記との類似 ] | [ 上へ : 音楽表記についての説明 ] | [ 同時進行する音楽表記 単一の譜表 > ] |
同時進行する音楽表記: 複数の譜
音楽用語集: polyphony
このテクニックは 多声音楽 に対して有用です。複数の声部や複数の譜を持つ音楽を入力するために、音楽表記を並列に組み合わせます。2 つの声部を同時に演奏すべきであるということを示すには、単純に音楽表記を同時進行するよう組み合わせて入力します。‘同時進行’ の音楽表記は <<
と >>
で音楽表記を囲い込むことによって形成されます。以下の例では、3 つのシークエンス (すべてのシークエンスはそれぞれ 2 つの音符を保持しています) が同時進行するように組み合わされています:
<< \relative { a'2 g } \relative { f'2 e } \relative { d'2 b } >>
入力の各レベルに対して異なる量のスペースをインデントとして与えていることに注意してください。LilyPond は行の先頭にどれくらい多く (あるいは少なく) のスペースがあるかを気にしません。しかしながら、上の例のように LilyPond コードにインデントを入れることによって人間にとってはずっと読みやすくなります。
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 同時進行する音楽表記 複数の譜 ] | [ 上へ : 音楽表記についての説明 ] | [ 複数の譜 > ] |
同時進行する音楽表記: 単一の譜表
楽曲の中にある譜の数を決定するために、LilyPond は最初の音楽表記の始まりを調べます。それが単一の音符であった場合は譜表が 1 つ、同時進行する表記であった場合は譜表が複数になります。以下の例は複雑な表記を持ちますが、単一の音符で始まっているため譜表も 1 つです。
\relative { c''2 <<c e>> | << { e2 f } { c2 <<b d>> } >> | }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 同時進行する音楽表記 単一の譜表 ] | [ 上へ : 同時に演奏する複数の音符 ] | [ 譜表グループ > ] |
3.2.2 複数の譜
音楽表記についての説明 で見てきたように、LilyPond 入力ファイルは音楽表記によって構築されています。複数の同時進行の音楽表記で始まる楽譜の場合、LilyPond は複数の譜を作成します。しかしながら、各譜表を明示的に作成すると何が起こるかより容易に見て取ることができます。
複数の譜表を譜刻するには、1 つの譜表を形成する音楽の各部分の前に
\new Staff
を付け加えます。これらの Staff
要素は <<
と >>
で並列に組み合わされます:
<< \new Staff { \clef "treble" c''4 } \new Staff { \clef "bass" c4 } >>
コマンド \new
は 1 つの ‘記譜コンテキスト’ を導入します。記譜コンテキストは音楽的イベント (音符や \clef
コマンドなど) が解釈される環境です。単純な楽曲では、そのような記譜コンテキストは自動的に作成されます。より複雑な楽曲ではコンテキストを明示的に記述することが望ましいです。
コンテキストにはいくつかのタイプがあります。Score
, Staff
, Voice
は旋律記譜を扱います。一方、Lyrics
は歌詞テキストをセットし、ChordNames
はコード ネームを譜刻します。
構文という観点で見ると、\new
を音楽表記の先頭に付け加えることによってより大きな音楽表記が作成されます。これは数学でのマイナス符号に似ています。数式 (4+5) は数学表記であり、-(4+5) はより大きな数学表記です。
ある譜表に挿入された拍子記号はデフォルトで他のすべての譜に影響を与えます。一方で、ある譜表に挿入された調号は他のすべての譜に影響を与えません。記号によってデフォルトの振る舞いが異なるのは、移調する楽器を扱う楽譜の方が複合リズム (polyrhythmic) の楽譜よりも一般的だからです。
<< \new Staff { \clef "treble" \key d \major \time 3/4 c''4 } \new Staff { \clef "bass" c4 } >>
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 複数の譜 ] | [ 上へ : 同時に演奏する複数の音符 ] | [ 音符を組み合わせて和音にする > ] |
3.2.3 譜表グループ
ピアノ譜は ブレース でつながれた 2 つの譜表として譜刻されます。そのような譜表を譜刻することは 複数の譜 での多声の例に似ています。しかしながら、今度は表記全体が PianoStaff
の中に挿入されます:
\new PianoStaff << \new Staff … \new Staff … >>
小さな例を挙げます:
\new PianoStaff << \new Staff \relative { \time 2/4 c''4 e | g g, | } \new Staff \relative { \clef "bass" c4 c' | e c | } >>
ピアノ譜以外の譜表グループ化はオーケストラ譜向けには \new GrandStaff
で、ボーカル譜向けには \new ChoirStaff
で導入されます。これらの譜表グループはそれぞれタイプの異なるコンテキストを形成し、各システム
(訳者: 楽譜 1 行分のこと。ピアノ譜では右手と左手の 2 つの譜表ペアでの 1 行が
1 システムになります) の左端にブレースを付けて、さらに、小節線の高さを制御します。
参照
記譜法リファレンス: Keyboard and other multi-staff instruments, 譜を表示する
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 譜表グループ ] | [ 上へ : 同時に演奏する複数の音符 ] | [ 単一譜表での多声 > ] |
3.2.4 音符を組み合わせて和音にする
Music Glossary: chord
音符を << ... >>
で囲んでそれらの音符が同時進行であることを示すことによって、それらの音符を和音として組み合わせる方法について見てきました。しかしながら、和音であることを示すための通常の方法は音符を < ... > (山括弧)
で囲みます。和音の中にある音符はすべて同じ演奏時間でなければならず、その演奏時間は山括弧を閉じた後に置かれなければならないということに注意してください。
\relative { r4 <c'' e g> <c f a>2 }
和音は単一の音符とほとんど同じであると考えてください: 単一の音符に付け加えられるものはほとんどすべて和音にも付け加えられ、付け加えるものはすべて山括弧の外に付け加えられなければなりません。例えば、あなたは連桁やタイなどのマークをコードに組み合わせることができます。それらは山括弧の外側に置かれなければなりません。
\relative { r4 <c'' e g>~ <c f a>2 | <c e g>8[ <c f a> <c e g> <c f a>] <c e g>8\>[ <c f a> <c f a> <c e g>]\! | r4 <c e g>8.\p <c f a>16( <c e g>4-. <c f a>) | }
参照
記譜法リファレンス: 和音の音符
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 音符を組み合わせて和音にする ] | [ 上へ : 同時に演奏する複数の音符 ] | [ 歌曲 > ] |
3.2.5 単一譜表での多声
LilyPond での多声音楽はまだ説明していないコンセプトを用いますので、多声音楽についてここでは説明しません。以下のセクションで多声音楽で用いるコンセプトを紹介し、多声音楽について説明します。
参照
学習マニュアル: 音楽を保持するボイス
記譜法リファレンス: 同時進行する音符
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 単一譜表での多声 ] | [ 上へ : 一般的な記譜法 ] | [ 簡単な歌曲を作成する > ] |
3.3 歌曲
このセクションでは声楽とシンプルな歌曲譜についての紹介を行います。
3.3.1 簡単な歌曲を作成する | ||
3.3.2 歌詞を旋律に揃える | ||
3.3.3 複数の譜への歌詞 |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 歌曲 ] | [ 上へ : 歌曲 ] | [ 歌詞を旋律に揃える > ] |
3.3.1 簡単な歌曲を作成する
音楽用語集: lyrics
童謡 Girls and boys come out to play の冒頭部分の旋律です:
\relative { \key g \major \time 6/8 d''4 b8 c4 a8 | d4 b8 g4 }
\addlyrics
キーワードで組み合わせることによって、歌詞 をこれらの音符にセットすることができます。歌詞は音節ごとにスペースで区切って入力します。
<< \relative { \key g \major \time 6/8 d''4 b8 c4 a8 | d4 b8 g4 } \addlyrics { Girls and boys come out to play, } >>
二重の山括弧 <<…>>
が楽曲全体を囲っていて、音楽と歌詞が同時進行することを示しています。
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 簡単な歌曲を作成する ] | [ 上へ : 歌曲 ] | [ 複数の譜への歌詞 > ] |
3.3.2 歌詞を旋律に揃える
音楽用語集: melisma, extender line
童謡の次の行は The moon doth shine as bright as day です。これを前の例に付け加えてみましょう:
<< \relative { \key g \major \time 6/8 d''4 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 は 1 つの音符ではなく 2 つの音符に割り当てられるべきです。これは メリスマ と呼ばれ、歌詞の音節 1 つを複数の音符に割り当てます。音節を複数の音符に広げる方法はいくつかあります。最も簡単な方法は割り当てられる音符にスラーを付けることです。詳細は タイとスラー を参照してください。
<< \relative { \key g \major \time 6/8 d''4 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 { \key g \major \time 6/8 d''4 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 { \key g \major \time 6/8 d''4 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 { \key g \minor \time 3/2 g'2 a bes | bes2( a) b2 | c4.( bes8 a4. g8 fis4.) g8 | fis1 } \addlyrics { When I am laid, am laid __ in earth, } >>
今までの例には複数の音節を持つ単語はありませんでした。通常、複数の音節を持つ単語は音節ごとに 1 つの音符に分割され、音節間はハイフンで結ばれます。ハイフンは 2 つのダッシュとして入力し、その結果として音節の間にハイフンが描かれます。今度の例では歌詞に複数の音節を持つ単語が含まれ、我々が今まで歌詞を音符に揃える方法について学んだことがすべて含まれています。
<< \relative { \key g \major \time 3/4 \partial 4 d'4 | g4 g a8( b) | g4 g b8( c) | d4 d e | c2 } \addlyrics { A -- way in a __ man -- ger, no __ crib for a bed, } >>
ある歌詞では – 特にイタリア語では – 反対のことが求められます:
複数の音節を 1 つの音符にセットします。これは音節を単一のアンダスコア _
(スペース無し) でリンクさせるか、クォートで囲むことによって達成されます。今度の例は Rossini の Figaro からで、Largo al factotum の al は
Largo の go と同じ音符で歌われなければなりません:
<< \relative { \clef "bass" \key c \major \time 6/8 c'4.~ 8 d b | c8([ d]) b c d b | c8 } \addlyrics { Lar -- go_al fac -- to -- tum del -- la cit -- tà } >>
参照
記譜法リファレンス: Vocal music
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 歌詞を旋律に揃える ] | [ 上へ : 歌曲 ] | [ 仕上げ > ] |
3.3.3 複数の譜への歌詞
\addlyrics
を用いた簡単なアプローチは歌詞を複数の譜表の下に置くために使用することができます。ここで、Handel の Judas Maccabæus から例を挙げます:
<< \relative { \key f \major \time 6/8 \partial 8 c''8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ 4 } \addlyrics { Let flee -- cy flocks the hills a -- dorn, __ } \relative { \key f \major \time 6/8 \partial 8 r8 | r4. r4 c'8 | a'8([ g]) f f([ e]) d | e8([ d]) c bes'4 } \addlyrics { Let flee -- cy flocks the hills a -- dorn, } >>
この簡単な例よりも複雑な楽譜では、変数を使って楽譜構造を音符と歌詞から分離したほうが良いです。このことは 変数を用いて楽曲を編成する で議論されています。
参照
記譜法リファレンス: Vocal music
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 複数の譜への歌詞 ] | [ 上へ : 一般的な記譜法 ] | [ 変数を用いて楽曲を編成する > ] |
3.4 仕上げ
このセクションはチュートリアルの最終セクションです。単純な楽譜に仕上げを加える方法を示し、このマニュアルの残りの部分についての紹介を行います。
3.4.1 変数を用いて楽曲を編成する | ||
3.4.2 タイトルを付け加える | ||
3.4.3 絶対音符名 | ||
3.4.4 このチュートリアルの後にすべきこと |
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 仕上げ ] | [ 上へ : 仕上げ ] | [ タイトルを付け加える > ] |
3.4.1 変数を用いて楽曲を編成する
これまで議論してきたすべての要素を組み合わせてより大きなファイルを作成すると、音楽表記はずっと大きくなります。多くの譜を持つ多声音楽では、入力ファイルはとても混乱しやすくなります。変数 を使って混乱を避けることができます。
変数 (これは識別子やマクロとも言えます) を使うことによって、音楽表記の複雑さを打破することができます。変数は以下のように割り当てられます:
namedMusic = { … }
音楽表記 namedMusic
の内容は名前の前にバックスラッシュを置くことによって
(\namedMusic
、これはまさに LilyPond の標準コマンドと同様です) 後で使用することができます。
violin = \new Staff { \relative { a'4 b c b } } cello = \new Staff { \relative { \clef "bass" e2 d } } { << \violin \cello >> }
慣習的に、変数の名前にはアルファベットのみを用います。詳細な情報は、 ファイル構造 を参照してください。
変数はメインの音楽表記の 前 に定義されていなければなりません。しかしながら定義後は必要とされる場所で何度でも使用できます。変数の定義後は、その変数を他の変数定義の中で使うことも可能であり、 楽曲のある部分が何度もリピートしている場合に入力の手間を省くことができます。
tripletA = \relative { \tuplet 3/2 { c'8 e g } } barA = { \tripletA \tripletA \tripletA \tripletA } { \barA \barA }
変数を入力ファイルの中にある他の多くのオブジェクト タイプに対しても使用できます。 例えば以下のようにです:
myWidth = 60 % \paper 変数に渡す数字 (単位は mm) myName = "Wendy" % マークアップに渡す文字列 aFivePaper = \paper { #(set-paper-size "a5") }
変数の内容次第では、変数は他の場所で使用することができます。以下の例は上の例の変数を使用しています:
\paper { \aFivePaper line-width = \myWidth } { c4^\myName }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 変数を用いて楽曲を編成する ] | [ 上へ : 仕上げ ] | [ 絶対音符名 > ] |
3.4.2 タイトルを付け加える
タイトル、作曲者、作品番号、それに類似の情報は
\header
ブロックの中に挿入されます。これはメインの音楽表記の外に存在します。普通、\header
ブロックはバージョン番号の下に置かれます。
\version "2.24.4" \header { title = "Symphony" composer = "Me" opus = "Op. 9" } { … music … }
ファイルが処理されると、タイトルと作曲者は楽譜の上に譜刻されます。タイトルについての更なる情報は、 Creating titles headers and footers を参照してください。
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < タイトルを付け加える ] | [ 上へ : 仕上げ ] | [ このチュートリアルの後にすべきこと > ] |
3.4.3 絶対音符名
これまで我々はピッチを定義するのに \relative
を使ってきました。これは通常たいていの音楽を入力するのに最も早い方法です。\relative
無しだとピッチは絶対モードで解釈されます。
LilyPond はすべてのピッチを絶対値として扱います。c'
は常にミドル C を意味し、b
は常にミドル C の 1 音下の音符を意味し、g,
は常にヘ音記号の譜表の最下段の譜線上にある音符を意味します。
{ \clef "bass" c'4 b g, g, | g,4 f, f c' | }
ト音記号に旋律を書く場合は多くのクォート '
記号が使用されます。モーツァルトからの以下の楽譜の断片について考えてみます:
{ \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 | }
コマンド \fixed
に参照用ピッチを続けることにより、共通のオクターブ記号を 1 回だけ示すようにすることができます。
\fixed c'' { \key a \major \time 6/8 cis8. d16 cis8 e4 e8 | b,8. cis16 b,8 d4 d8 | }
\relative
を使うと、
前の例は 3 譜表スペースより大きいメロディーの動きが無いので、
オクターブ記号が不要になります:
\relative { \key a \major \time 6/8 cis''8. d16 cis8 e4 e8 | b8. cis16 b8 d4 d8 | }
\relative
モードを使っているときにあなたがオクターブ記号 ('
や
,
) を付け間違えた場合、すぐにわかります
– 多くの音符が間違ったオクターブに譜刻されます。絶対モードを使っているときに付け間違いをした場合、はっきりとせず、見つけにくいです。
しかしながら、絶対モードは大きな音程を持つ音楽に対しては有用であり、LilyPond ファイルをコンピュータで生成する場合は非常に有用です。メロディーの断片をコピー&ペーストした場合、絶対モードは元のオクターブが維持されます。
時には音楽はより複雑な方法でアレンジされます。\relative
の中で \relative
を使うと、外と中の相対部分は独立しています:
\relative { c'4 \relative { f'' g } c }
\relative
の中で絶対モードを使うには、\fixed c { … }
の中に絶対モードの音楽を置きます。絶対モードのピッチは相対モードのオクターブに影響しません:
\relative { c'4 \fixed c { f'' g'' } c | c4 \fixed c'' { f g } c }
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 基礎となるコンセプト >> ] |
[ < 絶対音符名 ] | [ 上へ : 仕上げ ] | [ 基礎となるコンセプト > ] |
3.4.4 このチュートリアルの後にすべきこと
このチュートリアルを終えた後、あなたは楽譜を 1 つ、2 つ書いてみるべきです。テンプレート にある楽譜の 1 つに音符を付け加えることから始めてください。あなたがこのチュートリアルではカバーされなかった記譜法を必要とする場合、 音楽記譜法 で始まる記譜法リファレンスを参照してください。あなたがテンプレートではカバーされていない楽器のアンサンブルのために楽譜を書こうとする場合、テンプレートを拡張する を参照してください。
あなたがいくつかの短い楽譜を書き終えた後は、学習マニュアルの残りの部分 (3~5 章) を読んでください。もちろん、今それらを読んでも何も問題はありません!しかしながら、学習マニュアルの残りの部分はあなたが LilyPond 入力に馴れていると仮定しています。あなたはそれらの章を今すぐ一読し、もっと経験を積んだ後に読み直すことを望むかもしれません。
このチュートリアルと学習マニュアルの残りの部分では、各セクションの最後に 参照 があり、他のセクションを参照してます: 初めて本書を読むときはこれらの参照を追うべきではありません。あなたが学習マニュアルをすべて読み終えたとき、いくつかのセクションを読み返し、さらに参照を追おうと思うかもしれません。
マニュアルの概要 をまだ読んでいないのなら、それを 読んでください。LilyPond についての情報は多いため、新しく LilyPond を始める人はしばしば、必要な情報を得るためにどこを読むべきかわからないことがあります。5 分間使ってマニュアルの概要を注意深く読めば、あなたは何時間も見当違いの場所を読むフラストレーションを持たずに済ますことができるでしょう!
[ << 一般的な記譜法 ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < このチュートリアルの後にすべきこと ] | [ 上へ : Top ] | [ LilyPond 入力ファイルの仕組み > ] |
4. 基礎となるコンセプト
チュートリアルではシンプルなテキスト ファイルから美しい楽譜を譜刻する方法を見てきました。このセクションでは、同じように美しいがより複雑な楽譜を作り出すのに必要とされるコンセプトとテクニックについて紹介します。
4.1 LilyPond 入力ファイルの仕組み | ||
4.2 音楽を保持するボイス | ||
4.3 コンテキストとエングラーバ | ||
4.4 テンプレートを拡張する |
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < 基礎となるコンセプト ] | [ 上へ : 基礎となるコンセプト ] | [ LilyPond ファイル構造の紹介 > ] |
4.1 LilyPond 入力ファイルの仕組み
LilyPond の入力フォーマットは非常に自由な形式であり、経験豊富なユーザにとってはファイルを構築する際の自由度が高いです。しかしながら、この自由度が新しいユーザにとっては混乱の元になります。このセクションではこの入力ファイルの構造についていくつか説明します。しかしながら、簡潔さを保つためにいくつかの詳細については目をつぶるかもしれません。入力フォーマットについての完全な記述は、 File structure を参照してください。
4.1.1 LilyPond ファイル構造の紹介 | ||
4.1.2 Score は (単一の) 複合的な音楽表記 | ||
4.1.3 音楽表記をネストする | ||
4.1.4 入力音符の構造 | ||
4.1.5 ネストされない括弧とタイ |
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < LilyPond 入力ファイルの仕組み ] | [ 上へ : LilyPond 入力ファイルの仕組み ] | [ Score は (単一の) 複合的な音楽表記 > ] |
4.1.1 LilyPond ファイル構造の紹介
LilyPond 入力ファイルの基本例は以下のようなものです:
\version "2.24.4" \header { } \score { … 複合音楽表記 … % すべての音楽がここに入ります! \layout { } \midi { } }
基本パターンは本当にさまざまです。しかしながら、この例はスタート地点として役に立ちます。
これまで、あなたが見てきた例では \score {}
コマンドを使用していませんでした。その理由は、あなたが LilyPond に与えたのが簡単な入力であった場合、LilyPond が自動的に追加のコマンドを付け加えるからです。LilyPond は以下のような入力:
\relative { c''4 a d c }
を以下を簡略表記したものとして扱います:
\book { \score { \new Staff { \new Voice { \relative { c''4 a b c } } } \layout { } } }
言い換えると、入力が保持しているのが単一の音楽表記である場合、LilyPond はまるでその音楽表記が上で示されたコマンドで包まれているかのように解釈します。
一言警告! LilyPond ドキュメントの中にある多くの例では、
\new Staff
と \new Voice
コマンドは暗黙的に作成されるために省略されています。簡単な例ではそれでうまくいきますが、より複雑な例の場合
– 特に追加のコマンドが使用される場合 –
コンテキストの暗黙的な作成は予想外の結果となる可能性があります。多分、予期しない余分な譜が作成されるでしょう。コンテキストを明示的に作成する方法は コンテキストとエングラーバ で説明されています。
Note: 数行以上の音楽を入力する場合、常に譜とボイスを明示的に作成したほうが賢明です。
今度は最初の例に戻って、\score
コマンドについて検証します。他のことはデフォルトのままにしておきます。
\score
ブロックは常にただ 1 つの音楽表記を保持していなければなりません。音楽表記は単一の音符である場合もありますし、以下のような巨大な複合表記である場合もあるということを覚えておいてください:
{ \new StaffGroup << … ワーグナーのオペラの楽譜全体がここに入ります … >> }
すべては { … }
の内部にあるため、それは 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 output で完全に記述されています。
あなたは複数の \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'4 a b c } \score { \melody }
LilyPond がこのファイルを見ると、melody
の値
(イコール記号の後にあるすべて) を記憶し、\melody
と記述された箇所すべてにその値を挿入します。変数の名前について特別なことは何もありません
– 変数名は melody
, global
, keyTime
, pianorighthand
などとなります。変数名はアルファベットだけで構成されていて、LilyPond コマンド名と異なっている限りは、ほぼどんな名前でも使用できるということを覚えておいてください。詳細は、変数と関数を用いて入力の手間を省く を参照してください。変数名の厳密な制限については、
File structure で詳述されています。
参照
入力フォーマットの完全な定義は、 File structure を参照してください。
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < LilyPond ファイル構造の紹介 ] | [ 上へ : LilyPond 入力ファイルの仕組み ] | [ 音楽表記をネストする > ] |
4.1.2 Score は (単一の) 複合的な音楽表記
前のセクション – LilyPond ファイル構造の紹介 – で
LilyPond 入力ファイルの一般的な構造について見てきました。しかしながら、我々は最も重要な部分を飛ばしてきたようです:
どうやって \score
の後に記述するものを見つけ出すのでしょうか?
我々はそのことを完全には飛ばしてきませんでした。この大きな謎は簡単なことであり、謎でもなんでもないのです。以下の行がこの謎についてすべてを説明しています:
\score
ブロックはただ 1 つの音楽表記のみを含まなくてはなりません。
音楽表記が意味しているものを理解するには、チュートリアルの
音楽表記についての説明 を読み返すと役に立つかもしれません。そこでは、小さな音楽表記 – 音符から始めて、それから和音など – から大きな音楽表記を構築する方法を説明しています。今度は、大きな音楽表記から始めます。話を簡単にするために、例を歌手 1 人とピアノとします。このアンサンブルでは StaffGroup
は必要ありません。StaffGroup
はいくつかの譜をグループ化して左端に括弧を付けるだけですが、我々は歌手 1 人とピアノ用の譜を必要としています。
\score { << \new Staff = "singer" << >> \new PianoStaff = "piano" << >> >> \layout { } }
ここで譜に名前を付けます – “singer” と “piano” です。 ここで名前を付ける必要は必ずしもありませんが、一見して各譜が何なのか見て取れるので名前を付けておくべきです。
歌手とピアノが同時進行であることを示すために { … }
の代わりに
<< … >>
を使用するということを思い出してください。こうすることで、ボーカル パートはピアノ パートの上に表示されます。上の例で歌手の譜が一続きの音楽表記を保持するだけであるのなら
<< … >>
を使う必要はありませんが、譜が同時進行する複数の音楽表記
– 例えば、同時進行する 2 つの声部や、声部と歌詞です
– を保持するのであれば必須となります。我々は歌詞を持つ声部にしようとしているので、二重角括弧が必須です。実際の音楽は後で付け加えるとして、ここではいくつかのダミーの音符と歌詞を配置してみます。歌詞の入力の仕方を忘れてしまったのなら、簡単な歌曲を作成する の \addlyrics
を見直してください。
\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 { r4 d''8\noBeam g, c4 r }
しかしながら、そのようにすると、\score
セクションは非常に長くなり、何が起こるのか理解しにくくなります。そのため、直接音符を付け加える代わりに変数を使用しましょう。前のセクションで変数についての紹介を行いました。覚えていますよね?text
変数の内容が間違いなく歌詞と解釈されるよう、内容の前に \lyricmode
を記述します。\addlyrics
と同様に、これは入力モードを歌詞に切替間す。\lyricmode
を記述しなければ、LilyPond は内容を音符と解釈しようとしてエラーを引き起こします。
(他にもいくつかの入力モードがあります。
Input modes を参照してください。)
では、いくつかの音符を加えて、左手にはヘ音記号を加えます。これで、実際の楽譜の一部ができます:
melody = \relative { r4 d''8\noBeam g, c4 r } text = \lyricmode { And God said, } upper = \relative { <g' d g,>2~ <g d g,> } lower = \relative { b,2 e } \score { << \new Staff = "singer" << \new Voice = "vocal" { \melody } \addlyrics { \text } >> \new PianoStaff = "piano" << \new Staff = "upper" { \upper } \new Staff = "lower" { \clef "bass" \lower } >> >> \layout { } }
\score
セクションを書いている (あるいは読んでいる) とき、ゆっくりと注意深く進めてください。外側のレベルから始めて、それから内部の細かな部分に取り組んでください。さらに、きちんとインデントを入れると非常に役に立ちます
– これは、テキスト エディタの中で同じレベルにある各要素は同じ水平位置から始まるということを保証します。
参照
記譜法リファレンス: Structure of a score
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < Score は (単一の) 複合的な音楽表記 ] | [ 上へ : LilyPond 入力ファイルの仕組み ] | [ 入力音符の構造 > ] |
4.1.3 音楽表記をネストする
すべての譜を開始時に宣言することは必須ではありません。譜はどこででも臨時に導入される可能性があります。これはオッシアを作成する際に特に有用です – ossia を参照してください。ここで、3 つの音符に対して臨時に新しい譜を導入する方法を示すちょっとした例を挙げます:
\new Staff { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff { f8 f c } >> r4 | } }
音部記号のサイズは音部変更後に譜刻される音部記号のサイズ – 行の開始点での音部記号よりも少し小さい – と同じであるということに注意してください。これは行の途中で譜刻される音部記号全般に言えることです。
オッシアは以下のように譜の上に置かれるかもしれません:
\new Staff = "main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" } { f8 f c } >> r4 | } }
この例は後で説明される \with
を使用しています。このコマンドは単一の譜のデフォルトの振る舞いを変更することを意味します。ここでは、このコマンドは新しい譜をデフォルトの位置 (“main” と呼ばれている譜の下) ではなく、上に置くべきであると言っています。
参照
オッシアはしばしば音部記号や拍子記号無しで描かれ、通常は小さなフォントで描かれます。これらはまだ紹介されていない追加のコマンドを必要とします。オブジェクトのサイズ と オッシア譜 を参照してください。
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < 音楽表記をネストする ] | [ 上へ : LilyPond 入力ファイルの仕組み ] | [ ネストされない括弧とタイ > ] |
4.1.4 入力音符の構造
LilyPond の入力における音符は、順番にピッチ、長さ、1 つ以上の‘後置イベント’ (省略可能) からなります。LilyPond における‘後置イベント’ は、アーティキュレーション、運指、弦番号、スラー、タイ、テキストなどを追加するものです。
ピッチは、現在の音符名の言語
(
Note names in other languages で説明されています)
に基づいて明示的に指定されます。ピッチが省略された場合、その音符のピッチは前の音符と同じものになります。
Durations を参照してください。r
や s
はピッチではないことに注意してください。
長さは、数字と省略可能な 1 つ以上のドットからなります。長さが明示的に指定されない場合、その音符の長さは前の音符、和音、休符、空白休符と同じものになります。 Durations を参照してください。
後置イベントはこれらの後に付加するものです。例えば、c’ の 8 分音符に、1 の運指記号、テヌート アーティキュレーション、スラーの開始、タイの開始、テキスト指示を付加したいとしましょう。これは以下のようになります:
{ c'8-1--(~^\markup{"text annotation"} c' d') }
参照
学習マニュアル: タイとスラー, アーティキュレーションと強弱記号, テキストを追加する
記譜法リファレンス: Pitches, Rhythms, Expressive marks
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < 入力音符の構造 ] | [ 上へ : LilyPond 入力ファイルの仕組み ] | [ 音楽を保持するボイス > ] |
4.1.5 ネストされない括弧とタイ
これまでに LilyPond への入力ファイルを書く際に使用する括弧と括弧のような構成物にはいくつかの種類があるということを見てきました。これらは異なる規則 – 最初は混乱を引き起こす可能性があります – に従います。規則についての説明を行う前に、括弧と括弧のような構成物の種類を再確認してみましょう。
括弧のタイプ | 機能 |
---|---|
{ … } | 一続きの音楽を囲みます |
< … > | 和音となる音符を囲みます |
<< … >> | 同時進行する音楽表記を囲みます |
( … ) | スラーの開始点と終了点を意味します |
\( … \) | フレージング スラーの開始点と終了点を意味します |
[ … ] | 手動連桁の開始点と終了点を意味します |
こららに対して、音符の間や音符をまたがって線を生成する他の構文を付け加えるべきです: タイ (チルド ~
によって記述されます)、連符 (\tuplet x/y { … }
として記述されます)、グレイス ノート (\grace { … }
として記述されます) です。
LilyPond 以外では、種類の異なる括弧が適切にネストされること
– [ { ( … ) } ]
のように –
が一般的な使い方であり、括弧の終わりの順序は正確に括弧の始まりの順序と逆になります。このことは上記の表で ‘囲みます’ という言葉で記述されている
3 種類の括弧に対しては必須となります
– それらは適切にネストされなければなりません。しかしながら、残りの括弧のような構成物
– 上記の表で ‘意味します’ という言葉で記述されいるものと、タイ、連符で使用されるもの –
はいかなる括弧ともネストされる必要は ありません。実際、これらは何かを囲むという意味では括弧ではありません
– それらは単に何かが始まる場所、終わる場所を示すためのマークです。
そのため、例えばフレージング スラーは手動で挿入される連桁の前に開始して、その手動連桁の前に終わる可能性もあります – たぶん音楽的ではないかもしれませんが、可能性はあります:
\relative { g'8\( a b[ c b\) a] g4 }
一般に、種類の異なる括弧、括弧のような構成物、それに連符、タイ、装飾小音符の囲みは自由に組み合わせることができます。以下の例では、連桁は連符の中にまで伸びていて (行 1)、スラーは連符の中にまで伸びていて (行 2)、連桁とスラーが連符の中にまで伸びていて (行 3)、タイが 2 つの連符にまたがっていて、さらにフレージング スラーが連符の外にまで伸びています (行 3 と 4)。
\relative { r16[ g' \tuplet 3/2 { r16 e'8] } g,16( a \tuplet 3/2 { b16 d) e } g,8[( a \tuplet 3/2 { b8 d) e~] } | \tuplet 5/4 { e32\( a, b d e } a4.\) }
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < ネストされない括弧とタイ ] | [ 上へ : 基礎となるコンセプト ] | [ 私はボイスを聴いている > ] |
4.2 音楽を保持するボイス
歌手は歌うボイスを必要とし、LilyPond も歌う (演奏する) ボイスを必要とします。楽譜の中にあるすべての楽器に対する実際の音楽はボイスの中に保持されます – このことは LilyPond すべてのコンセプトの中での最も基礎的なことです。
4.2.1 私はボイスを聴いている | ||
4.2.2 ボイスを明示的にインスタンス化する | ||
4.2.3 ボイスとボーカル |
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < 音楽を保持するボイス ] | [ 上へ : 音楽を保持するボイス ] | [ ボイスを明示的にインスタンス化する > ] |
4.2.1 私はボイスを聴いている
LilyPond の楽譜の中で最も低レベルで、最も基礎的であり、最も内部にあるレイヤは ‘ボイス コンテキスト’ または縮めて単に ‘ボイス’ と呼ばれます。ボイスはときどき他の記譜法パッケージの中で ‘レイヤ’ と呼ばれます。
実際、ボイス レイヤまたはコンテキストは音楽を保持することができる唯一のものです。ボイス コンテキストが明示的に宣言されていない場合、この章の始めで見てきたようにボイス コンテキストが 1 つ自動的に生成されます。オーボエなどといった楽器は同時に 1 つの音符だけを演奏できます。そのような楽器のために書かれた楽譜はボイスを 1 つだけを必要とします。ピアノのように同時に複数の音符を演奏することができる楽器はしばしば、それらが演奏することのできる同時進行の異なる音符やリズムをエンコードするために、複数のボイスを必要とします。
もちろん、単一のボイスは和音の中で多くの音符を保持することができます。それでは、複数のボイスが実際に必要とされるのはどんな場合なのでしょうか?まずは、4 つの和音を持つ以下の例を見てください:
\relative { \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 つのボイスに分け、経過音とスラーを付け加えています:
\relative { \key g \major % Voice = "1" Voice = "2" << { g'4 fis8( g) a4 g } \\ { d4 d d d } >> }
この例では 2 番目のボイスの符幹が下向きになっていることに気付いてください。
今度はもう 1 つ簡単な例を挙げてみます:
\relative { \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 \relative { % Voice = "1" r4 g' g4. a8 | bes4 bes c bes | a2. r4 | } \\ \relative { % Voice = "2" d'2 d4 g | g4 g g8( a) g4 | fis2. s4 | } >>
この例にあるボイスは 2 つだけです。しかしながら、これと同じ構成にもっと多くのバック スラッシュを付け加えることによって、3 つかそれ以上のボイスを持たせることが可能です。
ボイス コンテキストは "1"
, "2"
などの名前を持ちます。最初の 2 つのコンテキストは 外側 のボイスをセットして、上のボイスはコンテキスト "1"
、下のボイスはコンテキスト "2"
になります。内側のボイスはコンテキスト "3"
と "4"
になります。これらの各コンテキストでは、スラー、符幹、タイ、強弱記号などの垂直方向の向きは適切にセットされます。
\new Staff \relative { % Main voice c'16 d e f % Voice = "1" Voice = "2" Voice = "3" << { g4 f e } \\ { r8 e4 d c8~ } >> | << { d2 e } \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> | }
もし別の順番で – 例えば上から下の順番に – ボイスを入力したい場合、
<< … >>
構造の前に \voices
を用いることで、各ボイスの番号を指定することができます。以下は例です。
\new Staff \relative { % Main voice c'16 d e f % Voice = "1" Voice = "2" << { g4 f e } \\ { r8 e4 d c8~ } >> | \voices 1,3,2 % Voice = "1" Voice = "3" Voice = "2" << { d2 e } \\ { s4 b c2 } \\ { c8 b16 a b8 g~ 2 } >> | }
これらのボイスはすべてメインのボイスからは分かれています。メインのボイスの音符は<< … >>
構造の外にあるからです。この << … >>
構造を 同時進行構造 と呼ぶことにしましょう。スラーとタイは同じボイス内にある音符だけをつなぎます。そのため、スラーとタイは同時進行構造を出たり入ったりすることはありません。反対に、同じ譜上にある個々の同時進行構造で、平行の位置にあるボイスは同じボイスになります。さらに、その他のボイス関連プロパティは同時進行構造をまたがって持ち越されます。ここで、上記と同じ例で各ボイスに対して異なる色と符頭を割り当ててみます。あるボイスでの変更は他のボイスに影響を与えませんが、その後に続く同じボイス (訳者: 平行位置にあるボイス) でその変更が維持されることに注意してください。さらに、タイでつながれた音符は、同じボイスとなる 2 つの同時進行構造にまたがって分かれるかもしれないということに注意してください。
\new Staff \relative { % Main voice c'16 d e f << % Bar 1 { \voiceOneStyle g4 f e } \\ { \voiceTwoStyle r8 e4 d c8~ } >> | << % Bar 2 % Voice 1 continues { d2 e } \\ % Voice 2 continues { c8 b16 a b8 g~ 2 } \\ { \voiceThreeStyle s4 b c2 } >> | }
コマンド \voiceXXXStyle
は主にこのマニュアルのような教育目的のドキュメントで使用することを意図したものです。このコマンドは、各ボイスが容易に見分けられるように、符頭、符幹、連桁の色、それに符頭のスタイルを変更します。ボイス 1 は赤でダイアモンドの符頭を持つようにセットされ、ボイス 2 は青で三角形の符頭を、ボイス 3 は緑で×付きの円を、ボイス 4 (ここでは使用されていません) はマゼンダの×の符頭を持つようにセットされます。\voiceNeutralStyle
(これもここでは使用されていません) は符頭のスタイルをデフォルトに戻します。後ほど、ユーザがこのようなコマンドを作成するための方法を見ていきます。オブジェクトの可視性と色 と レイアウトの調整のために変数を使用する
を参照してください。
多声部は \relative { }
ブロック内の音符の相対関係を変えません。各音符は直前の音符あるいは直前の和音の最初の音符との相対関係で計算されます。そのため、以下の例では
\relative { noteA << < noteB noteC > \\ noteD >> noteE }
noteB
は noteA
との相対関係で決まり
noteC
は noteA
ではなく noteB
との相対関係で決まり
noteD
は noteA
や noteC
ではなく
noteC
との相対関係で決まり
noteE
は noteA
ではなく noteD
との相対関係で決まります。
各ボイスの中にある音符の音程がボイスごとに大きく離れている場合、各ボイスの始めに \relative
コマンドを置くと明瞭になるかもしれません:
\relative { noteA … } << \relative { < noteB noteC > … } \\ \relative { noteD … } >> \relative { noteE … }
最後に、もっと複雑な楽曲の中にあるボイスを分析してみましょう。以下は、ショパンの Deux Nocturnes, Op 32 の 2 番の最初の 2 小節です。この例は、記譜を行うためのテクニックをいくつか示すために、本章の後の方と次の章で使用されます。ですから、今はコードの中にある意味不明に見えるものは無視して、音楽とボイスだけに注目してください – 込み入った内容は後ほど説明します。
符幹の向きはしばしば 2 つの同時進行する旋律ラインのつながりを示すために使用されます。ここでは、一番上の音符の符幹はすべて上向きであり、下の方にある音符の符幹はすべて下向きです。これは、複数のボイスが必要とされているということを示す最初の兆候です。
しかしながら、複数のボイスが実際に必要とされるのは、同時に始まる音符が異なる演奏時間を持つ場合です。最初の小節の 3 拍目を見てください。A フラットは付点 4 分音符であり、F は 4 分音符、D フラットは半音符です。これらの音符を和音として記述することはできません。なぜなら、和音の中の音符はすべて同じ演奏時間でなければならないからです。これらの音符をシーケンシャルな (連続する) 音符として記述することもできません。なぜなら、これらの音符は同時に始まらなければならないからです。この箇所では 3 つのボイスが必要となり、以下に示すように一般的にはこの小節全体を 3 つのボイスで記述します。そこでは、3 つのボイスに対して異なる符頭と色を割り当てています。もう一度繰り返しますが、この例のコードのことは後ほど説明しますので、理解できないことは無視してください。
この音楽のコードをゼロから記述してみましょう。これから見ていくように、いくつかの問題に遭遇します。すでに学んだように、最初の小節の音楽を 3 つのボイスに分けて記述するために
<< \\ >>
構造を使用します:
\new Staff \relative { \key aes \major << { c''2 aes4. bes8 } \\ { <ees, c>2 des } \\ { aes'2 f4 fes } >> | <c ees aes c>1 | }
符幹の向きは自動的に割り当てられ、奇数番号のボイスが上向きの符幹、偶数番号のボイスが下向きの符幹を持ちます。ボイス 1 と 2 の符幹は正しいのですが、ボイス 3 の符幹はここでは下向きになるべきです。ボイス 3 を省略して音楽をボイス 4 に記述することによって修正できます。ボイス 3 を省略するには、\\
を 2 つ記述します:
\new Staff \relative { \key aes \major \voices 1,2,4 % ボイス 3 を省略 << % ボイス 1 { c''2 aes4. bes8 } \\ % ボイス 2 { <ees, c>2 des } \\ % ボイス 4 { aes'2 f4 fes } >> | <c ees aes c>1 | }
これにより符幹の向きが修正されました。しかしながら、音符の水平方向の配置が望んだとおりになっていません。内側の音符の符頭や符幹が外側のボイスと衝突する場合 LilyPond は内側の音符の位置をずらしますが、これはピアノ譜では不適切です。他の状況でも、LilyPond が音符の位置をずらしても衝突が解決されない場合があります。LilyPond は音符の水平方向の位置を調節するための手段をいくつか提供します。しかしながら、我々はまだこの問題を修正するための方法を見ていく準備が整っていないので、この問題は後に残しておくことにします
– 表記の重なりを修正する の force-hshift
プロパティを参照してください。
Note: 歌詞、スパナ (スラー、タイ、強弱のヘアピン記号など) をボイスを‘またいで’ 作成することはできません。
参照
記譜法リファレンス: 複数のボイス
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < 私はボイスを聴いている ] | [ 上へ : 音楽を保持するボイス ] | [ ボイスとボーカル > ] |
4.2.2 ボイスを明示的にインスタンス化する
多声部音楽を作成するためにボイス コンテキストを手動で
<< >>
ブロックの中に作成することもできます。符幹、スラーなどの向きを示すために
\voiceOne
… \voiceFour
を使用します。この手法は各ボイスを別々にして、より記述的な名前を与えることを可能にするため、長い楽譜ではわかりやすいものになります。
本質的には、前のセクションで使用した構造 << \\ >>
:
\new Staff { \relative { << { e'4 f g a } \\ { c,4 d e f } >> } }
は以下と等価です:
\new Staff << \new Voice = "1" { \voiceOne \relative { e'4 f g a } } \new Voice = "2" { \voiceTwo \relative { c'4 d e f } } >>
上記の両方ともが以下の楽譜を生成します:
\voiceXXX
コマンドは符幹、スラー、タイ、アーティキュレーション、テキストの注釈、付点音符の付点、運指記号の向きをセットします。\voiceOne
と \voiceThree
はこれらのオブジェクトを上向きにし、一方の \voiceTwo
と \voiceFour
は下向きにします。さらに、符頭の衝突を避ける必要がある場合、これらのコマンドは各ボイスに対して水平方向のシフトを発生させます。コマンド \oneVoice
は設定を単一のボイスの場合の通常値に戻します。
いくつかの簡単な例で、\oneVoice
, \voiceOne
, \voiceTwo
がマークアップ、タイ、スラー、強弱記号に与える影響を見ていきましょう:
\relative { % Default behavior or behavior after \oneVoice c'4 d8~ 8 e4( f | g4 a) b-> c | }
\relative { \voiceOne c'4 d8~ 8 e4( f | g4 a) b-> c | \oneVoice c,4 d8~ 8 e4( f | g4 a) b-> c | }
\relative { \voiceTwo c'4 d8~ 8 e4( f | g4 a) b-> c | \oneVoice c,4 d8~ 8 e4( f | g4 a) b-> c | }
今度は、前のセクションの例を使って同じ多声部音楽のパッセージを 4 つの異なる方法で表記する例を見ていきます。それぞれ異なる状況で利点があります。
1 つはメイン ボイスに属する << >>
の内部に直接表記を記述する方法です
(しかしながら、音符は << \\ >>
構造の中に置かれてはいません)。これはメイン ボイスの途中で追加のボイスが現れる場合に有用です。ここでは例にさらに調整を加えます。赤のダイアモンド形の音符はメイン メロディが単一のボイス コンテキストになっていて、その上にフレージング スラーを描くことができるということを示しています。
\new Staff \relative { \voiceOneStyle % This section is homophonic c'16^( d e f % Start simultaneous section of three voices << % Continue the main voice in parallel { g4 f e | d2 e) | } % Initiate second voice \new Voice { % Set stems, etc., down \voiceTwo r8 e4 d c8~ | 8 b16 a b8 g~ 2 | } % Initiate third voice \new Voice { % Set stems, etc, up \voiceThree s2. | s4 b c2 | } >> }
\voices
コマンドはメインのボイスを同時進行表記へと続けるためにも使えます。
\new Staff \relative { \new Voice = "main" { \voiceOneStyle % ここは単声です c'16^( d e f % 3 ボイスの同時進行表記を開始 \voices "main",2,3 << % メインのボイスの続き { g4 f e | d2 e) | } % ボイス 2 の開始 \\ % 符幹などの向きが下になります { r8 e4 d c8~ | 8 b16 a b8 g~ 2 | } \\ % ボイス 3 の開始 % 符幹などの向きが上になります { s2. | s4 b c2 | } >> } }
より深くネストしたポリフォニー構造が可能であり、ボイスが短時間しか現れない場合、これは音楽を組版するより自然な方法です:
\new Staff \relative { c'16^( d e f << { g4 f e | d2 e) | } \new Voice { \voiceTwo r8 e4 d c8~ | << { c8 b16 a b8 g~ 2 | } \new Voice { \voiceThree s4 b c2 | } >> } >> }
新しいボイスを一時的にネストさせる手法は音楽のほんの一部だけが多声である場合に有用です。しかしながら、楽譜全体が多声である場合、一貫して複数のボイスを使用した方がわかりやすくなります。ボイスが無音の場所を飛ばすには以下のように空白音符を使用します:
\new Staff \relative << % Initiate first voice \new Voice { \voiceOne c'16^( d e f g4 f e | d2 e) | } % Initiate second voice \new Voice { % Set stems, etc, down \voiceTwo s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 | } % Initiate third voice \new Voice { % Set stems, etc, up \voiceThree s1 | s4 b c2 | } >>
音符列
和音の中で小さな間隔で置かれる音符、あるいは異なるボイスで同時に発生する音符は、符頭が重なるのを避けるために 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 つのボイスからの音符が同じ位置に置かれ、両方のボイスにシフトが指定されていない、あるいは同じシフトが指定されている場合、エラー メッセージ
“This voice needs a voiceXx
or shiftXx
setting”
(このボイスは \voiceXx
か \shiftXx
の設定が必要です)
が生成されます。
参照
学習マニュアル: Moving objects
記譜法リファレンス: 複数のボイス
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < ボイスを明示的にインスタンス化する ] | [ 上へ : 音楽を保持するボイス ] | [ コンテキストとエングラーバ > ] |
4.2.3 ボイスとボーカル
声楽には特別な困難があります: 2 つの表記 – 音符と歌詞 – を組み合わせる必要があります。
すでに \addlyrics{}
コマンドを見てきました。これは簡単な楽譜であればうまく処理できます。しかしながら、この方法では限界があります。より複雑な音楽では、\new Lyrics
を使って歌詞を
Lyrics
コンテキストに取り込み、ボイスに割り当ている名前を使って
\lyricsto{}
でその歌詞を明示的に音符にリンクさせます。
<< \new Voice = "one" { \relative { \autoBeamOff \time 2/4 c''4 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 = { \key f \major \time 6/8 \partial 8 } SopOneMusic = \relative { c''8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4 } SopOneLyrics = \lyricmode { Let | flee -- cy flocks the | hills a -- dorn, __ } SopTwoMusic = \relative { r8 | r4. r4 c'8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes' } 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 つのパートに対する歌詞の言葉は同じです。変数を使用して音楽記譜と歌詞の言葉を譜表構造から分離させている手法に注意してください。さらに、 ‘keyTime’ と呼ぶことにした変数が、2 つの譜で使用されるいくつかのコマンドを保持するために、使用されていることにも注意してください。他の例では、この変数はしばしば ‘global’ と呼ばれます。
keyTime = { \key c \major \time 4/4 \partial 4 } SopMusic = \relative { c'4 | e4. e8 g4 g | a4 a g } AltoMusic = \relative { c'4 | c4. c8 e4 e | f4 f e } TenorMusic = \relative { e4 | g4. g8 c4. b8 | a8 b c d e4 } BassMusic = \relative { 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 \keyTime \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 \keyTime \TenorMusic } \new Voice = "Bass" { \voiceTwo \BassMusic } >> >> }
参照
記譜法リファレンス: Vocal music
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < ボイスとボーカル ] | [ 上へ : 基礎となるコンセプト ] | [ コンテキストの説明 > ] |
4.3 コンテキストとエングラーバ
これまでに、コンテキストとエングラーバについて簡単に言及してきました。ここでは、これらのコンセプトをより詳細に見ていくことにします。なぜなら、これらは LilyPond 出力をうまく調節するのに重要だからです。
4.3.1 コンテキストの説明 | ||
4.3.2 コンテキストを作成する | ||
4.3.3 エングラーバの説明 | ||
4.3.4 コンテキスト プロパティを変更する | ||
4.3.5 エングラーバを追加 / 削除する |
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < コンテキストとエングラーバ ] | [ 上へ : コンテキストとエングラーバ ] | [ コンテキストを作成する > ] |
4.3.1 コンテキストの説明
音楽が譜刻されるとき、入力ファイルでははっきりとは現れてこない多くの記譜要素を出力に追加しなければなりません。例えば、以下の例で入力と出力を比較してください:
\relative { cis''4 cis2. | a4 a2. | }
この入力は内容がやや乏しいですが、出力では小節線、臨時記号、音部記号、拍子記号が追加されています。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
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < コンテキストの説明 ] | [ 上へ : コンテキストとエングラーバ ] | [ エングラーバの説明 > ] |
4.3.2 コンテキストを作成する
入力ファイルの中で、(\score
コマンドによって導入される)
score ブロックは単一の音楽表記を保持しますが、それに関連する出力定義
(\layout
ブロックと \midi
ブロックのいずれかあるいは両方)
も保持することができます。通常、Score
コンテキストは省略され、音楽表記の解釈が始まった時点で自動的に作成されます。
ボイスが 1 つだけで、譜も 1 つだけの楽譜では、Voice
と Staff
も省略して、自動的に作成させることができます。コンテキストは自動的に作成されるために放っておかれるかもしれません。しかしながら、より複雑な楽譜ではこれらを手ずから作成する必要があります。これらを作成する最も簡単なコマンドは \new
です。これは音楽表記の前に置きます。例を挙げます:
\new type music-expression
ここで、type はコンテキスト名です (Staff
や Voice
など)。このコマンドは新しいコンテキストを作成し、そのコンテキストの中にある
music-expression の解釈を開始します。
Note: 必須の最上位 Score
コンテキストとして \new Score
を使わないでください。これは、\score
ブロックの中にある音楽表記が解釈される時に自動的に作成されます。楽譜全体のコンテキスト プロパティのデフォルト値を変更するには、\layout
ブロックの中で行います。コンテキスト プロパティを変更する を参照してください。
これまでに、新たに Staff
と Voice
コンテキストを作成する多くの実際的な例を見てきましたが、これらのコマンドが実際にどのように使用されるのかを覚えてもらうために、実際の音楽に注釈を付けた例を挙げます:
\score { % 複合音楽表記の開始点 << % 同時進行する譜の開始点 \time 2/4 \new Staff { % create RH staff \clef "treble" \key g \minor \new Voice { % 右手の音符用のボイスを作成します \relative { % 右手の音符の開始点 d''4 ees16 c8. | d4 ees16 c8. | } % 右手の音符の終了点 } % 右手のボイスの終了点 } % 右手の譜の終了点 \new Staff << % 左手の譜を作成します。2 つの同時進行するボイスを必要とします \clef "bass" \key g \minor \new Voice { % 左手のボイス 1 を作成します \voiceOne \relative { % 左手のボイス 1 の音符の開始点 g8 <bes d> ees, <g c> | g8 <bes d> ees, <g c> | } % 左手のボイス 1 の音符の終了点 } % 左手のボイス 1 の終了点 \new Voice { % 左手のボイス 2 を作成します \voiceTwo \relative { % 左手のボイス 2 の音符の開始点 g4 ees | g4 ees | } % 左手のボイス 2 の音符の終了点 } % 左手のボイス 2 の終了点 >> % 左手の譜の終了点 >> % 同時進行する譜セクションの終了点 } % 複合音楽表記の終了点
(波括弧 {
や 2 重山括弧 <<
の中でブロックになっているすべての記述には括弧よりもスペースが 2 つ多いインデントを付けられていて、閉じ括弧には括弧の開始行と同じインデントを付けられているということに注意してください。これは必須ではありませんが、こうしておくと ‘unmatched backet’
(「括弧が一致しない」) エラーを大幅に減らすことができますので、強く推奨します。これにより、音楽の構造を簡単に見て取ることができ、一致していない括弧が明瞭になります。さらに、右手の譜はボイスを 1 つだけしか必要としないために波括弧によって囲まれた単一の音楽表記として作成されているのに対して、左手の譜は 2 つのボイスを必要とするために
2 重山括弧を使って作成されていることにも注意してください。)
また、\new
コマンドはコンテキストに識別名を与えて、そのコンテキストを同じタイプの他のコンテキストと区別することを可能にするかもしれません:
\new type = id music-expression
Staff
, Voice
などといったコンテキスト タイプの名前とそのようなコンテキスト タイプのインスタンスの名前
–これはユーザによって決定され、どのような文字の連なりにもなり得ます
– の違いに注意してください。数字とスペースも識別名に使用することができますが、その場合クォートで囲まなければなりません
– つまり、\new Staff = "MyStaff 1" music-expression
のようになります。識別名はコンテキストのあるインスタンスを参照するために使用されます。このことを歌詞についてのセクションで見てきました。ボイスとボーカル を参照してください。
参照
記譜法リファレンス: Creating and referencing contexts
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < コンテキストを作成する ] | [ 上へ : コンテキストとエングラーバ ] | [ コンテキスト プロパティを変更する > ] |
4.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 | 小節線をまたがる音符を分割します。 |
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
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < エングラーバの説明 ] | [ 上へ : コンテキストとエングラーバ ] | [ エングラーバを追加 / 削除する > ] |
4.3.4 コンテキスト プロパティを変更する
コンテキストにはいくつかのコンテキスト プロパティを保持する責任があります。それらプロパティの多くは変更可能であり、変更することで入力の構文解釈に影響を与えて出力の見た目を変化させます。それらプロパティは \set コマンドによって変更されます。これは以下のような形で行います:
\set ContextName.propertyName = #value
ontextName には通常、Score
, Staff
or Voice
が入ります。これを省略する場合もあり、そのような場合は Voice
であると見なされます。
コンテキスト プロパティの名前はハイフンやアンダスコアを使わずに連結された単語によって形成され、最初の単語を除いて単語の最初の文字は大文字になります。ここで、一般的に使用されるコンテキスト プロパティの例をいくつか挙げます。実際には、コンテキスト プロパティはもっとたくさんあります。
プロパティ名 | タイプ | 機能 | 実際の値の例 |
---|---|---|---|
extraNatural | ブール値 | 真の場合、追加のナチュラル記号を臨時記号の前にセットします | #t , #f |
currentBarNumber | 整数 | 小節番号をセットします | 50 |
doubleSlurs | ブール値 | 真の場合、音符の上と下の両方にスラーを譜刻します | #t , #f |
instrumentName | テキスト | 譜表の先頭に表示される名前をセットします | "Cello I" |
fontSize | 実数 | フォント サイズを増減させます | 2.4 |
stanza | テキスト | 歌詞の先頭に譜刻されるテキストをセットします | "2" |
ここでのブール値とは真 (#t
) または偽 (#f
) のどちらかであり、整数とは正の整数であり、実数とは正または負の小数点付きの数であり、テキストはダブル アポストロフィで囲まれます。ハッシュ記号 (#
) が 2 つの異なる箇所で出現することに注意してください – ブール値での t
や f
の前と、\set
での値の前です。そのため、\set
の値にブール値を挿入する場合、ハッシュ記号が 2 つ必要になります – つまり ##t
です。
これらのプロパティのいずれかをセットする前に、それらが操作するコンテキストはどれなのかを知る必要があります。これは明らかな場合もありますが、ややこしい場合もあります。間違ったコンテキストが指定された場合、エラー メッセージは表示されませんが、予期したアクションが起こりません。例えば、clefGlyph
は間違いなく Staff
コンテキストの中にきます。なぜなら、変更されるものは譜表に属する音部記号だからです。以下の例では、最初の譜表の音部記号は正しく表示されていますが、2 番目の譜表は正しくありません – ヘ音記号を指定したはずですが、デフォルトであるト音記号が表示されています – なぜなら、コンテキスト名を省略しているからです。
<< \new Staff \relative { \set Staff.clefGlyph = "clefs.C" c''2 c } \new Staff \relative { \set clefGlyph = "clefs.F" % Wrong! d'2 d } >>
デフォルトのコンテキスト名は Voice
であることを思い出してください。このため、2 番目の \set
コマンドは Voice
コンテキストのプロパティ clefGlyph
を “clefs.F” にセットしています。しかしながら、LilyPond は Voice
コンテキストでそのようなプロパティを見つけ出さないため、何のアクションも起こしません。これはエラーではなく、ログ ファイルにエラー メッセージは残りません。
同様に、プロパティ名の綴りを間違えた場合もエラー メッセージは表示されず、予期したアクションが起こりません。実際のところ、\set
コマンドを使って、存在するいかなるコンテキストにでも、いかなる (架空の) ‘プロパティ’ をセットすることができます。しかしながら、そのプロパティ名を LilyPond が知らない場合、何のアクションも起こしません。LilyPond 入力ファイルに対する特別なサポートを持ついくつかのテキスト エディタは、あなたがプロパティ名の上にマウスを持ってくるとバレット (テキストの先頭に付く小丸) 付きのプロパティ名を表示してそのプロパティの裏づけを行い (LilyPondTool を持つ JEdit)、あるいは未知のプロパティ名をハイライトします (ConTEXT)。そのような機能を持つエディタを使用していないのなら、内部リファレンスでプロパティ名をチェックすることを推奨します:
Tunable context properties や
Contexts
を参照してください。
clefGlyph
プロパティは Staff
コンテキストの中にセットされた場合にのみ効果を持ちますが、いくつかのプロパティは複数のコンテキストの中にセットすることができます。例えば、プロパティ extraNatural
はすべての譜に対してデフォルトで
##t
(真) にセットされています。ある特定の Staff
コンテキストでこれを ##f
(偽) にセットした場合、その譜表の臨時記号にのみ適用されます。これを Score
コンテキストにセットした場合、すべての譜に適用されます。
それでは、ある譜表の追加ナチュラル記号を消してみます:
<< \new Staff \relative { aeses'2 aes } \new Staff \relative { \set Staff.extraNatural = ##f aeses'2 aes } >>
さらに、すべての譜の追加ナチュラル記号を消します:
<< \new Staff \relative { aeses'2 aes } \new Staff \relative { \set Score.extraNatural = ##f aeses'2 aes } >>
他の例としては、clefTransposition
が Score
コンテキストにセットされた場合、直ちにすべての譜でのオクターブ表示を変更し、すべての譜に適用される新しいデフォルト値をセットします。
逆のことを行うコマンド \unset
はコンテキストからプロパティを削除し、それによりたいていのプロパティはデフォルト値に戻ります。通常、望みのことを達成するために新たな \set
コマンドを用いる場合、\unset
は必要ありません。
\set
と \unset
コマンドは入力ファイルのどこにでも現れる可能性があり、そのコマンドが出現した時点から、楽譜の終わりまたはそのプロパティが再度 \set
や \unset
されるまで効果を持ちます。フォント サイズを変更してみましょう。それにより (他のものに加えて) 符頭のサイズが何段階か変更されます。変更は直前にセットされた値から行われるのではなく、デフォルト値から行われます。
\relative { c'4 d % 符頭を小さくします \set fontSize = #-4 e4 f | % 符頭を大きくします \set fontSize = #2.5 g4 a % デフォルトのサイズに戻します \unset fontSize b4 c | }
これまでにいくつかのタイプのプロパティ値をセットする方法を見てきました。整数と番号の前には常にハッシュ記号 #
が付き、真と偽の値は
2 つのハッシュ記号を付けて ##t
と ##f
によって指定されてるということに注意してください。テキスト プロパティは上で示したようにダブル クォーテーションによって囲まれます。しかしながら、後ほど、テキストは実際には非常に強力な \markup
コマンドを用いたもっと一般的な方法で指定できるということを見ていきます。
\with
を使ったコンテキスト プロパティの設定
コンテキスト プロパティはコンテキストが作成されるときにセットされることもあるかもしれません。この設定がコンテキスト全体で保持される場合、この方法でプロパティ値を指定すると明瞭になります。コンテキストが \new
コマンドで作成されるとき、その直後に
\with { .. }
ブロックが続き、その中でプロパティ値がセットされるかもしれません。例えば、ある譜表全体で追加のナチュラルの表示を抑制しようとする場合、以下のように書きます:
\new Staff \with { extraNatural = ##f }
like this:
<< \new Staff { \relative { gisis'4 gis aeses aes } } \new Staff \with { extraNatural = ##f } { \relative { gisis'4 gis aeses aes } } >>
この方法でプロパティをセットした場合でも、\set
を使って動的に変更されたり、\unset
を使ってデフォルト値に戻されたりするかもしれません。
fontSize
プロパティの扱いは異なります。これが \with
の中でセットされた場合、フォント サイズのデフォルト値をセットし直します。そのあとでフォント サイズが \set
によって変更された場合、\with
でセットされた新しいデフォルト値は
\unset fontSize
コマンドによって元に戻されるかもしれません。
\context
を使ったコンテキスト プロパティの設定
コンテキスト プロパティの値は単一のコマンドによってある特定のタイプのコンテキストすべて – すべての Staff
コンテキストなどのように
– にセットされるかもしれません。プロパティをセットするコンテキストのタイプは、Staff
のようなそのコンテキストのタイプ名に接頭辞としてバック スラッシュを付けたもの
– \Staff
のように – によって指定されます。プロパティ値をセットするための記述は上で紹介した \with
ブロックの中の記述と同じです。この記述は \layout
ブロック内部の \context
ブロックの中に置かれます。各 \context
ブロックは、その \layout
ブロックが置かれている \score
または \book
ブロック全体を通じて、指定されたタイプのコンテキストすべてに対して効果を持ちます。ここで、記述方法を示すための例を挙げます:
\score { \new Staff { \relative { cisis''4 e d cis } } \layout { \context { \Staff extraNatural = ##t } } }
プロパティのオーバライドが score の中にあるどの譜にも適用されない場合:
\score { << \new Staff { \relative { gisis'4 gis aeses aes } } \new Staff { \relative { gisis'4 gis aeses aes } } >> \layout { \context { \Score extraNatural = ##f } } }
この方法でセットされたコンテキスト プロパティは、\with
ブロックの中の記述によって、さらには、音楽表記の中に埋め込まれた
\set
コマンドによって、ある特定のコンテキスト インスタンスでは上書きされるかもしれません。
参照
記譜法リファレンス: Changing context default settings, The set command
内部リファレンス: Contexts, Tunable context properties
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < コンテキスト プロパティを変更する ] | [ 上へ : コンテキストとエングラーバ ] | [ テンプレートを拡張する > ] |
4.3.5 エングラーバを追加 / 削除する
これまでに、コンテキストはそれぞれにいくつかのエングラーバを保持し、それぞれのエングラーバは出力のある特定部分 – 小節線、譜、符頭、符幹など – の譜刻に責任を持つということを見てきました。あるエングラーバがコンテキストから削除されると、それはもはや出力を行いません。これは出力を変更するための荒っぽい方法ですが、役に立つ場合もあります。
単一のコンテキストの変更
あるコンテキストからあるエングラーバを削除するには、前のセクションで見てたきたのと同様に、コンテキスト作成コマンドの直後に置く
\with
コマンドを使用します。
例として、前のセクションで使用した例から譜表線を取り除いてみましょう。譜表線は Staff_symbol_engraver
によって作り出されるということを思い出してください。
\new Staff \with { \remove Staff_symbol_engraver } \relative { c'4 d \set fontSize = #-4 % 符頭を小さくします e4 f | \set fontSize = #2.5 % 符頭を大きくします g4 a \unset fontSize % デフォルトのサイズに戻します b4 c | }
さらに、エングラーバは個々のコンテキストに追加されることもあります。エングラーバを追加するコマンドは以下のようなものです:
\consists Engraver_name
,
これを \with
ブロックの中に置きます。いくつかのボーカル譜は、その譜表の中にある音符の範囲を示すために、譜表の開始点に音域 (ambitus) を置きます –
ambitus を参照してください。音域は Ambitus_engraver
によって作成され、普通は、これはどのコンテキストにも含まれません。これを Voice
コンテキストに追加した場合、それはそのボイスのみから音域を計算します:
\new Staff << \new Voice \with { \consists Ambitus_engraver } { \relative { \voiceOne c''4 a b g } } \new Voice { \relative { \voiceTwo c'4 e d f } } >>
しかし、音域エングラーバを Staff
コンテキストに追加した場合、そのエングラーバはその譜表上にあるすべてのボイスの中の音符から音域を計算します:
\new Staff \with { \consists Ambitus_engraver } << \new Voice { \relative { \voiceOne c''4 a b g } } \new Voice { \relative { \voiceTwo c'4 e d f } } >>
同じタイプのコンテキストをすべて変更する
上の例では、個々のコンテキストにエングラーバを追加あるいは削除する方法を示しました。さらに、そのコマンドを \layout
ブロックの中の適当なコンテキストの中に置くことによって、ある特定のタイプのコンテキストすべてにエングラーバを追加あるいは削除することもできます。例えば、4 つの譜表を持つ楽譜ですべての譜表に音域を表示する場合、以下のように記述します:
\score { << \new Staff { \relative { c''4 a b g } } \new Staff { \relative { c'4 a b g } } \new Staff { \clef "G_8" \relative { c'4 a b g } } \new Staff { \clef "bass" \relative { c4 a b g } } >> \layout { \context { \Staff \consists Ambitus_engraver } } }
また、コンテキスト プロパティの値も、上記と同様に
\context
ブロックの中に \set
を含ませることによって、ある特定のタイプのコンテキストすべてに対してセットすることができます。
参照
記譜法リファレンス: Modifying context plug-ins, Changing context default settings
既知の問題と警告
Stem_engraver
と Beam_engraver
はそれらが描くオブジェクトを符頭にくっつけます。Note_heads_engraver
が削除されると、符頭は作られず、それゆえ符幹も連桁も作られません。
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < エングラーバを追加 / 削除する ] | [ 上へ : 基礎となるコンセプト ] | [ ソプラノとチェロ > ] |
4.4 テンプレートを拡張する
あなたはチュートリアルを読み終えました。あなたはどのように楽譜を書くかを知っていて、基礎となるコンセプトを理解しています。しかし、どうやったらあなたはあなたが望む譜を手に入れられるでしょうか?あなたにとって良いスタート地点となるかもしれない多くのテンプレートがあります (テンプレート を参照してください)。しかしながら、あなたの望むものがそこでカバーされていなかったらどうしましょう?続きを読んでください。
4.4.1 ソプラノとチェロ | ||
4.4.2 4 パート SATB ボーカル譜 | ||
4.4.3 ゼロから楽譜を構築する | ||
4.4.4 変数と関数を用いて入力の手間を省く | ||
4.4.5 楽譜とパート |
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < テンプレートを拡張する ] | [ 上へ : テンプレートを拡張する ] | [ 4 パート SATB ボーカル譜 > ] |
4.4.1 ソプラノとチェロ
あなたが最終的に望むものに最も近いテンプレートから始めてください。ソプラノとチェロのための楽譜を書きたいということにしましょう。ここでは、‘音符と歌詞’ (ソプラノ パート用) から始めることにします。
\version "2.24.4" melody = \relative { \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.24.4" melody = \relative { \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 {
部分) とその名前が使われているところ (\score セクションの中
) の両方です。
リネームする際に、チェロ パートの譜も変更しましょう −- 通常、チェロは低音部を使用します。さらに、チェロの音符を変えてみます。
\version "2.24.4" sopranoMusic = \relative { \clef "treble" \key c \major \time 4/4 a4 b c d } sopranoLyrics = \lyricmode { Aaa Bee Cee Dee } celloMusic = \relative { \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 { } }
これは少し見にくいです。インデントがきちんと入っていません。これは簡単に修正できます。ここで、完成したソプラノとチェロ用のテンプレートを挙げます。
sopranoMusic = \relative { \clef "treble" \key c \major \time 4/4 a4 b c d } sopranoLyrics = \lyricmode { Aaa Bee Cee Dee } celloMusic = \relative { \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 { } }
参照
開始点となるテンプレートは付録 ‘テンプレート’ で見つけることができます。単一譜テンプレート を参照してください。
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < ソプラノとチェロ ] | [ 上へ : テンプレートを拡張する ] | [ ゼロから楽譜を構築する > ] |
4.4.2 4 パート SATB ボーカル譜
Mendelssohn の Elijah や Handel の Messiah などのオーケストラ伴奏付きの 4 パート聖歌隊のために書かれたボーカル譜の多くは 4 つの譜上に音符と歌詞を持ち、それぞれの譜は SATB (ソプラノ、アルト、テナー、バス) のうちの 1 つであり、その下にオーケストラ伴奏のピアノ譜が付きます。ここで、Handel の Messiah から例を挙げます:
Note: このレイアウトは LilyPond に組み込まれているテンプレートを用いることで簡単に実現できます: satb.ly
。組み込まれているテンプレート を参照してください。簡単に利用できるという利点はありますが、このテンプレートを用いるということは、必要なコンテキスト構造を自動で提供する代わりに、それを隠してしまうということです。ですから学習のために、これを一から作る方法を見てみましょう。組み込みのテンプレートが完全には望みどおりでない場合、この手順を行う必要があるかもしれません。
コピーして編集できるテンプレートの中で、最も近いものは SATB ボーカル譜と自動ピアノ譜 ですが、レイアウトを変更して、ボーカル パートから自動的に生成されたものではないピアノ伴奏譜を付け加える必要があります。ボーカル パートのための音楽と歌詞を保持している変数はそのまま使えますが、ピアノ伴奏譜のための変数を付け加える必要があります。
テンプレートの ChoirStaff
の中でコンテキストが出現する順序は上で示したボーカル譜の順序と一致していません。そのため、コンテキストを再配置して、それぞれの歌詞が対応する譜表のすぐ下にくるようにします。すべてのボイスは \voiceOne
– これがデフォルトです – になるべきなので、\voiceXXX
コマンドは削除すべきです。さらに、テノールに対してハ音記号 (中音部記号) を指定する必要があります。テンプレートの中で歌詞を指定する方法はまだ説明していませんので、馴染みのある方法を使用する必要があります。さらに、それぞれの譜に名前を追加すべきです。
以上のことを ChoirStaff
に対して行います:
\new ChoirStaff << \new Staff = "sopranos" \with { instrumentName = "Soprano" } << \new Voice = "sopranos" { \global \sopranoMusic } >> \new Lyrics \lyricsto "sopranos" { \sopranoWords } \new Staff = "altos" \with { instrumentName = "Alto" } << \new Voice = "altos" { \global \altoMusic } >> \new Lyrics \lyricsto "altos" { \altoWords } \new Staff = "tenors" \with { instrumentName = "Tenor" } << \new Voice = "tenors" { \global \tenorMusic } >> \new Lyrics \lyricsto "tenors" { \tenorWords } \new Staff = "basses" \with { instrumentName = "Bass" } << \new Voice = "basses" { \global \bassMusic } >> \new Lyrics \lyricsto "basses" { \bassWords } >> % end ChoirStaff
次にピアノ パートに取り掛からなければなりません。これは簡単です – ‘ソロ ピアノ’ テンプレートからピアノ パートを引き抜いてくるだけです:
\new PianoStaff \with { 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 \with { instrumentName = "Piano" } << \new Staff = "upper" \upper \new Staff = "lower" \lower >> >>
これらすべてを組み合わせて、上の例の 3 小節分の音楽を付け加えます:
global = { \key d \major \time 4/4 } sopranoMusic = \relative { \clef "treble" r4 d''2 a4 | d4. d8 a2 | cis4 d cis2 | } sopranoWords = \lyricmode { Wor -- thy | is the lamb | that was slain | } altoMusic = \relative { \clef "treble" r4 a'2 a4 | fis4. fis8 a2 | g4 fis fis2 | } altoWords = \sopranoWords tenorMusic = \relative { \clef "G_8" r4 fis'2 e4 | d4. d8 d2 | e4 a, cis2 | } tenorWords = \sopranoWords bassMusic = \relative { \clef "bass" r4 d'2 cis4 | b4. b8 fis2 | e4 d a'2 | } bassWords = \sopranoWords upper = \relative { \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 { \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 { << % ChoirStaff と PianoStaff を並行に組み合わせます \new ChoirStaff << \new Staff = "sopranos" \with { instrumentName = "Soprano" } << \new Voice = "sopranos" { \global \sopranoMusic } >> \new Lyrics \lyricsto "sopranos" { \sopranoWords } \new Staff = "altos" \with { instrumentName = "Alto" } << \new Voice = "altos" { \global \altoMusic } >> \new Lyrics \lyricsto "altos" { \altoWords } \new Staff = "tenors" \with { instrumentName = "Tenor" } << \new Voice = "tenors" { \global \tenorMusic } >> \new Lyrics \lyricsto "tenors" { \tenorWords } \new Staff = "basses" \with { instrumentName = "Bass" } << \new Voice = "basses" { \global \bassMusic } >> \new Lyrics \lyricsto "basses" { \bassWords } >> % ChoirStaff の終了 \new PianoStaff \with { instrumentName = "Piano " } << \new Staff = "upper" \upper \new Staff = "lower" \lower >> >> }
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < 4 パート SATB ボーカル譜 ] | [ 上へ : テンプレートを拡張する ] | [ 変数と関数を用いて入力の手間を省く > ] |
4.4.3 ゼロから楽譜を構築する
LilyPond コードを書くことにある程度熟練した後、あなたはテンプレートの 1 つを変更するよりもゼロから楽譜を構築するほうがより容易であることに気づくかもしれません。さらに、あなたはこの方法であなたの好みのタイプの音楽に適したあなた自身のスタイルを開発することもできます。例として、オルガン前奏曲のための楽譜を作成する手順を見てみましょう。
ヘッダ セクションから始めます。そこでタイトル、作曲者の名前などを記述し、それから任意の変数を定義し、最後にスコア ブロックに取り掛かります。以上のことを概要から始めて、その後に詳細を詰めていきます。
Jesu, meine Freude – これは 2 つの鍵盤とペダルを持つオルガンのために書かれたものです – をベースとする Bach の前奏曲の最初の 2 小節を使います。このセクションの最後でこの音楽の最初の 2 小節を見ることができます。上段鍵盤パートは 2 つのボイスを持ち、下段鍵盤とペダルはそれぞれ 1 つのボイスを持ちます。そのため、4 つの音楽定義と、拍子記号と調号を定義するための 1 つの音楽定義が必要となります:
\version "2.24.4" \header { title = "Jesu, meine Freude" composer = "J S Bach" } keyTime = { \key c \minor \time 4/4 } 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 } >> % ManualOne Staff コンテキストの終了 \new Staff = "ManualTwo" << \new Voice { \ManualTwoMusic } >> % ManualTwo Staff コンテキストの終了 >> % PianoStaff コンテキストの終了
次にペダル オルガンのための譜表を付け加える必要があります。これは PianoStaff
の下にきますが、PianoStaff
と同時進行でなければなりませんので、ペダル オルガンのための譜表と
PianoStaff
を山括弧で囲む必要があります。これを忘れるとエラーがログ ファイルに生成されます。このエラーはあなたが早かれ遅かれ遭遇する一般的なミスです!生成されるエラーを確認するために、このセクションの最後にある例をコピーし、この山括弧を削除し、コンパイルしてみてください。
<< % PianoStaff と Pedal Staff を同時進行させる必要があります \new PianoStaff << \new Staff = "ManualOne" << \new Voice { \ManualOneVoiceOneMusic } \new Voice { \ManualOneVoiceTwoMusic } >> % ManualOne Staff コンテキストの終了 \new Staff = "ManualTwo" << \new Voice { \ManualTwoMusic } >> % ManualTwo Staff コンテキストの終了 >> % PianoStaff コンテキストの終了 \new Staff = "PedalOrgan" << \new Voice { \PedalOrganMusic } >> >>
2 番目の鍵盤パートとペダル オルガンの譜表は 1 つだけしか音楽表記を保持しないため、それらに対して同時進行構造 << … >>
を使う必要は必ずしもありません。しかしながら、そうしても害はありませんし、\new Staff
の後に常に山括弧を置くというのは複数のボイスがある場合では推奨される良い習慣です。Voice はこれとは対照的に、あなたの音楽を連続して演奏すべきいくつかの変数に分けてコード化する場合に Voice の後に波括弧 { … }
を常に置くべきです。
この構造をスコア ブロックに付け加えて、インデントを調整しましょう。さらに、適切な音部記号を付け加え、\voiceOne
と \voiceTwo
を使って上部譜の各ボイスで符幹、タイ、スラーの向きが正しくなるようにし、あらかじめ定義しておいた変数 \keyTime
を使って拍子記号と調号を各譜に挿入します。
\score { << % PianoStaff と Pedal Staff を同時進行させる必要があります \new PianoStaff << \new Staff = "ManualOne" << \keyTime % 調号と拍子記号をセットします \clef "treble" \new Voice { \voiceOne \ManualOneVoiceOneMusic } \new Voice { \voiceTwo \ManualOneVoiceTwoMusic } >> % ManualOne Staff コンテキストの終了 \new Staff = "ManualTwo" << \keyTime \clef "bass" \new Voice { \ManualTwoMusic } >> % ManualTwo Staff コンテキストの終了 >> % PianoStaff コンテキストの終了 \new Staff = "PedalOrgan" << \keyTime \clef "bass" \new Voice { \PedalOrganMusic } >> % PedalOrgan Staff の終了 >> } % Score コンテキストの終了
上のオルガン譜のレイアウトはほぼ完璧です。しかしながら、それぞれの譜を見ているだけではわからない、ちょっとした欠陥があります。ペダル譜と左手譜の距離は右手譜と左手譜の距離とほぼ等しくなるべきです。詳しく説明すると、PianoStaff
コンテキストの譜の伸縮性は制限される
(制限により、左手譜と右手譜の距離はあまりにも大きくなることはありません)
ので、ペダル譜も同様に制限されるべきです。
譜の伸縮性は ‘グラフィカル オブジェクト’ VerticalAxisGroup
の staff-staff-spacing
プロパティで制御することができます。
(LilyPond ドキュメントの中でグラフィカル オブジェクトは ‘grobs’
と呼ばれることが多いです。)
今、グラフィカル オブジェクトの詳細について知らなくても心配しないでください。後で詳しく説明します。興味があるのなら、
Overview of modifying properties を見てください。今回は、stretchability
サブ-プロパティを変更する必要があるだけです。さらに興味があるのなら、グラフィカル オブジェクト VerticalAxisGroup
の定義を調べていくと、ファイル ‘scm/define-grobs.scm’ の中に
staff-staff-spacing
プロパティのデフォルト値を見つけることができます。stretchability
の値は、PianoStaff
コンテキスト
(これはファイル ‘ly/engraver-init.ly’ の中にあります)
の定義から来ていて、2 つの値は等価です。
\score { << % PianoStaff と Pedal Staff を同時進行させる必要があります \new PianoStaff << \new Staff = "ManualOne" << \keyTime % 調号と拍子記号をセットします \clef "treble" \new Voice { \voiceOne \ManualOneVoiceOneMusic } \new Voice { \voiceTwo \ManualOneVoiceTwoMusic } >> % ManualOne Staff コンテキストの終了 \new Staff = "ManualTwo" \with { \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5 } << \keyTime \clef "bass" \new Voice { \ManualTwoMusic } >> % ManualTwo Staff コンテキストの終了 >> % PianoStaff コンテキストの終了 \new Staff = "PedalOrgan" << \keyTime \clef "bass" \new Voice { \PedalOrganMusic } >> % PedalOrgan Staff の終了 >> } % Score コンテキストの終了
これでこの構造は完成です。3 つの譜を持つオルガン譜はいずれも同様の構造を持ちますが、ボイスの数はさまざまになるかもしれません。この後に行うべきことは、音楽を付け加え、各パートを一緒にすることです。
\header { title = "Jesu, meine Freude" composer = "J S Bach" } keyTime = { \key c \minor \time 4/4 } ManualOneVoiceOneMusic = \relative { g'4 g f ees | d2 c | } ManualOneVoiceTwoMusic = \relative { ees'16 d ees8~ 16 f ees d c8 d~ d c~ | 8 c4 b8 c8. g16 c b c d | } ManualTwoMusic = \relative { c'16 b c8~ 16 b c g a8 g~ 16 g aes ees | f16 ees f d g aes g f ees d ees8~ 16 f ees d | } PedalOrganMusic = \relative { r8 c16 d ees d ees8~ 16 a, b g c b c8 | r16 g ees f g f g8 c,2 | } \score { << % PianoStaff と Pedal Staff を同時進行させる必要があります \new PianoStaff << \new Staff = "ManualOne" << \keyTime % 調号と拍子記号をセットします \clef "treble" \new Voice { \voiceOne \ManualOneVoiceOneMusic } \new Voice { \voiceTwo \ManualOneVoiceTwoMusic } >> % ManualOne Staff コンテキストの終了 \new Staff = "ManualTwo" \with { \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5 } << \keyTime \clef "bass" \new Voice { \ManualTwoMusic } >> % ManualTwo Staff コンテキストの終了 >> % PianoStaff コンテキストの終了 \new Staff = "PedalOrgan" << \keyTime \clef "bass" \new Voice { \PedalOrganMusic } >> % PedalOrgan Staff コンテキストの終了 >> } % Score コンテキストの終了
参照
音楽用語集: system
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < ゼロから楽譜を構築する ] | [ 上へ : テンプレートを拡張する ] | [ 楽譜とパート > ] |
4.4.4 変数と関数を用いて入力の手間を省く
これまでに、以下のような記述を見てきました:
hornNotes = \relative { c''4 b dis c } \score { { \hornNotes } }
これは音楽表記を最小化するのに役に立つ可能性があるということに気付くかもしれません:
fragmentA = \relative { a'4 a8. b16 } fragmentB = \relative { a'8. gis16 ees4 } violin = \new Staff { \fragmentA \fragmentA | \fragmentB \fragmentA | } \score { { \violin } }
さらに、これらの変数 (変数、マクロ、(ユーザ定義) コマンドなどと呼ばれます) を調整のために使うこともできます:
dolce = \markup { \italic \bold dolce } centerText = { \once \override TextScript.self-alignment-X = #CENTER } fthenp =_\markup { \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } violin = \relative { \repeat volta 2 { c''4._\dolce b8 a8 g a b | \centerText c4.^"hi there!" d8 e f g d | c4.\fthenp b8 c4 c-. | } } \score { { \violin } }
これらの変数は明らかに入力の手間を省くのに役立っています。例え 1 回しか使用しない音楽であっても、変数化することを考慮する価値はあります – 変数化は複雑さを減らします。前の例を変数化しなかったものを見てみましょう。とても読み難く、特に最後の行が読み難いです。
violin = \relative { \repeat volta 2 { c''4._\markup { \italic \bold dolce } b8 a8 g a b | \once \override TextScript.self-alignment-X = #CENTER c4.^"hi there!" d8 e f g d | c4._\markup { \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } b8 c4 c-. | } }
これまでに見てきたのは静的な置き換えです
– LilyPond は \centerText
を見つけると、それを定義した内容
(つまり、centerText=
の右側にあるもの) に置き換えます。
LilyPond は非静的な置き換えも処理できます (それらを関数と見なすことができます)。
padText = #(define-music-function (padding) (number?) #{ \once \override TextScript.padding = #padding #}) \relative { c''4^"piu mosso" b a b \padText #1.8 c4^"piu mosso" b a b \padText #2.6 c4^"piu mosso" b a b }
変数を使うことは、LilyPond 入力構文に変更があった場合の作業を減らす良い方法でもあります (
convert-ly を使ってファイルを更新する
を参照してください)。あなたがあなたの入力ファイルすべてに使用する単一の定義
(\dolce
のような) を持っていて、構文が変更された場合、すべての .ly
ファイルを変更する代わりに、\dolce
定義をアップデートするだけで済みます。
(スタイル シート を参照してください。)
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ 出力を調整する >> ] |
[ < 変数と関数を用いて入力の手間を省く ] | [ 上へ : テンプレートを拡張する ] | [ 出力を調整する > ] |
4.4.5 楽譜とパート
オーケストラ音楽では、すべての音符は 2 回譜刻されます。1 回は演奏家のためのパート譜で、1 回は指揮者のための総譜で譜刻されます。変数を使うことで二度手間を避けることができます。音楽は 1 回、変数に入力されます。その変数の内容は、パート譜と総譜の両方を生成するために使用されます。
音符を特別なファイルの中に定義すると便利です。例えば、ファイル horn-music.ly
は以下のホルン/バスーン デュオのパートを保持しているとします:
hornNotes = \relative { \time 2/4 r4 f8 a | cis4 f | e4 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
この部分を譜刻するとき、複小節休符を圧縮する必要があります。これを行う音楽関数が存在します。
\compressMMRests { ... }
これを hornNotes
に適用すると、以下のような結果になります:
楽譜はすべての音楽を一緒にすることによって作り出されます。他のボイスはファイル ‘bassoon-music.ly’ の中の bassoonNotes
の中にあると仮定すると、楽譜は以下のような記述で作られます:
\include "bassoon-music.ly" \include "horn-music.ly" << \new Staff \hornNotes \new Staff \bassoonNotes >>
そして、以下のような楽譜になります:
参照
学習マニュアル: 変数を用いて楽曲を編成する.
記譜法リファレンス: Transpose, Writing parts, Full measure rests, Including LilyPond files.
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < 楽譜とパート ] | [ 上へ : Top ] | [ 調整の基本 > ] |
5. 出力を調整する
この章では出力を変更する方法について議論します。LilyPond は本当にさまざまな設定が可能です。もしかすると出力のすべての部分が変更されるかもしれません。
5.1 調整の基本 | ||
5.2 内部リファレンス マニュアル | ||
5.3 オブジェクトの見た目 | ||
5.4 オブジェクトの配置 | ||
5.5 垂直方向のスペース | ||
5.6 オブジェクトの衝突 | ||
5.7 更なる調整 |
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < 出力を調整する ] | [ 上へ : 出力を調整する ] | [ 調整の紹介 > ] |
5.1 調整の基本
5.1.1 調整の紹介 | ||
5.1.2 オブジェクトとインタフェイス | ||
5.1.3 オブジェクトとプロパティの命名規則 | ||
5.1.4 調整手段 |
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < 調整の基本 ] | [ 上へ : 調整の基本 ] | [ オブジェクトとインタフェイス > ] |
5.1.1 調整の紹介
‘調整’ は入力ファイルの解釈中にとられるアクションを変更し、譜刻される楽譜の見た目を変更するためにユーザが利用可能なさまざまな手段を指す LilyPond の用語です。いくつかの調整はとても簡単に使うことができます。他の調整はもっと複雑です。しかしながら、調整のために利用可能な手段を組み合わせることによって、ほとんどいかなる望みの見た目を持った楽譜でも譜刻することが可能になります。
このセクションでは、調整を理解するのに必要な基礎となるコンセプトをカバーします。その後、コピーするだけで効果が得られる作成準備が完了しているさまざまなコマンドについての情報を提供し、同時に、あなたがあなた自身の調整を開発する方法を学べるようにそれらのコマンドがどのように構築されるのかを示します。
この章を読み始める前に、あなたは コンテキストとエングラーバ を再読することを望むかもしれません。なぜなら、コンテキスト、エングラーバとそれらの中に含まれるプロパティは調整について理解し、調整を構成するための基礎だからです。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < 調整の紹介 ] | [ 上へ : 調整の基本 ] | [ オブジェクトとプロパティの命名規則 > ] |
5.1.2 オブジェクトとインタフェイス
調整には LilyPond プログラムの内部オペレーションと構造体への変更も含まれます。そのため、我々はまずそれらの内部オペレーションと構造体を記述するために使用されるいくつかの用語を導入しなければなりません。
‘オブジェクト’ という用語は入力ファイルを処理している最中に LilyPond によってビルドされる多くの内部構造体を参照するために使われる汎用的な用語です。LilyPond が \new Staff
のようなコマンドに遭遇した場合、タイプ Staff
の新しいオブジェクトを構築します。その Staff
オブジェクトは、その譜のコンテキスト内部で機能するために割り当てられているエングラーバの詳細とともに、その譜に関連付けられているすべてのプロパティ – 例えば、その譜の名前、調号 – を保持します。同様に、Voice
オブジェクト、Score
オブジェクト、Lyrics
オブジェクトなどの他のすべてのコンテキストのプロパティを保持するためのオブジェクトが存在し、さらに、小節線、符頭、タイ、強弱記号などのすべての記譜要素を表すためのオブジェクトも存在します。各オブジェクトはそれ自体のプロパティ値のセットを持ちます。
いくつかのタイプのオブジェクトには特別な名前が与えられています。符頭、符幹、スラー、タイ、運指記号、音部記号などの譜刻される出力上の記譜要素を表すオブジェクトは ‘レイアウト オブジェクト’ と呼ばれ、しばしば ‘グラフィカル オブジェクト’ あるいは短くして ‘グロッブ (Grob: GRaphical OBject)’ と呼ばれます。これらのオブジェクトも上記の汎用的な観点から見るとオブジェクトであり、それゆえ、それらもまたそれらのオブジェクトに関連付けされたプロパティ – そのオブジェクトの位置、サイズ、色など – を持ちます。
いくつかのレイアウト オブジェクトも特別です。フレージング スラー、クレッシェンド、オッターバ記号、他の多くのグラフィカル オブジェクトが置かれる場所は一点ではありません – それらは開始点、終了点、そしておそらくそれらの形に関係する他のプロパティを持ちます。これらのオブジェクトのように形が伸長されるオブジェクトは ‘スパナ (Spanners)’ と呼ばれます。
スパナは生成された後に調整を行うことができません。楽譜全体にわたって続く
StaffSymbol
や LedgerLineSpanner
も同様です。ただし、
\stopStaff
コマンドによって終了し、\startStaff
コマンドで新たに生成された場合を除きます。
また、‘抽象 (abstract)’ グラフィカル オブジェクトというものも存在します。これはオブジェクト自身は出力に何も書き出しませんが、他のグラフィカル
オブジェクトを収集し、配置や管理をする役割を担います。
DynamicLineSpanner
, BreakAlignment
,
NoteColumn
, VerticalAxisGroup
,
NonMusicalPaperColumn
などが例です。後で、これらがどのように使われるかを見ていきましょう。
‘インタフェイス’ とは何なのかという説明が残っています。多くのオブジェクト – たとえそれらが非常に異なっていたとしても –
は同じ方法で処理される必要がある共通特徴を共有します。例えば、すべてのグラフィカル オブジェクトは色、サイズ、位置などを持ち、これらのプロパティはすべて LilyPond が入力ファイルを構文解釈する最中に同じ方法で処理されます。これらの内部オペレーションを簡潔にするために、これらの共通アクションとプロパティは 1 つのグループとして
grob-interface
と呼ばれるオブジェクトにまとめられています。これと同じような共有プロパティのグループ化が他にも多くあり、それぞれに対して最後に interface
が付く名前が与えられています。そのようなインタフェイスの総数は 100 を越えます。我々は後でなぜこれがユーザにとって利益となり、役に立つのかを見ていきます。
これらは、我々がこの章で使用するオブジェクトと関係する主要な用語です。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < オブジェクトとインタフェイス ] | [ 上へ : 調整の基本 ] | [ 調整手段 > ] |
5.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 |
これから見ていくのですが、タイプが異なるオブジェクトのプロパティは異なるコマンドによって変更されます。そのため、名前からオブジェクトやプロパティのタイプを識別できるようになると役に立ちます。
参照
記譜法リファレンス: プロパティを変更する
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < オブジェクトとプロパティの命名規則 ] | [ 上へ : 調整の基本 ] | [ override コマンド > ] |
5.1.4 調整手段
\override コマンド | ||
\revert コマンド | ||
\once 接頭辞 | ||
\overrideProperty コマンド | ||
\tweak コマンド | ||
\single 接頭辞 |
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < 調整手段 ] | [ 上へ : 調整手段 ] | [ revert コマンド > ] |
\override
コマンド
我々はすでに コンテキスト プロパティを変更する と
エングラーバを追加 / 削除する で コンテキスト のプロパティを変更したり、エングラーバ を追加/削除したりするために使用するコマンド
\set
と \with
を見てきました。ここでは更に重要ないくつかのコマンドについて見ていきます。
レイアウト オブジェクト のプロパティを変更するためのコマンドは
\override
です。このコマンドは LilyPond の奥深くにある内部プロパティを変更しなければならないため、これまで見てきたコマンドのように単純な構文ではありません。どのコンテキストの中にあるどのオブジェクトのどのプロパティを変更しなければならないのか、そこにセットする新しい値を何にするのかを正確に知っている必要があります。どのようにこれを行うのかを見ていきましょう。
このコマンドの一般的な構文は以下のようなものです:
\override Context.LayoutObject.layout-property = #value
これは Context コンテキストのメンバである LayoutObject という名前のレイアウトの layout-property という名前のプロパティに値 value をセットします。
必要とされているコンテキストが明白であり、それが最下位レベルのコンテキストである
– つまり、Voice
, ChordNames
や Lyrics
である
– 場合、その Context は省略可能であり (そして通常は省略されます)、この後の例の多くでも省略します。後ほど、コンテキストを指定しなければならない場合について見ていきます。
これから後のセクションでは広範囲に亘るプロパティとそれらの値を扱います – プロパティのタイプ を参照してください。しかしながら、このセクションではそれらのフォーマットとコマンドの使い方を示すために、容易に理解できる簡単なプロパティと値をいくつか使用してみるだけです。
LilyPond の基本的な表記は文字列やマークアップだけでなく、音符や演奏時間のような音楽要素です。数字、シンボル、リストなどのより具体的な表記は ‘Scheme モード’ で処理されます – 表記の先頭に ‘#’ を記述することでこのモードが呼び出されます。Scheme モードについての更なる情報は LilyPond Scheme syntax を参照してください。
\override
は調整で用いられる最も一般的なコマンドであり、本章の残りの大半を使ってこのコマンドの使用例を示します。まずは符頭の色を変更する簡単な例を挙げます:
\relative { c'4 d \override NoteHead.color = #red e4 f | \override NoteHead.color = #green g4 a b c | }
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < override コマンド ] | [ 上へ : 調整手段 ] | [ once 接頭辞 > ] |
\revert
コマンド
一旦オーバライドされると、そのプロパティは再度オーバライドされるか
\revert
コマンドに遭遇するまで新しい値のままでいます。\revert
コマンドは以下の構文を持ち、プロパティの値をオリジナルのデフォルト値に戻します。何度か \override
コマンドが発行されている場合は、前の値に戻すわけではないということに注意してください。
\revert Context.LayoutObject.layout-property
繰り返しますが、\override
コマンドでの Context と同様に、多くの場合で Context を記述する必要はありません。以下の例の多くで、Context は省略されます。ここでは、最後の 2 つの音符の符頭の色をデフォルトに戻します:
\relative { c'4 d \override NoteHead.color = #red e4 f | \override NoteHead.color = #green g4 a \revert NoteHead.color b4 c | }
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < revert コマンド ] | [ 上へ : 調整手段 ] | [ overrideProperty コマンド > ] |
\once
接頭辞
\override
, \revert
, \set
, \unset
コマンドには接頭辞 \once
が付く可能性があります。これはこのようなコマンドをその場一回限り有効にし、その後にそのプロパティの値をデフォルト値に戻します。上と同じ例を使って、以下のように 1 つだけの音符の色を変更することができます:
\relative { c'4 d \override NoteHead.color = #red e4 f | \once \override NoteHead.color = #green g4 a \once \revert NoteHead.color b c | \revert NoteHead.color f2 c | }
\once
接頭辞をさまざまな定義済みコマンドの前に置くことで、コマンドの効果を次の音楽タイミングに限定することもできます:
\relative { c'4( d) \once \slurDashed e4( f) | g4( a) \once \hideNotes b( c) | }
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < once 接頭辞 ] | [ 上へ : 調整手段 ] | [ tweak コマンド > ] |
\overrideProperty
コマンド
オーバライド コマンドには \overrideProperty
というもう 1 つのフォーマットがあり、時々必要となります。完璧を期すためにここでこれに言及しましたが、詳細は
Difficult tweaks を参照してください。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < overrideProperty コマンド ] | [ 上へ : 調整手段 ] | [ single 接頭辞 > ] |
\tweak
コマンド
利用可能な最後の調整コマンドは \tweak
です。これは同じ音楽タイミングで発生するいくつかのオブジェクトのうち、1 つのオブジェクトだけを選択してプロパティを変更したい場合に使用します
– 例えば、和音の中にある 1 つの音符のプロパティを変更する場合です。\override
コマンドを使用すると和音の中にあるすべての音符に影響を与えます。一方、\tweak
は入力ストリームの中でその \tweak
のすぐ後にある要素 1 つだけに影響を与えます。
ここで例を挙げます。C メジャー コードの中にある真ん中の音符 (ミドル E) の符頭のサイズを変更したいとします。まず最初に、\once \override
だとどうなるか見てみましょう:
\relative { <c' e g>4 \once \override NoteHead.font-size = #-3 <c e g>4 <c e g>4 }
このオーバライドは和音の中にあるすべての符頭に影響を与えています。これは和音の中にあるすべての音符が同じ タイミング で起こるためであり、\once
のアクションは \override
と同様に同じタイミングで起こる、指定されたタイプすべてのレイアウト オブジェクトへのオーバライドに適用されます。
\tweak
コマンドはこれとは異なるやり方で処理されます。これは入力ストリームの中ですぐ後に続く要素にだけ作用します。最もシンプルな形式の \tweak
コマンドは、コマンドの直後にある要素から直接作成されるオブジェクト
– 本質的に符頭とアーティキュレーション – にだけ効果を持ちます。
それでは例に戻り、この方法で和音の真ん中の音符のサイズを変更します:
\relative { <c' e g>4 <c \tweak font-size #-3 e g>4 }
\tweak
の構文は \override
コマンドの構文とは異なるということに注意してください。コンテキストを指定しません – 実際、指定するとエラーになります。コンテキストとレイアウト オブジェクトはどちらも入力ストリームの中で後に続く要素によって示されます。さらに、イコール記号を使うべきではないということに注意してください。そのため、簡単な形式の \tweak
コマンドは以下のようになります:
\tweak layout-property #value
さらに、\tweak
コマンドは一連のアーティキュレーションの中にあるただ 1 つのアーティキュレーションを変更されるためにも使用できます。ここに例を挙げます:
a'4^"Black" -\tweak color #red ^"Red" -\tweak color #green _"Green"
\tweak
コマンドはアーティキュレーション マークの前に配置する必要があることに注意してください。なぜなら、調整された表記がアーティキュレーションとして適用される必要があるためです。複数の向き記号 (^
または _
) で上書きした場合、最後に適用される左端の記号が勝ち残ります。
符幹や臨時記号などのオブジェクトは後になってから作成されるもので、\tweak
コマンドの後に続くイベントから直接作成されません。そのような直接作成されないオブジェクトの場合、明示的にレイアウト
オブジェクト名を指定して LilyPond がそれらのオブジェクトの起源を追跡できるようにすることで、\tweak
で調整することができます:
<\tweak Accidental.color #red cis''4 \tweak Accidental.color #green es'' g''>
この長い形式の \tweak
コマンドは以下のように記述することができます:
\tweak LayoutObject.layout-property #value
さらに、\tweak
コマンドは、同時に起こるネストされた連符記号のセットのうちの 1 つの見た目を変更するためにも使用されます。以下の例では、長い連符記号と 3 つの短い連符記号のうちの最初の連符記号が同時に起こります。そのため、\override
コマンドだと両方の連符記号に適用されてしまいます。この例では、\tweak
は 2 つの連符記号を区別するために使用されています。最初の \tweak
コマンドは長い連符記号を音符の上に置くことを指定していて、2 番目の \tweak
コマンドは最初の短い連符記号の数字を赤で描くことを指定しています。
\relative c'' { \tweak direction #up \tuplet 3/4 { \tweak color #red \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
ネストされた連符が同時に起こらない場合、それらの見た目は \override
コマンドを用いた通常通りの方法で変更されるかもしれません:
\relative { \tuplet 3/2 { c'8[ c c] } \once \override TupletNumber.text = #tuplet-number::calc-fraction-text \tuplet 3/2 { c8[ c] c8[ c] \once \override TupletNumber.transparent = ##t \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
参照
記譜法リファレンス: The tweak command
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < tweak コマンド ] | [ 上へ : 調整手段 ] | [ 内部リファレンス マニュアル > ] |
\single
接頭辞
特定の符頭を赤色にしてサイズを大きくすることによって、強調を行いたいとしましょう。また、それを簡単にするためにこのような関数を定義したとしましょう:
emphNoteHead = { \override NoteHead.color = #red \override NoteHead.font-size = 2 } \relative { c''4 a \once \emphNoteHead f d | }
\once
接頭辞は単音や和音全体には動作しますが、和音内の一つの音符に対しては使うことができません。さっき、\tweak
はこのような場面で使うということを学びました。
\tweak
コマンド を参照してください。しかし、\tweak
は関数と一緒に使うことができません。そこで
\single
の登場です:
emphNoteHead = { \override NoteHead.color = #red \override NoteHead.font-size = 2 } \relative { <c'' a \single \emphNoteHead f d>4 }
要約すると、\single
は \override
を \tweak
に変換します。よって、(和音内の音符のように) 同じタイミングにいくつかのオブジェクトが存在する場合、\once
はその全てに影響を与えるのに対し、
\single
はその内の 1 つに – すぐ後に続く音楽表記のみに – 作用します。
\single
をこのように使用することで、\override
のみから成る簡略化のために定義された関数を、和音内の各音符に対して適用することができます。しかし、\single
は \revert
, \set
, \unset
を
\tweak
に変換することはできません。
参照
学習マニュアル:
\tweak
コマンド,
レイアウトの調整のために変数を使用する
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < single 接頭辞 ] | [ 上へ : 出力を調整する ] | [ レイアウト オブジェクトのプロパティ > ] |
5.2 内部リファレンス マニュアル
5.2.1 レイアウト オブジェクトのプロパティ | ||
5.2.2 インタフェイスの中で見つかるプロパティ | ||
5.2.3 プロパティのタイプ |
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < 内部リファレンス マニュアル ] | [ 上へ : 内部リファレンス マニュアル ] | [ インタフェイスの中で見つかるプロパティ > ] |
5.2.1 レイアウト オブジェクトのプロパティ
あなたがスラーを楽譜に描き、そのスラーが細すぎるためにもう少し太くしたいと思ったとします。どうやってスラーを太くしますか?以前に LilyPond の自由度の高さについて述べたので、そのようなことが可能であることは知っています。あなたはおそらく \override
コマンドが必要であると推測するでしょう。しかしながら、スラーの太さプロパティは存在するのでしょうか?そして、それが存在するならどうやって変更するのでしょうか?このようなことに内部リファレンス マニュアルは触れています。内部リファレンス マニュアルには、あなたがスラーを太くするために必要な情報、他のすべての \override
コマンドを構築するために必要な情報が含まれています。
内部リファレンスを見ていく前に一言警告です。これは リファレンス ドキュメントであり、説明はほんの少しかまったく含まれていません: リファレンスの目的は情報を正確に、かつ簡潔に提供することです。そのため、内部リファレンスを一見してひるんでしまうかもしれません。しかし、心配しないでください!ここにあるガイダンスと説明を読めば、少し練習するだけで、内部リファレンスから必要な情報を取り出せるようになります。
実際の音楽からの簡単な断片を持つ具体例を使用していきましょう:
{ \key es \major \time 6/8 \relative { r4 bes'8 bes[( g]) g | g8[( es]) es d[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
ここで、スラーをもう少し太くしようと決めたことにします。それは可能でしょうか?スラーは確かにレイアウト オブジェクトです。そのため、その疑問は ‘スラーに属していて、太さを制御するプロパティは存在するのか?’ ということになります。その答えを得るために内部リファレンス – 縮めて IR – を見なければなりません。
あなたが使用しているバージョンの LilyPond のための内部リファレンスは LilyPond ウェブサイト https://lilypond.org で見つかるでしょう。ドキュメント ページに行き、内部リファレンスへのリンクをクリックしてください。学習目的のためには標準の HTML バージョンを使うべきであり、‘1 つの大きなページ’ や PDF を使うべきではありません。次の数段落を読めば、あなたが内部リファレンスを読むときに実際にすべきことがわかるでしょう。
内部リファレンスの トップ ページ 下には 5 つのリンクがあります。Backend へのリンクを選択してください。そこにはレイアウト オブジェクトについての情報があります。Backend 下にある All layout objects へのリンクを選択してください。そのページには、あなたが使用しているバージョンの LilyPond で使用されるすべてのレイアウト オブジェクトがアルファベット順でリストアップされています。Slur へのリンクを選択すると、Slur のプロパティがリスト アップされます。
記譜法リファレンスからこのページを見つける方法もあります。スラーについて扱っているページで、内部リファレンスへのリンクが見つかるかもしれません。このリンクでこのページに直接行くことができます。しかしながら、あなたが調整するレイアウト オブジェクトの名前を想像できる場合は、すぐに内部リファレンスに行ってそこで探す方が簡単です。
内部リファレンスの Slur ページでは、まず Slur オブジェクトは
Slur_engraver
によって作成されるということが述べられています。それから、標準設定がリストアップされています。スラーの太さを制御していそうなプロパティを探してブラウザをスクロール ダウンさせていくと、以下が見つかります:
thickness (number) 1.2 Line thickness, generally measured in line-thickness
これが太さを変更するプロパティのようです。thickness
の値は 数 であり、デフォルト値は 1.2、この値は他のプロパティでは line-thickness
と呼ばれるということがわかります。
前にも言ったように、内部リファレンスには説明がほとんど、あるいはまったくありません。しかしながら、すでにスラーの太さを変えるための十分な情報を持っています。レイアウト オブジェクトの名前は Slur
であり、変更するプロパティの名前は thickness
であり、スラーをもっと太くするには新しい値を 1.2 よりも大きくすべきであることがわかります。
今度は、レイアウト オブジェクト名で見つけた値を置き換えることによって
\override
コマンドを構築することができます。コンテキストは省略します。最初は太さに非常に大きな値を割り当ててみます。それによって、そのコマンドが確かに機能していることを確かめることができます。実行するコマンドは以下のようになります:
\override Slur.thickness = #5.0
新しい値の前に #
を付けることを忘れないでください!
最後の疑問は ‘このコマンドをどこに置くべきか?’ ということです。そのことについて不確かであり、学んでいる最中であるのならば、ベストな答えはこうです ‘音楽表記の内部で、最初のスラーの直前’。ではやってみましょう:
{ \key es \major \time 6/8 \relative { % これ以降にある全てのスラーの太さを 1.2 から 5.0 にします \override Slur.thickness = #5.0 r4 bes'8 bes[( g]) g | g8[( es]) es d[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
確かにスラーが太くなっています。
これが \override
コマンドを構築する基本的な方法です。これより後のセクションで遭遇するものはもう少し複雑ですが、必要な要点はすべて知っています
– しかしながら、まだ練習が必要でしょう。これは以下の例で提供されます。
コンテキストを見つけ出す
しかしながら、まず最初にコンテキストを指定しなければならないとしたらどうでしょうか?指定すべきコンテキストは何でしょうか?スラーとボイスは音楽表記の各行で明らかに関係が深いので、スラーは Voice
コンテキストの中にあると推測できるかもしれません。しかし、それは確かでしょうか?この問題を解決するには、Slur について記述している内部リファレンス ページの先頭に戻ります。そこには ‘Slur オブジェクトは Slur エングラーバによって作成される’ と書かれています。そのため、スラーは Slur_engraver
が存在しているコンテキストのどれかで作成されるということになります。Slur_engraver
へのリンクを辿ります。そのページの最後の方で Slur_engraver
は 7 つのボイス コンテキスト
– 標準のボイス コンテキストである Voice
を含む
– の一部であることが述べられています。ですから、推測は正しかったのです。そして、Voice
は最下位のコンテキストの 1 つである
– このことは、そこに音符を入力するという事実によって明らかに示されています
– ため、ここではそのコンテキストを省略することができるのです。
1 回だけオーバライドする
上記の最後の例では すべて のスラーが太くなっています。しかし、最初のスラーだけを太くしたい場合はどうでしょうか?これは \once
コマンドを使うことによって達成されます。\override
コマンドの直前に \once
コマンドを置くことによって、\override
コマンドは 直後にある 音符から始まるスラーだけを変更するようになります。直後にある音符がスラーの開始点ではない場合、そのコマンドはまったく機能しません
– それがスラーに遭遇するまで保持されるということはなく、ただ切り捨てられるだけです。そのため、\once
コマンド付きの \override
コマンドは以下のように上記の例とは異なる場所に置かなくてはなりません:
{ \key es \major \time 6/8 \relative { r4 bes'8 % 直後にあるスラーのみを太くします \once \override Slur.thickness = #5.0 bes8[( g]) g | g8[( es]) es d[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
今度は、最初のスラーだけが太くなりました。
\once
コマンドは \set
コマンドの前でも使用される可能性があります。
元に戻す
最後に、最初の 2 つだけのスラーを太くしたい場合はどうでしょうか?その場合、2 つのコマンド – それぞれの前に \once
を付けた –
をスラーが始まる音符の直前に置きます:
{ \key es \major \time 6/8 \relative { r4 bes'8 % 直後にあるスラーのみを太くします \once \override Slur.thickness = #5.0 bes[( g]) g | % 直後にあるスラーのみを太くします \once \override Slur.thickness = #5.0 g8[( es]) es d[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
あるいは、\once
コマンドを省略して、2 番目のスラーの後に
thickness
プロパティをデフォルト値に戻すために
\revert
コマンドを使うこともできます:
{ \key es \major \time 6/8 \relative { r4 bes'8 % 以後のスラーの太さを 1.2 から 5.0 に増やします \override Slur.thickness = #5.0 bes[( g]) g | g8[( es]) es % 以後のスラーの太さをデフォルトの 1.2 に戻します \revert Slur.thickness d8[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
\revert
コマンドは \override
コマンドで変更されたどのプロパティでもデフォルト値に戻すことができます。状況に相応しい方を使用してください。
これで内部リファレンスと調整の基本的な方法についての紹介を終わりにします。この章で後に続くセクションの中にあるいくつのかの例でも一部では、内部リファレンスの特徴についての追加の紹介や、そこから情報を取り出すための更なる練習を提供します。それらの例ではガイダンスや説明のための言葉はずっと少ないでしょう。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < レイアウト オブジェクトのプロパティ ] | [ 上へ : 内部リファレンス マニュアル ] | [ プロパティのタイプ > ] |
5.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 つ挙げます。プロパティには値としてシンボル (例えば italic
) を取るものがあります。シンボルの前にはアポストロフィ '
を置く必要があり、そうすることで内部的に
LilyPond に読み込まれます。任意のテキスト文字列との違い – 任意のテキスト文字列は "a text string"
のような形で表記されます – に注意してください。シンボルと文字列についてのより詳細な説明は
Scheme tutorial
を参照してください。
さて、それでは歌詞をイタリック体で譜刻するために必要となる
\override
コマンドは以下のようになります:
\override LyricText.font-shape = #'italic
そして、これは以下のように影響を与える歌詞の前に、そして近くに置くべきです:
{ \key es \major \time 6/8 \relative { r4 bes'8 bes[( g]) g | g8[( es]) es d[( f]) as | as8 g } \addlyrics { \override LyricText.font-shape = #'italic The man who | feels love's sweet e -- | mo -- tion } }
これで歌詞がすべてイタリック体で譜刻されました。
Note: 歌詞の中では、最後の音節と終端の波括弧の間に常にスペースを置いてください。
参照
拡張: Scheme tutorial
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < インタフェイスの中で見つかるプロパティ ] | [ 上へ : 内部リファレンス マニュアル ] | [ オブジェクトの見た目 > ] |
5.2.3 プロパティのタイプ
これまでにプロパティのタイプを 2 つ見てきました:
number
と symbol
です。プロパティに与える値が有効であるためには、その値は正しいタイプであり、そのタイプのルールに従っていなければなりません。プロパティのタイプは内部リファレンスの中で常にプロパティ名の後の括弧の中に表示されています。ここに、あなたが必要になるであろうプロパティのタイプを、そのタイプのルールといくつかの例と共にリスト アップします。\override
コマンドの中でプロパティの値を入力する時は、当然、常にそれらの値の前にハッシュ記号 #
を付け加える必要があります
– 例え、その値自体が #
で始まっていたとしても付け加える必要があります。ここでは定数の例だけを示します: Scheme を用いて値の計算をしたいのであれば、
Calculations in Scheme を参照してください。
プロパティ タイプ | 規則 | 例 |
---|---|---|
Boolean | 真か偽のどちらかで、それぞれ #t と #f で表されます | #t , #f |
Dimension (譜スペース) | 小数 (譜スペース単位) | 2.5 , 0.34 |
Direction | 向きを表す有効な定数またはそれと等価な数値 (-1 から 1 までの小数が許可されます) | LEFT , CENTER , UP ,
1 , -1 |
Integer | 整数 | 3 , -1 |
List | 一連の定数またはシンボル。 スペースで区切られ、前にアポストロフィが付いた括弧で囲まれます | '(left-edge staff-bar) , '(1) , '() ,
'(1.0 0.25 0.5) |
Markup | 有効なマークアップ | \markup { \italic "cresc." } |
Moment | make-moment 関数で構築される全音符の分数 | (ly:make-moment 1/4) ,
(ly:make-moment 3/8) |
Number | 正または負の小数 | 3.5 , -2.45 |
(数の) Pair | ‘スペース . スペース’ で区切られ、前にアポストロフィが付いた括弧で囲まれた 2 つの数値 | '(2 . 3.5) , '(0.1 . -3.2) |
Symbol | プロパティに許可されているシンボルのセットのいずれかであり、前にアポロストロフィを付けます | 'italic , 'inside |
Unknown | 手続き。何のアクションも起こさない場合は #f | bend::print , ly:text-interface::print ,
#f |
Vector | #( …) で囲まれたいくつかの定数 | #(#t #t #f) |
参照
拡張: Scheme tutorial
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < プロパティのタイプ ] | [ 上へ : 出力を調整する ] | [ オブジェクトの可視性と色 > ] |
5.3 オブジェクトの見た目
いくつかの例を使ってこれまでに学んだことを練習して、譜刻される楽譜の見た目を変更するためにどのように調整が使われるのかを見ていきましょう。
5.3.1 オブジェクトの可視性と色 | ||
5.3.2 オブジェクトのサイズ | ||
5.3.3 オブジェクトの長さと太さ |
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < オブジェクトの見た目 ] | [ 上へ : オブジェクトの見た目 ] | [ stencil プロパティ > ] |
5.3.1 オブジェクトの可視性と色
教育目的の楽譜では、ある要素を省略した楽譜を譜刻して、学生にそれを付け足させるという訓練にしたいと思うかもしれません。簡単な例として、その訓練とは小節線の無い楽譜だと仮定してみましょう。しかしながら、通常、小節線は自動的に挿入されます。どうやって小節線が譜刻されることを防ぐのでしょうか?
このことに挑戦する前に、オブジェクト プロパティは インタフェイス と呼ばれるものにグループ化されているということを思い出してください – インタフェイスの中で見つかるプロパティ を参照してください。これはあるグラフィカル オブジェクトを調整するために一緒に使用されるかもしれないプロパティをグループ化したものです – あるオブジェクトに対してインタフェイス内のプロパティの 1 つを使うことが許可されるのなら、他のプロパティも許可されます。あるオブジェクトはいくつかのインタフェイス内にあるプロパティを使用し、別のオブジェクトはそれとは別のインタフェイス内にあるプロパティを使用します。ある特定のグラフィカルオブジェクトによって使用されるプロパティを保持しているインタフェイスは、そのグラフィカル オブジェクトについて記述している内部リファレンス ページの最後にリスト アップされていて、それらのプロパティはそれらのインタフェイスを参照することによって閲覧できます。
グラフィカル オブジェクトについての情報を見つけ出す方法を
レイアウト オブジェクトのプロパティ で説明しました。同じアプローチを使って、内部リファレンスで小節線を譜刻するレイアウト オブジェクトを見つけ出します。Backend を経由して All layout objects に行くと、そこに BarLine
と呼ばれるレイアウト オブジェクトがあることがわかります。そのレイアウト オブジェクトのプロパティには小節線の可視性をコントロールする
2 つのプロパティが含まれています: break-visibility
と stencil
です。さらに、BarLine
はインタフェイスのいくつかをサポートしています。grob-interface
もサポートされていて、そこには transparent
プロパティと color
プロパティが含まれています。これらすべてが小節線の可視性に影響を与えます (そしてもちろん、拡大解釈すれば他の多くのレイアウト オブジェクトにも影響を与えます)。次はこれらのプロパティをそれぞれ見ていきましょう。
stencil プロパティ | ||
break-visibility property | ||
transparent プロパティ | ||
color プロパティ |
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < オブジェクトの可視性と色 ] | [ 上へ : オブジェクトの可視性と色 ] | [ break-visibility プロパティ > ] |
stencil
プロパティ
このプロパティは譜刻すべきシンボル (図柄) を指定することによって小節線の見た目を制御します。他の多くのプロパティでも共通に言えますが、このプロパティの値に
#f
をセットすることによって何も譜刻させなくすることができます。ではやってみましょう。以前と同様に、暗黙のコンテキスト Voice
は省略します:
\relative { \time 12/16 \override BarLine.stencil = ##f c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
小節線はまだ譜刻されています。何が間違っているのでしょうか?内部リファレンスに戻って、BarLine
のプロパティを記述しているページを読み返してください。そのページの先頭に
“BarLine オブジェクトは Bar_engraver によって作成されます” と記述されています。Bar_engraver
ページに行ってください。そのページの最後で、Bar_engraver
を保持するコンテキストがリスト アップされています。それらのコンテキストのタイプはすべて Staff
です。ですから、\override
コマンドが予期したように機能しなかったのは、BarLine
はデフォルトの Voice
コンテキストの中にはいなかったからなのです。コンテキストが間違って指定された場合、そのコマンドは機能しません。エラー メッセージは生成されず、ログ ファイルには何もログが残りません。正しいコンテキストを付け加えることによってコマンドを修正してみましょう:
\relative { \time 12/16 \override Staff.BarLine.stencil = ##f c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
今度は小節線が消えました。stencil
プロパティに #f
をセットする操作は頻繁に行うので、短くしたコマンド \omit
が用意されています:
\relative { \time 12/16 \omit Staff.BarLine c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
しかしながら、stencil
プロパティを #f
にセットするのではなく、オブジェクトの大きさを修正する必要があるオブジェクトも存在するということに注意してください。そのようなオブジェクトの stencil
プロパティを #f
にセットするとエラーになります。
例えば、NoteHead
オブジェクトの stencil
プロパティを
#f
にセットするとエラーになります。この場合、point-stencil
を使ってサイズが 0 のステンシル (型、型紙) をオブジェクトにセットします:
\relative { c''4 c \once \override NoteHead.stencil = #point-stencil c4 c }
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < stencil プロパティ ] | [ 上へ : オブジェクトの可視性と色 ] | [ transparent プロパティ > ] |
break-visibility
property
内部リファレンスの BarLine
のプロパティから
break-visibility
プロパティには 3 つのブール値からなるベクトルが必要であることがわかります。これらはそれぞれ、小節線が行の最後、行の途中、行の最初に譜刻されるかどうかを制御します。以下の例ではすべての小節線を消したいので、必要となる値は
#(#f #f #f)
です
(同じ結果を all-invisible
でも得ることができます)。それではやってみましょう。Staff
コンテキストを含めることを忘れないでください。また、この値を書くときに括弧を始める前に ##
を付ける必要があることにも注意してください。#
の 1 つはベクトルを導入するときに値の一部として必要とされ、先頭の #
は \override
コマンドの中で常に値の前に置くことが必要とされます。
\relative { \time 12/16 \override Staff.BarLine.break-visibility = ##(#f #f #f) c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
今度もすべての小節線が消えました。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < break-visibility プロパティ ] | [ 上へ : オブジェクトの可視性と色 ] | [ color プロパティ > ] |
transparent
プロパティ
内部リファレンスの grob-interface
ページにあるプロパティから
transparent
プロパティはブール値であることがわかります。これはグラフィカル オブジェクトを透明にする場合には #t
にセットします。次の例では、小節線ではなく拍子記号を不可視にしてみましょう。そうするには、まず、拍子記号のグラフィカル オブジェクト名を見つける必要があります。TimeSignature
レイアウト オブジェクトのプロパティを見つけるために内部リファレンスの ‘すべてのレイアウト オブジェクト’ ページに戻ってください。TimeSignature
は Time_signature_engraver
によって作り出され、さらに、Time_signature_engraver
は Staff
コンテキストに含まれ、さらに、Staff
コンテキストは grob-interface
をサポートしているということがわかります。そのため、拍子記号を透明にするためのコマンドは以下のようになります:
\relative { \time 12/16 \override Staff.TimeSignature.transparent = ##t c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
transparent
プロパティに #t
をセットする操作も頻繁に行うので、短くしたコマンド \hide
が用意されています:
\relative { \time 12/16 \hide Staff.TimeSignature c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
どちらの場合でも拍子記号は消えました。しかしながら、このコマンドは拍子記号があるべき場所に隙間を残しています。たぶん、これは学生がその部分を埋めるための練習としては望ましいでしょうが、他の状況ではこの隙間は望ましくありません。この隙間を取り除くには、拍子記号の transparent
の代わりにステンシル (型、型紙) を #f
にセットします:
\relative { \time 12/16 \omit Staff.TimeSignature c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
違いは明白です: ステンシルを #f
にセットする
(\omit
を用いることもできます) と、オブジェクト自体が削除されます。一方、オブジェクトを transparent
(透明) にする
(\hide
を用いることもできます)とそのオブジェクトは消えますが、オブジェクトは不可視になっただけです。
色 (color)
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < transparent プロパティ ] | [ 上へ : オブジェクトの可視性と色 ] | [ オブジェクトのサイズ > ] |
color
プロパティ
最後に、小節線の色を白にすることによって小節線を不可視にしてみましょう。(これには白い小節線が譜線と交差したところで譜線を見えたり見えなくしてしまうかもしれないという問題があります。以下のいくつかの例で、このことを予測することはできないと思うかもしれません。そうなる理由と、それを制御する方法についての詳細は、 Painting objects white でカバーされています。しかしここでは色について学んでいるところなので、オブジェクトを白で描くことの限界を受け入れるだけにしてください。)
grob-interface
はカラー プロパティの値はリストであると指定しています。しかしながら、そのリストが何であるべきなのかの説明はありません。カラー プロパティで必要とされるリストは実際のところ内部ユニットの中にある値のリストです。しかし、内部ユニットの中にある値を知らなくても済むように、カラーを指定するための手段がいくつか用意されています。最初の方法は
List of colors にある最初の表でリスト アップされている
‘標準’ のカラーの 1 つを使用する方法です。小節線を白にするには以下のように記述します:
\relative { \time 12/16 \override Staff.BarLine.color = #white c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
今度も再び小節線は見えなくなりました。white の前にアポストロフィは付かないということに注意してください – これはシンボルではなく変数です。この変数は評価される時、小節線の色を白にセットするのに必要な内部的な値のリストを提供します。標準カラー リストにある他のカラーもまた変数です。小節線の色をこのリストの中にある他の変数に変更することで、これが機能することをあなた自身で納得できます。
カラーを変えるための 2 つ目の方法は、
List of colors の
2 番目のリストの中にある X11 カラー名のリストを使用する方法です。しかしながら、X11 カラー名は関数 x11-color
によって実際の値にマッピングされます。x11-color
は以下のように X11 カラー シンボルを内部値のリストに変換します:
\relative { \time 12/16 \override Staff.BarLine.color = #(x11-color 'white) c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
この場合、関数 x11-color
はシンボルを引数として扱うので、変数として評価されないようシンボルの前にアポストロフィを付ける必要があり、関数呼び出し全体を括弧で囲む必要があるということに注意してください。
もう 1 つ関数があります。RGB 値を内部カラーに変換する rgb-color
関数です。この関数は赤、緑、青の輝度を表す 3 つの引数をとります。これらの引数は 0 から 1 までの値をとります。ですから、カラーを赤にセットする場合の値は (rgb-color 1 0 0)
となり、白の場合は (rgb-color 1 1 1)
となります:
\relative { \time 12/16 \override Staff.BarLine.color = #(rgb-color 1 1 1) c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
最後に、X11 カラー セットの一部であるグレー スケールを用いる方法もあります。グレー スケールの範囲は黒 'grey0
から白 'grey100
まで
1 段階ずつあります。グレー スケールの使用方法を示すために、例の中にあるすべてのレイアウト オブジェクトのカラーをさまざまな濃度のグレーにセットしてみましょう:
\relative { \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) c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
各レイアウト オブジェクトに関連付けされているコンテキストに注意してください。これらのコンテキストを正しく取得することが重要であり、そうしなければコマンドは機能しません!コンテキストの中には特定のエングラーバが置かれているということを忘れないでください。エングラーバに対するデフォルト コンテキストを見つけ出すには、内部リファレンスのレイアウト オブジェクトからスタートして、そこからそれを作り出すエングラーバのページに行きます。エングラーバのページには、通常はどのコンテキストにそのエングラーバが含まれているのかが記述されています。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < color プロパティ ] | [ 上へ : オブジェクトの見た目 ] | [ オブジェクトの長さと太さ > ] |
5.3.2 オブジェクトのサイズ
以前の例を見直すことから始めてみましょう (音楽表記をネストする を参照してください)。そこでは ossia として新たに一時的な譜を導入する方法が示されています。
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" } { f8 f c } >> r4 | } }
通常、オッシアは音部記号と拍子記号無しで記述され、メインの譜よりもわずかに小さく譜刻されます。今度は、すでに音部記号と拍子記号を削除する方法を知っています
– 以下のようにそれぞれのステンシルを #f
にセットするだけです:
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" } { \omit Staff.Clef \omit Staff.TimeSignature { f8 f c } } >> r4 | } }
ここで、\with
節の後にある追加の括弧のペアが、その括弧に囲まれているオーバライドと音楽がオッシア譜に適用されることを保証するために、必要となります。
しかし、\with
を用いた譜コンテキストの変更と \override
を用いた音部記号と拍子記号のステンシルの変更 (あるいはこのケースでは
\omit
を用いています) との違いは何なのでしょうか?主な違いは、\with
節の中で行われた変更はそのコンテキストが作成されるときに行われ、そのコンテキストでは デフォルト 値として残ります。一方、音楽の中に埋め込まれた \set
コマンドや
\override
コマンドは動的です
– それらは音楽のある特定のポイントに同期して変更を行います。変更が \unset
や \revert
を使ってセットを解除されたり元に戻された場合、デフォルト値
– これは \with
節でセットされていた場合はその値、そうでない場合は通常のデフォルト値 – に戻ります。
いくつかのコンテキスト プロパティは \with
節でのみ変更可能です。これらは、コンテキストが作成された後では、変更されることのないプロパティです。alignAboveContext
とそのパートナー alignBelowContext
がそのようなプロパティです – いったん譜が作成されると、譜のアラインメントは決定され、それを後で変更しようとすることには意味がありません。
レイアウト オブジェクトのデフォルト値は \with
節でセットすることもできます。通常の \override
コマンドをコンテキスト名を省いて使用するだけです。コンテキスト名を省略するのは、そのコンテキストは明らかに
\with
節が変更しようとしているコンテキストだからです。実際、\with
節の中でコンテキストを指定するとエラーが発生します。
それでは上記の例を以下のように書き換えます:
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" % この譜には音部記号を譜刻しません \override Clef.stencil = ##f % この譜には拍子記号を譜刻しません \override TimeSignature.stencil = ##f } { f8 f c } >> r4 | } }
transparent
プロパティを設定したり stencil
を消すために短縮形 \hide
と \omit
を使うことができ、結果として以下のようになります:
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" % この譜には音部記号を譜刻しません \omit Clef % この譜には拍子記号を譜刻しません \omit TimeSignature } { 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 { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" \omit Clef \omit TimeSignature % すべてのフォント サイズを約 24% 減らします fontSize = #-2 } { f8 f c } >> r4 | } }
これでもまだ完璧ではありません。符頭とフラグは小さくなりましたが、符幹はそれに対して長すぎ、譜線は離れすぎています。これらをフォント サイズの減少に比例してスケール ダウンさせる必要があります。次のサブ セクションでそれを行う方法について議論します。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < オブジェクトのサイズ ] | [ 上へ : オブジェクトの見た目 ] | [ オブジェクトの配置 > ] |
5.3.3 オブジェクトの長さと太さ
LilyPond では距離と長さは一般に譜スペース – 譜の中の隣り合う線の間隔 –
で測ります (特別な場合では、譜スペースの半分で測ることもあります)。一方、たいていの thickness
プロパティは line-thickness
と呼ばれる内部プロパティを単位として測ります。例えば、デフォルトでは、ヘアピン (訳者: 強弱記号) の線の太さは
1 単位の line-thickness
であり、音符の符幹の thickness
は 1.3 です。けれども、それとは単位の異なる太さプロパティがあるということにも注意してください。例えば、連桁の太さプロパティは譜スペースで測ります。
それでは、どうやって長さをフォント サイズに比例させるのでしょうか?これは、まさにこの目的のために提供されている magstep
と呼ばれる特別な関数の助けを借りることによって達成できます。この関数は引数を 1 つ – フォント サイズの変化 (前の例では #-2) –
をとり、他のオブジェクトの縮小に比例したスケーリング ファクタを返します。以下のように使用します:
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" \omit Clef \omit TimeSignature fontSize = #-2 % 符幹の長さと譜線の間隔を減らします \override StaffSymbol.staff-space = #(magstep -2) } { f8 f c } >> r4 | } }
符幹の長さと他の多くの長さに関係するプロパティは常に
staff-space
プロパティの値と比例関係になるよう算出されるため、それらの長さも自動的にスケール ダウンされます。これはオッシアの垂直方向のスケールだけに効果を及ぼすということに注意してください – 水平方向のスケールは、メインの音楽と同期するよう、メインの音楽のレイアウトによって決定されるため、水平方向のスケールは
staff-space
の変更によっていかなる影響も受けません。もちろん、メインの音楽のすべてのスケールがこの方法で変更された場合、水平方向のスペースも影響を受けます。このことについては、後のレイアウト セクションで議論します。
そして、これでオッシアの作成は完了です。他のすべてのオブジェクトのサイズと長さが類似の方法で変更されるかもしれません。
上記の例のようなスケールのちょっとした変更に対して、小節線、連桁、ヘアピン、スラーなどのさまざまな描画線の太さは通常はグローバルな調節を必要としません。ある特定のレイアウト オブジェクトの太さを調節する必要がある場合、それを達成する最良の方法はそのオブジェクトの thickness
プロパティをオーバライドすることです。スラーの太さを変更する例は レイアウト オブジェクトのプロパティ で示されています。すべての描画オブジェクト (つまり、フォントから作り出されるオブジェクトではないもの) の太さが同様の方法で変更されるかもしれません。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < オブジェクトの長さと太さ ] | [ 上へ : 出力を調整する ] | [ 自動配置 > ] |
5.4 オブジェクトの配置
5.4.1 自動配置 | ||
5.4.2 譜内部オブジェクト | ||
5.4.3 譜外部オブジェクト |
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < オブジェクトの配置 ] | [ 上へ : オブジェクトの配置 ] | [ 譜内部オブジェクト > ] |
5.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’ のすぐ下に納まるよう配置されていることに注意してください。
c''2^"Text1" c''2^"Text2" | c''2^"Text3" c''2^"Text4" |
デフォルトでは、譜も互いにできるだけ近くなるよう配置されます (最小間隔に従います)。音符が隣接する譜に向かって長く突き出てている場合、譜を離さないと記譜したものが重なり合ってしまう場合にのみ譜は離されます。以下の例は譜の調整によって音符が ‘ぴったりと納まる’ 様子を示しています:
<< \new Staff { \relative { c'4 a, } } \new Staff { \relative { c''''4 a, } } >>
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < 自動配置 ] | [ 上へ : オブジェクトの配置 ] | [ direction プロパティ > ] |
5.4.2 譜内部オブジェクト
これまでにコマンド \voiceXXX
がスラー、タイ、運指法記号、符幹の向きに依存する他のすべてに対してどのように影響を与えるかを見てきました
– ボイスを明示的にインスタンス化する を参照してください。
これらのコマンドは、多声部音楽を記述しているときに上下する旋律を見分けられるようにすることを可能にするために不可欠なものです。しかしながら、この自動機能をオーバライドする必要がある場合もあります。このオーバライドは音楽全体に対しても、個々の音符に対してもできます。この自動機能を制御しているプロパティは各レイアウト オブジェクトの
direction
プロパティです。まず、これは何をするのかを説明し、それから、作成済みのコマンドをいくつか紹介します。それらのコマンドを使うと、一般的な変更のための明示的なオーバライドをコードしなくて済みます。
スラーやタイのようなレイアウト オブジェクトはカーブを描き、曲がり、上下します。符幹やフラグのような他のオブジェクトも上下の向きによって位置が左右します。direction
がセットされているときは、これは自動的に制御されます。
direction プロパティ | ||
運指 |
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < 譜内部オブジェクト ] | [ 上へ : 譜内部オブジェクト ] | [ 運指 > ] |
direction
プロパティ
以下の例は、最初の小節でスラーのデフォルトの振る舞いを示しています。高い位置にある音符のスラーは音符の上にあり、低い位置にある音符のスターは音符の下にあります。次の小節では両方のスラーをすべて強制的に下向きにし、 さらに次の小節では両方のスラーをすべて強制的に上向きにし、 最後の小節ではスラーの向きをデフォルトに戻します。
a'4( g') c''( a') | \override Slur.direction = #DOWN a'4( g') c''( a') | \override Slur.direction = #UP a'4( g') c''( a') | \revert Slur.direction a'4( g') c''( a') |
ここで定数 DOWN
と UP
を使っています。これらはそれぞれ値 -1
と +1
を持ち、定数の代わりにそれらの数値を使うこともできまはす。さらに値 0
を使う場合もあります。この値はスラーでは UP
を意味するものとして扱われますが、いくつかのオブジェクトでは ‘center’ という意味になります。値 0
を持つ定数に CENTER
があります。
しかしながら、これらの明示的なオーバライドは普通は使われません。もっと簡単で定義済みのコマンドが利用可能だからです。ここに一般的なコマンドの表を挙げます。それぞれのコマンドの意味が明白でない場合は、そのコマンドの意味を述べています。
下/左 | 上/右 | 元に戻す | 効果 |
---|---|---|---|
\arpeggioArrowDown | \arpeggioArrowUp | \arpeggioNormal | 矢印が下に付く、上に付く、付かない |
\dotsDown | \dotsUp | \dotsNeutral | 譜線を避けるための移動方向 |
\dynamicDown | \dynamicUp | \dynamicNeutral | |
\phrasingSlurDown | \phrasingSlurUp | \phrasingSlurNeutral | Note: スラー コマンドとは別になります |
\slurDown | \slurUp | \slurNeutral | |
\stemDown | \stemUp | \stemNeutral | |
\textSpannerDown | \textSpannerUp | \textSpannerNeutral | スパナとして挿入されるテキストが譜の下/上にくる |
\tieDown | \tieUp | \tieNeutral | |
\tupletDown | \tupletUp | \tupletNeutral | 連符記号が音符の下/上にくる |
これらのコマンドで中立/通常の位置に戻すコマンドは \revert
を用いることで実装されていて、これらは前に \once
が付いて いない
かもしれません。\override
を用いて実装されているコマンドの効果を単一のタイミングに限定したいのであれば、明示的なオーバライドの場合と同様に、コマンドの前に \once
を配置します。
あるいは、単に 1 つのレイアウト オブジェクトを上向きか下向きにしたいなら、方向指示子の ^
か _
を使うことができます:
a'4( g') c''( a') | a'4^( g') c''_( a') |
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < direction プロパティ ] | [ 上へ : 譜内部オブジェクト ] | [ 譜外部オブジェクト > ] |
運指
単一の音符に対する運指法記号の配置も direction
プロパティによって制御できますが、direction
を変更しても和音の運指法記号は影響を受けません。これから見ていくように、和音の中の個々の音符の運指法記号を制御するための特別なコマンドがあります。このコマンドを使うことで運指法記号を各音符の上、下、左、右に配置することができます。
まず、単一の音符の運指法記号に対する direction
を効果を示します。最初の小節はデフォルト状態で、その後で DOWN
と UP
を指定したときの効果を示します:
\relative { c''4-5 a-3 f-1 c'-5 | \override Fingering.direction = #DOWN c4-5 a-3 f-1 c'-5 | \override Fingering.direction = #UP c4-5 a-3 f-1 c'-5 | }
しかしながら、direction
プロパティをオーバライドすることは、手動で運指法記号を音符の上または下に配置するもっとも簡単な方法ではありません。運指法番号の前に -
の代わりに _
または ^
を使う方が普通は適切です。ここで、上記の例にこの方法を用いた例を挙げます:
\relative { c''4-5 a-3 f-1 c'-5 | c4_5 a_3 f_1 c'_5 | c4^5 a^3 f^1 c'^5 | }
direction
プロパティは和音では無視されますが、方向を示す接頭辞 _
と ^
は機能します。以下で示すように、デフォルトでは、運指法記号は和音の音符の上と下の両方に自動的に配置されます:
\relative { <c''-5 g-3>4 <c-5 g-3 e-2>4 <c-5 g-3 e-2 c-1>4 }
しかし、以下で示すように、運指法番号のすべてまたはいずれかを手動で強制的に和音の上または下に配置するために、これはオーバライドされるかもしれません:
\relative { <c''-5 g-3 e-2 c-1>4 <c^5 g_3 e_2 c_1>4 <c^5 g^3 e^2 c_1>4 }
\set fingeringOrientations
コマンドを使うことによって和音の中にある個々の音符の運指法記号の配置をより細かく制御することさえできます。このコマンドのフォーマットは以下のようなものです:
\set fingeringOrientations = #'([up] [left/right] [down])
fingeringOrientations
は Voice
コンテキストのプロパティであり、New_fingering_engraver
によって作成、使用されるため、\set
が使用されます。
このプロパティには 1 つから 3 つまでの値のリストがセットされるかもしれません。このプロパティは運指法記号を上 (リストに up
がある場合)、下 (リストに down
がある場合)、左 (リストに left
がある場合。リストに right
がある場合は右)
に配置します。逆に配置位置がリストされていない場合、その位置に運指法記号は配置されません。LilyPond はこれらの制約を受け取り、
後に続く和音の音符への運指法記号をうまく配置します。left
と right
は相互排他的であるということに注意してください –
運指法記号は左右のどちらかにしか配置されないか、どちらにも配置されません。
Note: このコマンドを使って単一の音符への運指法記号の配置をコントロールするには、その音符を山括弧で囲んで単一音符の和音として記述する必要があります。
いくつか例を挙げます:
\relative { \set fingeringOrientations = #'(left) <f'-2>4 <c-1 e-2 g-3 b-5>4 \set fingeringOrientations = #'(left) <f-2>4 <c-1 e-2 g-3 b-5>4 | \set fingeringOrientations = #'(up left down) <f-2>4 <c-1 e-2 g-3 b-5>4 \set fingeringOrientations = #'(up left) <f-2>4 <c-1 e-2 g-3 b-5>4 | \set fingeringOrientations = #'(right) <f-2>4 <c-1 e-2 g-3 b-5>4 }
運指法記号が少し込み合っているように見える場合は、font-size
でサイズを下げることができます。デフォルト値は内部リファレンスの Fingering
オブジェクトのページから
-5
であることがわかるので、-7
にセットしてみましょう:
\relative { \override Fingering.font-size = #-7 \set fingeringOrientations = #'(left) <f'-2>4 <c-1 e-2 g-3 b-5>4 \set fingeringOrientations = #'(left) <f-2>4 <c-1 e-2 g-3 b-5>4 | \set fingeringOrientations = #'(up left down) <f-2>4 <c-1 e-2 g-3 b-5>4 \set fingeringOrientations = #'(up left) <f-2>4 <c-1 e-2 g-3 b-5>4 | \set fingeringOrientations = #'(right) <f-2>4 <c-1 e-2 g-3 b-5>4 }
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < 運指 ] | [ 上へ : オブジェクトの配置 ] | [ outside-staff-priority プロパティ > ] |
5.4.3 譜外部オブジェクト
譜外部オブジェクトは自動的に衝突を回避するよう配置されます。配置が最適でない場合に自動配置をオーバライドする方法がいくつかあります。
outside-staff-priority プロパティ | ||
\textLengthOn コマンド | ||
強弱記号の配置 | ||
グラフィカル オブジェクトのサイズ |
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < 譜外部オブジェクト ] | [ 上へ : 譜外部オブジェクト ] | [ textLengthOn コマンド > ] |
outside-staff-priority
プロパティ
小さな値の outside-staff-priority
プロパティを持つオブジェクトは譜の近くに配置され、他の譜外部オブジェクトは衝突を避けるのに必要な分だけ離されます。outside-staff-priority
は grob-interface
の中で定義されているため、すべてのレイアウト オブジェクトのプロパティです。デフォルトでは、すべての譜内部オブジェクトの outside-staff-priority
は
#f
にセットされていて、譜外部オブジェクトが作成されたときにその譜外部オブジェクトの outside-staff-priority
に適当な数値がセットされます。以下の表はいくつかの一般的な譜外部オブジェクトのデフォルトの
outside-staff-priority
値を示しています。
レイアウト オブジェクト | 優先度 | 以下のオブジェクトの配置を制御する: |
---|---|---|
RehearsalMark | 1500 | リハーサル記号 |
MetronomeMark | 1000 | メトロノーム記号 |
SostenutoPedalLineSpanner | 1000 | ペダル記号 |
SustainPedalLineSpanner | 1000 | |
UnaCordaPedalLineSpanner | 1000 | |
MeasureCounter | 750 | 小節番号 |
VoltaBracketSpanner | 600 | Volta (番号付きのリピート) の囲み |
InstrumentSwitch | 500 | 楽器を変更するテキスト |
TextScript | 450 | マークアップ テキスト |
MultiMeasureRestText | 450 | 複数小節にわたる休符上のテキスト |
CombineTextScript | 450 | パート結合のテキスト |
OttavaBracket | 400 | オッターバ (オクターブを上下させる記号) の囲み |
TextSpanner | 350 | テキスト スパナ |
DynamicLineSpanner | 250 | すべての強弱記号 |
BarNumber | 100 | 小節番号 |
TrillSpanner | 50 | トリル記号 |
AccidentalSuggestion | 0 | 注釈的な臨時記号 (音符の上に付く臨時記号、ムジカ・フィクタ) |
これらのうちのいくつかのデフォルトでの配置を示している例を挙げます。
% 以降のテキスト スパナの詳細を設定します \override TextSpanner.bound-details.left.text = \markup { \small \bold Slower } % 強弱記号を譜の上に配置します \dynamicUp % オッターバ囲みの開始 \ottava #1 c''4 \startTextSpan % 強弱テキストとヘアピンを付け加えます c''4\pp\< c''4 % テキスト スクリプトを付け加えます c''4^Text | c''4 c'' % 強弱テキストを付け加え、強弱ヘアピンを終わらせます c''4\ff c'' \stopTextSpan | % オッターバ囲みを終わらせます \ottava #0 c'4 c' c' c' |
この例はテキスト スパナ – 音楽の上に置かれる延長線付きのテキスト – の作成方法についても示しています。スパナは \startTextSpan
コマンドから
\stopTextSpan
コマンドまで延び、テキストのフォーマットは
\override TextSpanner
コマンドによって定義されます。詳細は
テキスト スパナ を参照してください。
この例はさらにオッターバ囲みを作成する方法についても示しています。
outside-staff-priority
のデフォルト値による配置があなたの望みに合わない場合、いずれかのオブジェクトの優先度をオーバライドすることになるかもしれません。上記の例で、オッターバ囲みをテキスト スパナの下に配置したいとします。すべきことは、OttavaBracket
は Staff
コンテキストの中に作成されるということを思い出し、OttavaBracket
の優先度を内部リファレンスか上記の表で調べて、それを TextSpanner
の値よりも小さくすることです:
% 以降のテキスト スパナの詳細を設定します \override TextSpanner.bound-details.left.text = \markup { \small \bold Slower } % 強弱記号を譜の上に配置します \dynamicUp % 以降のオッターバ囲みをテキスト スパナの下に配置します \once \override Staff.OttavaBracket.outside-staff-priority = #340 % オッターバ囲みの開始 \ottava #1 c''4 \startTextSpan % 強弱テキストを付け加えます c''4\pp % 強弱の線スパナを付け加えます c''4\< % テキスト スクリプトを付け加えます c''4^Text | c''4 c'' % 強弱テキストを付け加えます c''4\ff c'' \stopTextSpan | % オッターバ囲みを終わらせます \ottava #0 c'4 c' c' c' |
これらのオブジェクトのいくつか
– 特に、小節番号、メトロノーム記号、それにリハーサル記号 –
はデフォルトでは Score
コンテキストの中にあるため、それらのプロパティをオーバライドする場合は適切なコンテキストを指定する必要があることに注意してください。
スラーはデフォルトでは譜内部オブジェクトに分類されています。しかしながら、譜の上部に配置された音符に付くスラーはしばしば譜の上に表示されます。このことは、スラーがまず最初に配置されるため、アーティキュレーションなどの譜外部オブジェクトをあまりにも高い位置に押し上げる可能性があります。アーティキュレーションの avoid-slur
プロパティに
'inside
をセットすることでアーティキュレーションをスラーよりも内側に配置することができます。しかし、avoid-slur
プロパティはアーティキュレーションの
outside-staff-priority
が #f
にセットされている場合にのみ効果を持ちます。代替手段として、スラーの outside-staff-priority
に数値をセットすることによって、スラーを他の譜外部オブジェクトとともに
outside-staff-priority
値に従って配置することができます。ここで、2 つの方法の効果を示す例を挙げます:
\relative c'' { c4( c^\markup { \tiny \sharp } d4.) c8 | c4( \once \override TextScript.avoid-slur = #'inside \once \override TextScript.outside-staff-priority = ##f c4^\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” の優先度を大きくすることです:
c''2^"Text1" c''2^"Text2" | \once \override TextScript.outside-staff-priority = #500 c''2^"Text3" c''2^"Text4" |
これはたしかに “Text3” を “Text4” の上に配置しています。しかし、“Text3”を “Text2” の上に配置して、“Text4” を押し下げてもいます。おそらく、これはそれほど望ましい結果ではないでしょう。本当に望んでいることは、すべての注釈を譜の上に譜から同じ距離だけ離して配置することです。そうするには明らかに、テキストのためにもっと広いスペースを確保するために、音符を水平方向に広げる必要があります。これは \textLengthOn
コマンドを用いることで達成できます。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < outside-staff-priority プロパティ ] | [ 上へ : 譜外部オブジェクト ] | [ 強弱記号の配置 > ] |
\textLengthOn
コマンド
デフォルトでは、音楽のレイアウトが考慮されている限り、マークアップによって作り出されるテキストは水平方向のスペースと関係しません。\textLengthOn
コマンドはこの動作を逆にして、テキストの配置に便宜をはかる必要がある限り、音符の間隔を広げます:
\textLengthOn % 音符の間隔を広げてテキストに揃えます c''2^"Text1" c''2^"Text2" | c''2^"Text3" c''2^"Text4" |
デフォルトの動作に戻すためのコマンドは \textLengthOff
です。効果を与えるのが単一の音楽タイミングであれば、\textLengthOn
に \once
を付ける方法もあります。リハーサルマークやテンポ記号の水平方向のスペースを調整するには、
\markLengthOn
と \markLengthOff
を使います。
マークアップ テキストは譜の上に突き出している音符を避けます。このことが望ましくない場合、優先度を #f
にセットすることによって上方向への自動再配置を Off にすることになるかもしれません。ここで、マークアップ テキストがそのような音符とどのように相互作用するかを示す例を挙げます。
\relative { % このマークアップは短いため衝突は起きません c''2^"Tex" c'' | R1 | % このマークアップは長くて納まりきらないため、上に押し上げられます c,,2^"Text" c'' | R1 | % 衝突回避を OFF にします \once \override TextScript.outside-staff-priority = ##f c,,2^"Long Text " c'' | R1 | % 衝突回避を OFF にします \once \override TextScript.outside-staff-priority = ##f \textLengthOn % そして textLengthOn を ON にします c,,2^"Long Text " % 後ろにスペースが付け加えられます c''2 | }
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < textLengthOn コマンド ] | [ 上へ : 譜外部オブジェクト ] | [ グラフィカル オブジェクトのサイズ > ] |
強弱記号の配置
通常、強弱記号は譜の下に配置されます。しかしながら、\dynamicUp
コマンドを使うことで上に配置されるかもしれません。強弱記号は、その記号が付いている音符と垂直方向の関係で配置され、フレージング スラーや小節番号などの譜内部オブジェクトのすべてよりも下 (あるいは上) に配置されます。このことは、以下の例のように、到底受け入れられない結果を生み出す可能性があります:
\relative { \clef "bass" \key aes \major \time 9/8 \dynamicUp bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! | ees,2.~\)\mf ees4 r8 | }
しかしながら、音符とそれに付けられた強弱記号が互いに近い場合、自動配置は後の方にある強弱記号を譜から離すことによって衝突を避けます。しかし、以下のかなり不自然な例が示すように、それは最適な配置ではないかもしれません:
\dynamicUp \relative { a'4\f b\mf a\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
の値をオーバライドし、余分なスペースを少しだけ作る必要があります。単位は 2 つの譜線の間隔なので、左端を 0.5 単位左に、右端を 0.5 単位右に動かすことで実現できます:
\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
これが前の例で機能するかどうかを見てみましょう:
\dynamicUp % Extend width by 1 staff space \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5) \relative { a'4\f b\mf a\mp b\p }
これで前よりも良くなりました。しかし、強弱記号が音符に合わせて上下するよりも、同じベースラインで揃っている方が望ましいでしょう。それを行うためのプロパティは staff-padding
であり、衝突に関するセクションでカバーされています
(オブジェクトの衝突 を参照してください)。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < グラフィカル オブジェクトのサイズ ] | [ 上へ : 出力を調整する ] | [ オブジェクトの衝突 > ] |
5.5 垂直方向のスペース
基本的に、LilyPond のオブジェクトにおける垂直方向のスペーシングは非常に良いです。2 声とピアノ伴奏からなる単純な曲でどのようになるかを見てみましょう:
垂直方向のスペースについて、何もおかしな所はありません。しかし、あなたが出版社と共に作業していて、譜と歌詞の垂直方向のスペースについてある要求がある場合を想像してください: 歌詞が音符から離れて配置されるように、ピアノ伴奏が歌のパートから離れて配置されるように、ピアノ伴奏の 2 つの譜が近づけて配置されるように要求されたとします。まず歌詞から取り組み始めましょう。
歌詞はシステム (訳注: 1 行分の譜のまとまり) 内に配置されています。そのため、歌詞のスペースを調整するコマンドは
システム内部の可変な垂直方向のスペース にあります。これによると、歌詞は non-staff lines
(譜ではない行) であるため、このスペースを変更するコマンドは nonstaff
プロパティと関連するということが分かります。歌詞と関連している (上の段の) 譜とのスペースを広げるには relatedstaff
プロパティ、下の段とのスペースを広げるには
unrelatedstaff
プロパティを使います。歌のパートは VerticalAxisGroup
の一部であるため、そのプロパティを調整する必要があります。試してみて、効果があるか見てみましょう:
<< \new ChoirStaff << \new Staff { \new Voice = "music" { b'2 c' c' c' } } \new Lyrics \with { \override VerticalAxisGroup. nonstaff-relatedstaff-spacing.padding = #5 \override VerticalAxisGroup. nonstaff-unrelatedstaff-spacing.padding = #5 } \lyricsto "music" { Here are some lyrics } \new Staff { \clef bass e'2 f e c } >> \new PianoStaff << \new Staff { g''2 c'' c'' a'' } \new Staff { \clef bass e2 f c e } >> >>
確かに反映されました。しかしやり過ぎかもしれません。padding
プロパティを 5 に設定すると、LilyPond は 5 譜スペースをオブジェクト間の距離に追加します。これは今回は大きすぎるので、2 を使用しましょう。
次に、ピアノ伴奏を歌のパートから離しましょう。歌は ChoirStaff
であるため、この譜のグループと下にあるピアノ譜とのスペースを増やす必要があります。StaffGrouper
の staffgroup-staff-spacing
にある
basic-distance
を変更することで行います。
<< \new ChoirStaff \with { \override StaffGrouper. staffgroup-staff-spacing.basic-distance = #15 } << \new Staff { \new Voice = "music" { b'2 c' c' c' } } \new Lyrics \with { \override VerticalAxisGroup. nonstaff-relatedstaff-spacing.padding = #2 \override VerticalAxisGroup. nonstaff-unrelatedstaff-spacing.padding = #2 } \lyricsto "music" { Here are some lyrics } \new Staff { \clef bass e'2 f e c } >> \new PianoStaff << \new Staff { g''2 c'' c'' a'' } \new Staff { \clef bass e2 f c e } >> >>
完璧です。さて、ピアノ譜をお互いに近づける最後の要求に応えましょう。そのためには、また StaffGrouper
のプロパティを変更しますが、今回はbasic-distance
と padding
の両方の値を減らします。このようにして行います。
<< \new ChoirStaff \with { \override StaffGrouper. staffgroup-staff-spacing.basic-distance = #15 } << \new Staff { \new Voice = "music" { b'2 c' c' c' } } \new Lyrics \with { \override VerticalAxisGroup. nonstaff-relatedstaff-spacing.padding = #2 \override VerticalAxisGroup. nonstaff-unrelatedstaff-spacing.padding = #2 } \lyricsto "music" { Here are some lyrics } \new Staff { \clef bass e'2 f e c } >> \new PianoStaff \with { \override StaffGrouper.staff-staff-spacing = #'( (basic-distance . 0) (padding . 0)) } << \new Staff { g''2 c'' c'' a'' } \new Staff { \clef bass e2 f c e } >> >>
非常に近くなりました。しかしこれが出版社の望むものでした。必要であれば、padding
と basic-distance
を変更することで間隔を広げることができます。
垂直方向のスペースを変更する方法はたくさんあります。覚えておくべきキーポイントはこれです: StaffGroup
にあるオブジェクト
(例えば GrandStaff
や PianoStaff
のグループ) のスペースは、
StaffGrouper
の変数によって操作されること、グループ化されていない譜 (例えば Lyrics
や Staff
)
のスペースは、VerticalAxisGroup
の変数によって操作されることです。詳しくは、
Flexible vertical spacing paper variables と
Flexible vertical spacing within systems を参照してください。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < 垂直方向のスペース ] | [ 上へ : 出力を調整する ] | [ オブジェクトを移動させる > ] |
5.6 オブジェクトの衝突
5.6.1 オブジェクトを移動させる | ||
5.6.2 表記の重なりを修正する | ||
5.6.3 実際の音楽からの例 |
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < オブジェクトの衝突 ] | [ 上へ : オブジェクトの衝突 ] | [ 表記の重なりを修正する > ] |
5.6.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
のプロパティです。これは、譜との相対関係で配置されるオブジェクトによってサポートされます。このプロパティはオブジェクトの垂直方向の位置を、譜の中央にある譜線から譜スペースの半分を単位として、指定します。このプロパティは複数小節に亘る休符、タイ、異なるボイスの中にある音符といったレイアウト オブジェクトの衝突を解決する場合に有用です。 -
horizontal-shift
ボイスの中で、同じタイミングにある全ての音符は 1 つの音符列にグループ化され、
NoteColumn
オブジェクトがその音符のグループの水平位置をコントロールするために作成されます (ボイスを明示的にインスタンス化する の “Note columns” を参照してください)。 もし 1 つの Staff コンテキストにある 2 つ以上の音符列が、同じタイミングで出現し同じ向きの符幹を持つ場合に限り、それらのhorizontal-shift
プロパティの値が順位を付けるために使用され、高い順位にあるものが優先的に符頭の衝突を避けるために移動します。このプロパティは\voiceXXX
コマンドによってセットされ、\override
コマンドで直接上書きすることができますが、通常は\shiftOn
コマンドによって上書きします。注意しなければならないことは、このプロパティは移動の 順位 を決定するだけだけであり、移動の大きさを決定するものではないということです。 移動の大きさは、順位ごとに符頭の幅を基にして 1 つずつ大きくなっていきます。1 つ分の幅は通常符頭の幅の半分ですが、それで近い場合には符頭 1 つ分の幅になります。 -
force-hshift
force-hshift
プロパティはNoteColumn
のプロパティです (実際にはnote-column-interface
のプロパティです)。このプロパティを変更することで、音符列が重なってしまう場合において音符列を移動させることができます。重ならない音符列には効果が無いということに注意してください。移動の量は音符列特有の単位、すなわち最初のボイスの中にある音符の符頭の幅で指定されます。 このプロパティは、通常の\shiftOn
コマンド (ボイスを明示的にインスタンス化する を参照してください) が音符の衝突を十分に解決できないような複雑な状況で使用されるべきです。この目的のためには、extra-offset
プロパティを用いるよりもforce-hshift
プロパティを用いる方が好ましいです。なぜなら、譜スペースを単位とした距離を算出する必要が無く、NoteColumn
の内外に音符を移動させることは符頭のマージといった他のアクションに影響を与えるからです。
-
-
最後に、他の方法がすべて失敗した場合、オブジェクトを手動で譜の中央線からの垂直方向の相対位置に従って、あるいは新たに設定した位置との距離に従って、再配置することになるかもしれません。この方法の欠点は、再配置のための正確な値を算出する必要がある –
しばしば、その算出はそれぞれのオブジェクトに対して個々に、トライ&エラーで行われます – 必要があるということ、さらに、この方法による移動は
LilyPond が他のオブジェクトをすべて配置した後に行われるため、ユーザはその結果として起こるかもしれない衝突をすべて回避する責任があるということです。しかし、この方法の最大の問題点は、音楽が後で変更された場合に、再配置用の値を再び算出する必要があるということです。このタイプの手動再配置のために使用されるプロパティは以下のようなものです:
-
extra-offset
-
このプロパティは
grob-interface
をサポートするレイアウト オブジェクトのいずれかに適用されます。このプロパティはペアになった数値をとり、それぞれの数値は水平方向と垂直方向の移動を指定します。負値はオブジェクトを左または下へ移動させます。単位は譜スペースです。この移動はオブジェクトの譜刻が完了した後に行われるため、あるオブジェクトを任意の位置へ、他のオブジェクトに影響を与えることなく、再配置することができます。 -
positions
-
このプロパティは、連桁、スラー、連符の傾きと高さを手動で調節するために最も有用なプロパティです。このプロパティはペアになった数値をとり、それぞれの数値は連桁、スラーなどの左端と右端の位置を譜の中央線との距離で指定します。単位は譜スペースです。けれども、スラーとフレージング スラーを任意の値で再配置することはできないということに注意してください。LilyPond はまずスラーが取り得る位置のリストを生成し、それからデフォルトでは “最良に見える” スラーを探します。
positions
がオーバライドされていた場合、そのリストの中からリクエストされた位置に最も近いスラーが選択されます。
-
あるオブジェクトがこれらのプロパティすべてを持っているわけではありません。内部リファレンスに行き、そのオブジェクトではどのプロパティが利用可能なのかを調べる必要があります。
ここで、衝突に関係しそうなオブジェクトをリスト アップします。内部リファレンスを調べるためのオブジェクト名を付けるので、それらのオブジェクトを移動させるのに使うプロパティを見つけ出すのに使ってください。
オブジェクト タイプ | オブジェクト名 |
---|---|
アーティキュレーション (Articulation) | Script |
連桁 (Beam) | Beam |
強弱記号 (Dynamic) (垂直方向) | DynamicLineSpanner |
強弱記号 (Dynamic) (水平方向) | DynamicText |
運指法記号 (Fingering) | Fingering |
リハーサル / テキスト記号 (Rehearsal / Text mark) | RehearsalMark |
スラー (Slur) | Slur |
テキスト – つまり、^"text" (Text) | TextScript |
タイ (Tie) | Tie |
連符 (Tuplet) | TupletBracket |
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < オブジェクトを移動させる ] | [ 上へ : オブジェクトの衝突 ] | [ padding プロパティ > ] |
5.6.2 表記の重なりを修正する
今度は、前のセクションで扱ったプロパティが記譜の重なりを解決する手助けをどのようにできるかを見ていきましょう。
padding プロパティ | ||
right-padding プロパティ | ||
staff-padding プロパティ | ||
self-alignment-X プロパティ | ||
staff-position プロパティ | ||
extra-offset プロパティ | ||
positions プロパティ | ||
force-hshift プロパティ |
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < 表記の重なりを修正する ] | [ 上へ : 表記の重なりを修正する ] | [ right-padding プロパティ > ] |
padding
プロパティ
padding
プロパティに値をセットすることによって、音符とその上または下に譜刻される記号との間の距離を増減することができます。
c'2\fermata \override Script.padding = #3 b2\fermata
% これは機能しません。この下を見てください \override MetronomeMark.padding = #3 \tempo 4 = 120 c'1 | % これは機能します \override Score.MetronomeMark.padding = #3 \tempo 4 = 80 d'1 |
2 番目の例では、ある特定のオブジェクトを扱うのはどのコンテキストなのかを突き止めることが重要であるということに注意してください。MetronomeMark
オブジェクトは Score
コンテキストの中で処理されるため、Voice
コンテキストの中でのプロパティの変更は無視されます。更に詳細を知りたければ、
Modifying properties を参照してください。
outside-staff-priority
に従って配置されているオブジェクトの並びの中のあるオブジェクトの padding
プロパティが増やされた場合、そのオブジェクトとそれよりも外側にあるすべてオブジェクトが移動させられます。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < padding プロパティ ] | [ 上へ : 表記の重なりを修正する ] | [ staff-padding プロパティ > ] |
right-padding
プロパティ
right-padding
プロパティは臨時記号とそれが適用される音符との間のスペースに影響を与えます。このプロパティを変更することは必ずしも必要ではありませんが、微分音の音楽で使われる特殊な臨時記号の図柄や図柄の組み合わせに対してデフォルトのスペースが適切ではない場合に必要となるかもしれません。臨時記号のステンシルを望みのシンボルを保持するマークアップにオーバライドする必要があります:
sesquisharp = \markup { \sesquisharp } \relative { c''4 % これは 1.5 倍シャープを譜刻しますが、スペースが小さすぎます \once \override Accidental.stencil = #ly:text-interface::print \once \override Accidental.text = #sesquisharp cis4 c % これはスペースを改善しています \once \override Score.AccidentalPlacement.right-padding = #0.6 \once \override Accidental.stencil = #ly:text-interface::print \once \override Accidental.text = #sesquisharp cis4 | }
これは必然的に臨時記号のステンシルをオーバライドすることになります。このオーバライドについては後々までカバーされません。ステンシル タイプは手続きでなければならず、ここでは Accidental
の
text
プロパティの内容
– 内容には 1.5 倍シャープがセットされています
– を譜刻するように変更されています。それらの記号は right-padding
のオーバライドによって符頭からさらに遠くへ移動させられています。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < right-padding プロパティ ] | [ 上へ : 表記の重なりを修正する ] | [ self-alignment-X プロパティ > ] |
staff-padding
プロパティ
staff-padding
を使うことで、強弱記号などのオブジェクトを、他のオブジェクトが譜から離すよう強制しない限り、譜から一定の距離にあるベースラインに揃えることができます。このプロパティは DynamicText
のプロパティではなく、DynamicSpanner
のプロパティです。この理由は、このベースラインは延長スパナを含む すべて の強弱記号に等しく適用されるべきだからです。そのため、これは以前のセクションでの例の中にある強弱記号を揃えるための方法になります:
\override DynamicLineSpanner.staff-padding = #3 \relative { a'4\f b\mf a\p b\mp }
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < staff-padding プロパティ ] | [ 上へ : 表記の重なりを修正する ] | [ staff-position プロパティ > ] |
self-alignment-X
プロパティ
以下の例はこのプロパティが、運指法記号オブジェクトの右端を親の音符の参照ポイントに揃えることによって、弦楽器の運指法記号オブジェクトと音符の符幹との相対位置を調整している様子を示しています:
\voiceOne <a''\2> \once \override StringNumber.self-alignment-X = #RIGHT <a''\2>
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < self-alignment-X プロパティ ] | [ 上へ : 表記の重なりを修正する ] | [ extra-offset プロパティ > ] |
staff-position
プロパティ
あるボイスの中にある複数小節に亘る休符は他のボイスの中にある音符と衝突する可能性があります。このような休符は小節線と小節線の間の中央に譜刻されるため、LilyPond がそれと衝突するかもしれない音符を突き止めるのは非常に困難です。なぜなら、現在の音符間それに音符-休符間の衝突対応は、同時に起こる音符と休符に対してのみ行われるからです。以下に、このタイプの衝突の例を挙げます:
<< \relative { c'4 c c c } \\ { R1 } >>
ここでの最良の解決策は、複数小節に亘る休符を下へ移動させることです。なぜなら、その休符はボイス 2 の中にあるからです。\voiceTwo
(すなわち、<<{…} \\ {…}>>
構造の
2 番目のボイス) のデフォルト状態では、MultiMeasureRest
の staff-position
は -6
にセットされています。そのため、そのプロパティを、例えば半譜スペース 4 つ分押し下げるには、-10
に変更する必要があります。
<< \relative { c'4 c c c } \\ \override MultiMeasureRest.staff-position = #-10 { R1 } >>
これは、例えば extra-offset
を使うよりも良い解決方法です。なぜなら、その休符の上に加線が自動的に挿入されるからです。
正確な値と不正確な値の違いについては、 タイを手動で譜刻する を参照してください。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < staff-position プロパティ ] | [ 上へ : 表記の重なりを修正する ] | [ positions プロパティ > ] |
extra-offset
プロパティ
extra-offset
プロパティは、あるオブジェクトの水平方向と垂直方向の配置を完全に制御します。
以下の例では、2 番目の運指法記号が少し左に、そして 1.8 譜スペース下に移動させられています:
f'4-5 \once \override Fingering.extra-offset = #'(-0.3 . -1.8) f'4-5
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < extra-offset プロパティ ] | [ 上へ : 表記の重なりを修正する ] | [ force-hshift プロパティ > ] |
positions
プロパティ
positions
プロパティは連符、スラー、フレージング スラー、連桁の位置を手動で制御することができ、それにより傾きも制御できます。
ここで、フレージング スラーとスラーが衝突している例を示します:
\relative { a'8 \( ( a'16 ) a \) }
衝突を解決するために、フレージング スラーの両端を上に移動させます。左端を譜中央線よりも 2.5 譜スペース上に設定し、右端を 4.5 譜スペース上に設定すると、LilyPond は候補の中から両端の位置が最も設定に近いフレージング スラーを選択します:
\once \override PhrasingSlur.positions = #'(2.5 . 4.5) a'8 \( ( a''16 ) a'' \)
これで改善されました。しかしながら、スラーの右端を少し下げてみてはどうでしょうか?そうしようとした場合、この方法では実行できないことがわかります。すでに表示されているスラーよりも右端が下がっている候補は無く、そのような場合には positions
は効果を持たないからです。しかしながら、必要があればタイ、スラー、それにフレージング スラーの位置と形状を非常に正確に設定することが できます。正確な設定を行う方法は
Modifying ties and slurs で学習してください。
もう 1 つ例を示します。連桁がタイと衝突しています:
{ \time 4/2 << \relative { c'1~ 2. e8 f } \\ \relative { e''8 e e e e e e e f2 g } >> << \relative { c'1~ 2. e8 f } \\ \relative { e''8 e e e e e e e f2 g } >> }
これは、譜の中央線から 1.81 譜スペース上の位置にある連桁の両端を、例えば、1 に手動で上げることによって解決することができます:
{ \time 4/2 << \relative { c'1~ 2. e8 f } \\ \relative { \override Beam.positions = #'(-1 . -1) e''8 e e e e e e e f2 g } >> << \relative { c'1~ 2. e8 f } \\ \relative { e''8 e e e e e e e f2 g \revert Beam.positions } >> }
オーバライドの効果は継続して第 2 小節のボイス 2 の 8 分音符にも適用されていますが、ボイス 1 の連桁には、その後の第 2 小節においてもまったく適用されていないということに注意してください。例に示したように、オーバライドがもう適用されるべきでないところではオーバライドをリバートするべきです。
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < positions プロパティ ] | [ 上へ : 表記の重なりを修正する ] | [ 実際の音楽からの例 > ] |
force-hshift
プロパティ
今や、私はボイスを聴いている の最後で挙げた Chopin の例にどのように修正を加えるべきかを知っています。この例は以下のような状態でした:
\new Staff \relative { \key aes \major << { c''2 aes4. bes8 } \\ { <ees, c>2 des } \\ \\ { aes'2 f4 fes } >> | <c ees aes c>1 | }
最初の和音の内声の音 (つまり、4 番目のボイスにある A-フラット) を上の音符の音符列からずらす必要はありません。そのために \shiftOff
を用います。
2 番目の和音では、F を A-フラットに揃えて、符幹の衝突を避けるために最下段の音符を少し右に移動させるべきでしょう。そうするには、D-フラットの NoteColumn
の force-hshift
を設定して譜スペースの半分だけ右にずらし、F の force-hshift
をゼロにします。注意すべきことは、すぐ後のタイミングを越えて設定が伝播してしまわないように、
\once
を使っているということです。
この小さい例においては、ボイス 4 の \once
と 2 個目の
\override
(訳注: \shiftOff
のこと) は省略できますが、それは良い方法ではありません。
ここで、最終結果を挙げます:
\new Staff \relative { \key aes \major << { c''2 aes4. bes8 } \\ { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des } \\ \\ { \once \shiftOff aes'2 \once \shiftOff f4 fes } >> | <c ees aes c>1 | }
[ << 出力を調整する ] | [トップ][目次][インデックス] | [ テンプレート >> ] |
[ < force-hshift プロパティ ] | [ 上へ : オブジェクトの衝突 ] | [ 更なる調整 > ] |
5.6.3 実際の音楽からの例
調整についてのセクションを、望みの出力を作り出すためにいくつかの調整を必要とするトリッキーな例を処理するときにとられるステップを示すことで締めくくります。この例は、記譜法についての普通ではない問題を解決するための記譜法リファレンスの使い方を示すために慎重に選ばれたものです。この例は一般的な譜刻プロセスを代表するものではありません。ですから、この例の複雑さでやる気を失わないでください!幸いなことに、このように複雑な問題は非常に稀です!
この例は Chopin の Première Ballade, Op. 23 の第 6 - 9 小節からとりました。序盤の Lento から Moderato へと移調する部分です。まず最初に望んでいる出力挙げますが、例があまりにも複雑になり過ぎないように強弱記号、運指法記号、ペダル記号は省きました。
まず、第 3 小節の右手パートには 4 つのボイスが必要であることに注目します。それぞれのボイスは、連桁でつながれた 5 つの 8 分音符、タイで結ばれた C、半音符の D (これは 8 分音符の D とマージされています)、付点 4 分音符の F シャープ (これも同じピッチの 8 分音符とマージされています) です。他の部分はすべて単一のボイスなので、最も容易な方法は 4 つのボイスを必要になったときに一時的に導入する方法です。一時的に多声にする方法を忘れてしまったのならば、私はボイスを聴いている と ボイスを明示的にインスタンス化する を参照してください。 ここでは、多声パッセージに明示的にインスタンス化されたボイスを使うことにします。なぜなら、すべてのボイスが明示的にインスタンス化されている方が、LilyPond はうまく衝突を回避できるからです。
音符を 2 つの変数として入力し、譜構造を Score ブロックの中でセットアップすることから始めて、それで LilyPond がデフォルトでどのような出力を作り出すのか見てみましょう:
rhMusic = \relative { \new Voice { r2 c''4. g8 | bes1~ | \time 6/4 bes2. r8 % 4 つのボイスの多声セクションの開始 << { c,8 d fis bes a } % メイン ボイスの続き \new Voice { \voiceTwo c,8~ 2 } \new Voice { \voiceThree s8 d2 } \new Voice { \voiceFour s4 fis4. } >> | g2. % メイン ボイスの続き } } lhMusic = \relative { 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 { \new Voice { r2 c''4.\( g8 | bes1~ | \time 6/4 bes2. r8 % 4 つのボイスの多声セクションの開始 << { c,8 d fis bes a } % メイン ボイスの続き \new Voice { \voiceTwo c,8~ 2 } \new Voice { \voiceThree s8 d2 } \new Voice { \voiceFour s4 fis4. } >> | g2.\) % メイン ボイスの続き } } lhMusic = \relative { 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 { \new Voice { r2 c''4.\( g8 | \once \override Tie.staff-position = #3.5 bes1~ | \bar "||" \time 6/4 bes2. r8 % 4 つのボイスの多声セクションの開始 << { c,8 d fis bes a } % メイン ボイスの続き \new Voice { \voiceTwo c,8~ 2 } \new Voice { \voiceThree s8 d2 } \new Voice { \voiceFour s4 fis4. } >> | g2.\) % メイン ボイスの続き } } lhMusic = \relative { 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 セクションの開始部分 – に取り掛かります。チュートリアルで \tempo
コマンドを使ってテンポ表示を付け加える方法を示しましたので、‘Moderato’ を付け加えることは容易です。しかし、異なるボイスの中にある音符をマージするにはどうするのでしょうか?ここで、助けを求めて記譜法リファレンスに移行する必要があります。記譜法リファレンスで “merge” を探せばすぐに、
Collision resolution で符頭や付点の付き方が異なる音符をマージするためのコマンドにたどり着きます。今回の例では、多声部セクションで両方のタイプの音符をマージする
(異なる符頭を持つ音符のマージと、付点の付き方が異なる音符のマージ)
必要があるので、記譜法リファレンスで見つけた情報を使って、以下のコマンド:
\mergeDifferentlyHeadedOn \mergeDifferentlyDottedOn
を多声部セクションの開始点に置き、以下のコマンド:
\mergeDifferentlyHeadedOff \mergeDifferentlyDottedOff
をセクションの終了点に置きます。これで、例は以下のようになります:
オーバライドは 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 { \new Voice { r2 c''4.\( g8 | \once \override Tie.staff-position = #3.5 bes1~ | \bar "||" \time 6/4 bes2.\tempo "Moderato" r8 \mergeDifferentlyHeadedOn \mergeDifferentlyDottedOn % 4 つのボイスの多声セクションの開始 << { c,8 d fis bes a } % メイン ボイスの続き \new Voice { \voiceTwo % c2 をメインの音符列から外したため、 % マージが機能します c,8~ \shiftOnn c2 } \new Voice { \voiceThree % マージさせるために d2 の符幹を下向きにする必要があります s8 \stemDown d2 } \new Voice { \voiceFour s4 fis4. } >> | \mergeDifferentlyHeadedOff \mergeDifferentlyDottedOff g2.\) % メイン ボイスの続き } } lhMusic = \relative { r2 <c' g