]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/ja/notation/input.itely
Doc-ja: fix syntax that broke doc build.
[lilypond.git] / Documentation / ja / notation / input.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
2 @ignore
3     Translation of GIT committish: 788ce4594c66c5db1bdbb915a684df96d8a29fde
4
5     When revising a translation, copy the HEAD committish of the
6     version that you are working on.  For details, see the Contributors'
7     Guide, node Updating translation committishes..
8 @end ignore
9
10 @c \version "2.15.25"
11
12
13 @c Translators: Yoshiki Sawada
14 @c Translation status: post-GDP
15
16
17 @node 入出力全般
18 @chapter 入出力全般
19 @translationof General input and output
20
21 このセクションでは、特定の記譜法ではなく、@c
22 LilyPond の一般的な入出力の問題について扱います。
23
24 @menu
25 * 入力の構造::
26 * タイトルとヘッダ::
27 * 入力ファイルに取り組む::
28 * 出力を制御する::
29 * MIDI 出力::
30 * 音楽情報を抽出する::
31 @end menu
32
33
34 @node 入力の構造
35 @section 入力の構造
36 @translationof Input structure
37
38 LilyPond の入力の主となるフォーマットはテキスト ファイルです。@c
39 習慣として、それらのファイルの最後には @file{.ly} を付けます。
40
41 @menu
42 * score の構造::
43 * book の中にある複数の score::
44 * 1 つの入力ファイルから複数の出力ファイルを生成する::
45 * 出力ファイル名::
46 * ファイル構造::
47 @end menu
48
49
50 @node score の構造
51 @subsection score の構造
52 @translationof Structure of a score
53
54 @funindex \score
55
56 @code{\score} ブロックは、波括弧で囲まれた単一の音楽表記を@c
57 含んでいなければなりません:
58
59 @example
60 \score @{
61 ...
62 @}
63 @end example
64
65 @warning{@code{\score} ブロックの中には、@c
66 最上位の音楽表記が @strong{1 つだけ} 存在していなければならず、@c
67 その音楽表記は波括弧で囲まれていなければ@strong{なりません}。}
68
69 この単一の音楽表記は任意のサイズになり得ます。@c
70 そして、それは他の音楽表記を保持して任意の複雑さを持ち得ます。@c
71 以下の例はすべて音楽表記です:
72
73 @example
74 @{ c'4 c' c' c' @}
75 @end example
76
77 @lilypond[verbatim,quote]
78 {
79   { c'4 c' c' c' }
80   { d'4 d' d' d' }
81 }
82 @end lilypond
83
84 @lilypond[verbatim,quote]
85 <<
86   \new Staff { c'4 c' c' c' }
87   \new Staff { d'4 d' d' d' }
88 >>
89 @end lilypond
90
91 @example
92 @{
93   \new GrandStaff <<
94     \new StaffGroup <<
95       \new Staff @{ \flute @}
96       \new Staff @{ \oboe @}
97     >>
98     \new StaffGroup <<
99       \new Staff @{ \violinI @}
100       \new Staff @{ \violinII @}
101     >>
102   >>
103 @}
104 @end example
105
106 この一般規則の例外の 1 つにコメントがあります。@c
107 (他の例外は、@ref{ファイル構造} を参照してください。)@c
108 単一行コメントと複数行コメント (@code{%@{ .. %@}} で囲まれます) は@c
109 どちらも入力ファイルの任意の場所に配置することができます。@c
110 コメントは @code{\score} ブロックの内側あるいは外側に@c
111 配置することができ、@code{\score} ブロックの中にある単一の音楽表記の@c
112 内側あるいは外側に配置することができます。
113
114 たとえ @code{\score} ブロックだけを保持しているファイルであっても、@c
115 暗黙的に @code{\book} ブロックで囲まれるということを覚えておいてください。@c
116 ソース ファイルの中にある @code{\book} は少なくとも 1 つの@c
117 出力ファイルを作り出し、@c
118 デフォルトでは出力ファイル名は入力ファイル名から派生します。@c
119 @file{fandangoforelephants.ly} は @file{fandangoforelephants.pdf} を@c
120 作り出します。
121
122 (@code{\book} ブロックについての詳細は、@c
123 @ref{book の中にある複数の score}、@c
124 @ref{1 つの入力ファイルから複数の出力ファイルを生成する}、@c
125 @ref{ファイル構造} を参照してください。)
126
127 @seealso
128 学習マニュアル:
129 @rlearning{入力ファイルに取り組む},
130 @rlearning{音楽表記についての説明},
131 @rlearning{Score は (単一の) 複合的な音楽表記}
132
133
134 @node book の中にある複数の score
135 @subsection book の中にある複数の score
136 @translationof Multiple scores in a book
137
138 @funindex \book
139 @cindex movements, multiple (複数の楽章)
140
141 ドキュメントは複数の楽曲とテキストを含むことができます。@c
142 そのようなドキュメントの例には練習曲集や、@c
143 複数の楽章を持つオーケストラのパート譜があります。@c
144 楽章はそれぞれ @code{\score} ブロックで入力され、
145
146 @example
147 \score @{
148   @var{..music..}
149 @}
150 @end example
151
152 テキストは @code{\markup} ブロックで入力されます。
153
154 @example
155 \markup @{
156   @var{..text..}
157 @}
158 @end example
159
160 @funindex \book
161
162 同じ @file{.ly} ファイルの中にあるすべての楽章とテキストは、@c
163 通常、単一の出力ファイルとして譜刻されます。
164
165 @example
166 \score @{
167   @var{..}
168 @}
169 \markup @{
170   @var{..}
171 @}
172 \score @{
173   @var{..}
174 @}
175 @end example
176
177 重要な例外として lilypond-book ドキュメントがあります。@c
178 lilypond-book ドキュメントでは、明示的に @code{\book} ブロックを追加する@c
179 必要があります。@c
180 さもなければ、最初の @code{\score} あるいは @code{\markup} だけが出力に@c
181 表示されます。
182
183 音楽の各節のヘッダはその節の @code{\score} ブロックの中に置くことができます。@c
184 そのヘッダからの @code{piece} 名がそれぞれの楽章の前に譜刻されます。@c
185 book 全体のタイトルは @code{\book} の中に置くことができます。@c
186 しかしながら、@code{\book} が存在しない場合は、@code{\header} を@c
187 入力ファイルの先頭に挿入します。
188
189 @example
190 \header @{
191   title = "Eight miniatures"
192   composer = "Igor Stravinsky"
193 @}
194 \score @{
195   @dots{}
196   \header @{ piece = "Romanze" @}
197 @}
198 \markup @{
199    ..text of second verse..
200 @}
201 \markup @{
202    ..text of third verse..
203 @}
204 \score @{
205   @dots{}
206   \header @{ piece = "Menuetto" @}
207 @}
208 @end example
209
210 @funindex \bookpart
211
212 @code{\bookpart} ブロックを用いて、
213 複数の楽曲を book のパートとしてグループ化することができます。
214
215 book パートは改ページで区切られ、book 自体と同様に
216 @code{\header} ブロックによりタイトルを持つことができます。
217
218 @example
219 \bookpart @{
220   \header @{
221     title = "Book title"
222     subtitle = "First part"
223   @}
224   \score @{ @dots{} @}
225   @dots{}
226 @}
227 \bookpart @{
228   \header @{
229     subtitle = "Second part"
230   @}
231   \score @{ @dots{} @}
232   @dots{}
233 @}
234 @end example
235
236
237 @node 1 つの入力ファイルから複数の出力ファイルを生成する
238 @subsection 1 つの入力ファイルから複数の出力ファイルを生成する
239 @translationof Multiple output files from one input file
240
241 1 つの @file{.ly} ファイルから複数の出力ファイルを得たいのであれば、@c
242 @file{.ly} ファイルに複数の @code{\book} ブロックを記述します。@c
243 各 @code{\book} ブロックが個々に出力ファイルになります。@c
244 入力ファイルで @code{\book} ブロックを記述しなければ、@c
245 LilyPond は暗黙的にファイル全体を単一の @code{\book} として扱います。@c
246 @ref{ファイル構造} を参照してください。
247
248 単一のソース ファイルから複数のファイルを作り出す時、@c
249 LilyPond は、@code{\book} ブロックが作り出す出力ファイルが@c
250 同じ入力ファイル内にある他の @code{\book} ブロックが作り出した出力ファイルを@c
251 上書きしないことを保証します。
252
253 入力ファイルから派生するデフォルトの出力ファイル名に
254 @code{\book} 毎の接尾辞を付け加えることによって上書きされないことを保証します。
255
256 出力が上書きされないよう、@c
257 デフォルトでは出力ファイル名にバージョン番号の接尾辞を付け加えます。@c
258 ソース ファイル @file{eightminiatures.ly} 内の以下の記述
259
260 @example
261 \book @{
262   \score @{ @dots{} @}
263   \layout @{ @dots{} @}
264 @}
265 \book @{
266   \score @{ @dots{} @}
267   \layout @{ @dots{} @}
268 @}
269 \book @{
270   \score @{ @dots{} @}
271   \layout @{ @dots{} @}
272 @}
273 @end example
274
275 は、下記の出力ファイルを作り出します。
276
277 @itemize
278 @item
279 @file{eightminiatures.pdf},
280 @item
281 @file{eightminiatures-1.pdf} and
282 @item
283 @file{eightminiatures-2.pdf}.
284 @end itemize
285
286
287 @node 出力ファイル名
288 @subsection 出力ファイル名
289 @translationof Output file names
290
291 @funindex \bookOutputSuffix
292 @funindex \bookOutputName
293
294 LilyPond は、@c
295 出力ファイルを作り出す時に出力ファイル名を制御するための様々な機能を提供します。
296
297 前のセクションでは、@c
298 LilyPond がどのように単一のソース ファイルから作り出される複数の出力ファイルが@c
299 上書きされることを防ぐかを見てきました。@c
300 @code{\book} ブロック毎の出力ファイル名に付け加えられる接尾辞を@c
301 指定することもできます。@c
302 各 @code{\book} ブロックの内部に @code{\bookOutputSuffix} 宣言を@c
303 記述することにより、例えば
304 @file{eightminiatures-Romanze.pdf}, @file{eightminiatures-Menuetto.pdf}
305 それに @file{eightminiatures-Nocturne.pdf} といった名前の出力ファイルを@c
306 作り出すことができます。
307
308 @example
309 \book @{
310   \bookOutputSuffix "Romanze"
311   \score @{ @dots{} @}
312   \layout @{ @dots{} @}
313 @}
314 \book @{
315   \bookOutputSuffix "Menuetto"
316   \score @{ @dots{} @}
317   \layout @{ @dots{} @}
318 @}
319 \book @{
320   \bookOutputSuffix "Nocturne"
321   \score @{ @dots{} @}
322   \layout @{ @dots{} @}
323 @}
324 @end example
325
326 @code{\bookOutputName} 宣言を用いることにより、@c
327 @code{\book} ブロックに入力ファイル名とは異なる出力ファイル名を@c
328 指定することもできます。
329
330 @example
331 \book @{
332   \bookOutputName "Romanze"
333   \score @{ @dots{} @}
334   \layout @{ @dots{} @}
335 @}
336 \book @{
337   \bookOutputName "Menuetto"
338   \score @{ @dots{} @}
339   \layout @{ @dots{} @}
340 @}
341 \book @{
342   \bookOutputName "Nocturne"
343   \score @{ @dots{} @}
344   \layout @{ @dots{} @}
345 @}
346 @end example
347
348 上記のファイルは下記の出力ファイルを作り出します:
349
350 @itemize
351 @item
352 @file{Romanze.pdf}
353 @item
354 @file{Menuetto.pdf}
355 @item
356 @file{Nocturne.pdf}
357 @end itemize
358
359
360 @node ファイル構造
361 @subsection ファイル構造
362 @translationof File structure
363
364 @funindex \paper
365 @funindex \midi
366 @funindex \layout
367 @funindex \header
368 @funindex \score
369 @funindex \book
370 @funindex \bookpart
371
372 @file{.ly} ファイルは最上位の表記を任意の数だけ保持することができます
373 -- ここで、最上位の表記とは以下の中の 1 つです:
374
375 @itemize @bullet
376 @item
377 @code{\paper}, @code{\midi}, @code{\layout} などの出力定義。@c
378 最上位にある出力定義はブック全体のデフォルト設定を変更します。@c
379 最上位に同じタイプの出力定義が複数ある場合、@c
380 後ろの方にある出力定義が優先されます。
381
382 @item
383 @code{#(set-default-paper-size "a7" 'landscape)} や
384 @code{#(ly:set-option 'point-and-click #f)} などの Scheme 表記。
385
386 @item
387 @code{\header} ブロック。これはグローバル ヘッダ ブロックになります。@c
388 このブロックは、作曲者、曲名などのブック全体の設定定義を保持します。
389
390 @item
391 @code{\score} ブロック。@c
392 この score は他の最上位の score とともに単一の @code{\book} にまとめられます。@c
393 この振る舞いは、@c
394 変数 @code{toplevel-score-handler} を最上位の階層で設定することによって、@c
395 変更することができます。@c
396 デフォルトのハンドラは@c
397 初期化ファイル @file{../scm/lily.scm} で定義されています。
398
399 @item
400 @code{\book} ブロックは複数の楽章 (すなわち、複数の @code{\score} ブロック) を@c
401 論理的に 1 つのドキュメントにまとめます。@c
402 複数の @code{\score} が存在する場合、@c
403 それぞれの @code{\book} ブロックに対して 1 つずつ出力ファイルが作成され、@c
404 それぞれの出力ファイルの中では該当するすべての楽章が連結されます。@c
405 @file{.ly} ファイルの中で明示的に @code{\book} ブロックを@c
406 指定する必要があるケースはただ 1 つ、@c
407 単一の入力ファイルから複数の出力ファイルを作成することを望む場合です。@c
408 例外の 1 つに lilypond-book ドキュメントがあります
409 -- そこでは、同じ例の中に複数の @code{\socre} あるいは @code{\markup} を@c
410 配置したければ、明示的に @code{\book} ブロックを追加する必要があります。@c
411 この振る舞いは、@c
412 変数 @code{toplevel-score-handler} を最上位の階層で設定することによって、@c
413 変更することができます。@c
414 デフォルトのハンドラは@c
415 初期化ファイル @file{../scm/lily.scm} で定義されています。
416
417 @item
418 @code{\bookpart} ブロック。@c
419 改ページを簡単にするため、@c
420 あるいは異なるパートで別々の @code{\paper} 設定を使用するために、@c
421 book は
422 -- @code{\bookpart} を用いて --
423 いくつかのパートに分割される可能性があります。
424
425 @item
426 以下のような複合音楽表記:
427 @example
428 @{ c'4 d' e'2 @}
429 @end example
430
431 これは楽節を @code{\score} に付け加え、@c
432 その楽節を他のすべての最上位 @code{\score} や音楽表記とともに@c
433 単一のブックにフォーマットにします。@c
434 言い換えると、上記の音楽表記だけを保持しているファイルは@c
435 以下のように翻訳されます:
436
437 @example
438 \book @{
439   \score @{
440     \new Staff @{
441       \new Voice @{
442         @{ c'4 d' e'2 @}
443       @}
444     @}
445     \layout @{ @}
446   @}
447   \paper @{ @}
448   \header @{ @}
449 @}
450 @end example
451
452 この振る舞いは、@c
453 変数 @code{toplevel-score-handler} を最上位の階層で設定することによって、@c
454 変更することができます。@c
455 デフォルトのハンドラは@c
456 初期化ファイル @file{../scm/lily.scm} で定義されています。
457
458 @item
459 マークアップ テキスト。@c
460 例として以下の歌詞を挙げます:
461 @example
462 \markup @{
463    2.  The first line verse two.
464 @}
465 @end example
466
467 マークアップ テキストは、それが出現した場所で、@c
468 score あるいは音楽表記の上、間、あるいは下に描かれます。
469
470 @cindex variables (変数)
471
472 @item
473 以下のような変数:
474 @example
475 foo = @{ c4 d e d @}
476 @end example
477
478 これは後で使用することができます。@c
479 使用するには、入力ファイルの中で @code{\foo} と入力します。@c
480 変数の名前はアルファベットだけで構成すべきです。@c
481 数字、アンダスコアあるいはダッシュを使うことができません。
482
483 @end itemize
484
485 以下の例は最上位の階層で入力される可能性がある 3 つのものを示しています:
486
487 @example
488 \layout @{
489   % Don't justify the output
490   ragged-right = ##t
491 @}
492
493 \header @{
494    title = "Do-re-mi"
495 @}
496
497 @{ c'4 d' e2 @}
498 @end example
499
500
501 ファイルの任意の場所で、以下の編集指示のいずれかが入力される可能性があります:
502
503 @itemize
504 @item @code{\version}
505 @item @code{\include}
506 @item @code{\sourcefilename}
507 @item @code{\sourcefileline}
508 @item
509 @code{%} 記号で始まる単一行コメント。
510
511 @item
512 @code{%@{ .. %@}} で囲まれる複数行コメント。
513
514 @end itemize
515
516 @cindex whitespace
517
518 通常、入力の要素間にある空白は無視され、@c
519 可読性を良くするために自由に削除あるいは追加することができます。@c
520 しかしながら、以下の状況ではエラーを避けるために空白を挿入する必要があります:
521
522 @itemize
523 @item 波括弧の前後。
524 @item コマンドあるいは変数 -- すなわち、@code{\} 記号で始まる要素 -- の後。
525 @item Scheme 表記として解釈される要素
526 -- すなわち、@code{#} 記号で始まる要素 -- の後。
527 @item Scheme 表記要素を区切る空白。
528 @item @code{lyricmode} モードの @code{\override} と @code{\set} コマンドの@c
529 中にある単語を区切る空白。@c
530 特に、@code{\override Score . LyricText #'font-size = #5} のように、@c
531 コマンドの中のドットとイコール記号の前後、コマンド全体の前後に@c
532 空白を挿入することを忘れないで下さい。
533
534 @end itemize
535
536 @seealso
537 学習マニュアル:
538 @rlearning{LilyPond 入力ファイルの仕組み}
539
540
541 @node タイトルとヘッダ
542 @section タイトルとヘッダ
543 @translationof Titles and headers
544
545 ほとんどすべての楽譜にはタイトルと作曲者名が含まれます。@c
546 楽譜の中にはさらに多くの情報を含むものもあります。
547
548 @menu
549 * タイトル、ヘッダ、フッタを作成する::
550 * カスタム ヘッダ、フッタ、タイトル::
551 * 脚注を作成する::
552 * ページ番号の参照::
553 * 目次::
554 @end menu
555
556
557 @node タイトル、ヘッダ、フッタを作成する
558 @subsection タイトル、ヘッダ、フッタを作成する
559 @translationof Creating titles headers and footers
560
561 @menu
562 * タイトル ブロックの説明::
563 * book と score のタイトル ブロックのデフォルト レイアウト::
564 * ヘッダとフッタのデフォルト レウアウト::
565 @end menu
566
567 @node タイトル ブロックの説明
568 @unnumberedsubsubsec タイトル ブロックの説明
569 @translationof Title blocks explained
570
571 @c TODO: figure out how \bookpart titles work
572
573 タイトル ブロックには 2 つのタイプがあります:
574 book の最初の @code{\score} の上に表示されるメインのタイトル ブロックと、@c
575 各 @code{\score} ブロック内に表示される個々のタイトル ブロックです。@c
576 両タイプのテキスト フィールドは @code{\header} ブロックを用いて挿入します。
577
578 book が単一の score しか持たない場合、@c
579 @code{\header} ブロックを配置する場所は @code{\score} ブロックの内側でも@c
580 外側でも構いません。
581
582 @warning{@bs{}@code{score} ブロックの内側に @bs{}@code{header} ブロックを@c
583 追加する場合、@c
584 @bs{}@code{header} ブロックの前に音楽表記を配置する必要があります。}
585
586 @lilypond[papersize=a5,quote,verbatim,noragged-right]
587 \header {
588   title = "SUITE I."
589   composer = "J. S. Bach."
590 }
591
592 \score {
593   \new Staff \relative g, {
594     \clef bass
595     \key g \major
596     \repeat unfold 2 { g16( d' b') a b d, b' d, } |
597     \repeat unfold 2 { g,16( e' c') b c e, c' e, } |
598   }
599   \header {
600     piece = "Prélude."
601   }
602 }
603
604 \score {
605   \new Staff \relative b {
606     \clef bass
607     \key g \major
608     \partial 16 b16 |
609     <g, d' b'~>4 b'16 a( g fis) g( d e fis) g( a b c) |
610     d16( b g fis) g( e d c) b(c d e) fis( g a b) |
611   }
612   \header {
613     piece = "Allemande."
614   }
615 }
616 @end lilypond
617
618 book のメイン タイトル ブロックのテキスト フィールドはすべての @code{\score}
619 ブロックに表示させることができ、手動で表示を抑制することもできます:
620
621 @c KEEP LY
622 @lilypond[papersize=a5,quote,verbatim,noragged-right]
623 \book {
624   \paper {
625     print-all-headers = ##t
626   }
627   \header {
628     title = "DAS WOHLTEMPERIRTE CLAVIER"
629     subtitle = "TEIL I"
630     % この book では tagline を表示しません
631     tagline = ##f
632   }
633   \markup { \vspace #1 }
634   \score {
635     \new PianoStaff <<
636       \new Staff { s1 }
637       \new Staff { \clef "bass" s1 }
638     >>
639     \header {
640       title = "PRAELUDIUM I"
641       opus = "BWV 846"
642       % この score では subtitle を表示しません
643       subtitle = ##f
644     }
645   }
646   \score {
647     \new PianoStaff <<
648       \new Staff { s1 }
649       \new Staff { \clef "bass" s1 }
650     >>
651     \header {
652       title = "FUGA I"
653       subsubtitle = "A 4 VOCI"
654       opus = "BWV 846"
655       % この score では subtitle を表示しません
656       subtitle = ##f
657     }
658   }
659 }
660 @end lilypond
661
662 @seealso
663 記譜法リファレンス:
664 @ref{ファイル構造},
665 @ref{タイトル ブロックのカスタム レイアウト}
666
667
668 @node book と score のタイトル ブロックのデフォルト レイアウト
669 @unnumberedsubsubsec book と score のタイトル ブロックのデフォルト レイアウト
670 @translationof Default layout of book and score title blocks
671
672 タイトル ブロックのレイアウトとフォーマットは 2 つの @code{\paper}
673 変数によって制御されます。@c
674 メインの @code{\header} タイトル ブロックのための @code{bookTitleMarkup} と、@c
675 @code{\score} 内部の個々の @code{\header} ブロックのための
676 @code{scoreTitleMarkup} です。
677
678 @c KEEP LY
679 @lilypond[papersize=a6,quote,verbatim,noragged-right]
680 \header {
681   % 以下のフィールドは中央揃えされます。
682   dedication = "Dedication"
683   title = "Title"
684   subtitle = "Subtitle"
685   subsubtitle = "Subsubtitle"
686   instrument = "Instrument"
687
688   % 以下のフィールドは左端に左揃えされます。
689   poet = "Poet"
690   meter = "Meter"
691
692   % 以下のフィールドは右端に右揃えされます。
693   composer = "Composer"
694   arranger = "Arranger"
695 }
696
697 \score {
698   { s1 }
699   \header {
700     % 以下のフィールドは同一行の両端に配置されます。
701     piece = "Piece"
702     opus = "Opus"
703   }
704 }
705 @end lilypond
706
707 @c Is the bit about \null markups true? -mp
708
709 @code{\header} ブロックでセットされなかったテキスト フィールドには@c
710 @code{\null} マークアップがセットされ、スペースを無駄にしません。
711
712 デフォルト設定では、@code{scoreTitleMarkup} は
713 @code{piece} テキスト フィールドと @code{opus} テキスト フィールドを@c
714 同一行の両端に配置します。
715
716 @cindex breakbefore
717
718 最上位の @code{\header} ブロックのタイトルを最初のページに配置して、@c
719 @code{\score} ブロックで定義される楽譜を次のページから始めるするには、@c
720 @code{\score} ブロックの中にある @code{\header} ブロック内で@c
721 @code{breakbefore} 変数を使用します。
722
723 @lilypond[papersize=a8landscape,verbatim,noragged-right]
724 \book {
725   \header {
726     title = "This is my Title"
727     subtitle = "This is my Subtitle"
728     copyright = "This is the bottom of the first page"
729   }
730   \score {
731     \repeat unfold 4 { e'' e'' e'' e'' }
732     \header {
733       piece = "This is the Music"
734       breakbefore = ##t
735     }
736   }
737 }
738 @end lilypond
739
740 @seealso
741 学習マニュアル:
742 @rlearning{LilyPond 入力ファイルの仕組み}
743
744 記譜法リファレンス:
745 @ref{ファイル構造}
746
747 インストールされているファイル:
748 @file{ly/titling-init.ly}
749
750
751 @node ヘッダとフッタのデフォルト レウアウト
752 @unnumberedsubsubsec ヘッダとフッタのデフォルト レウアウト
753 @translationof Default layout of headers and footers
754
755 @emph{ヘッダ} と @emph{フッタ} は、book のテキストとは別の、@c
756 ページの最初と最後に表示されるテキスト行です。@c
757 ヘッダとフッタは以下の @code{\paper} 変数によって制御されます:
758
759 @itemize
760 @item @code{oddHeaderMarkup}
761 @item @code{evenHeaderMarkup}
762 @item @code{oddFooterMarkup}
763 @item @code{evenFooterMarkup}
764 @end itemize
765
766 これらのマークアップ変数は、最上位の @code{\header} ブロック
767 (これは book のすべての score に適用されます) から、@c
768 テキスト フィールドのみにアクセスすることができ、@c
769 @file{ly/titling-init.ly} で定義されています。@c
770 デフォルトでは以下のようになっています:
771
772 @itemize
773
774 @item
775 ページ番号は、2 ページ目から、ページ最上段の左端 (偶数ページの場合)
776 または右端 (奇数ページの場合) に自動的に配置されます。
777
778 @item
779 @code{instrument} テキスト フィールドは、2 ページ目から、@c
780 各ページの中央に配置されます。
781
782 @item
783 @code{copyright} テキストは最初のページの最下段中央に配置されます。
784
785 @item
786 @code{tagline} は最後のページの最下段中央に配置されます。@c
787 1 ページしかない場合は @code{copyright} の下に配置されます。
788
789 @end itemize
790
791 @lilypond[papersize=a8landscape]
792 \book {
793   \score {
794     \relative c' {
795       c4 d e f
796     }
797   }
798 }
799 @end lilypond
800
801 最上位の @code{\header} ブロックの中に @code{tagline} を追加することで、@c
802 デフォルトのタグラインを変更することができます。
803
804 @lilypond[papersize=a8landscape,verbatim]
805 \book {
806   \header {
807     tagline = "... music notation for Everyone"
808   }
809   \score {
810     \relative c' {
811       c4 d e f
812     }
813   }
814 }
815 @end lilypond
816
817 タグラインを削除するには、@code{tagline}  に @code{##f} をセットします。
818
819
820 @node カスタム ヘッダ、フッタ、タイトル
821 @subsection カスタム ヘッダ、フッタ、タイトル
822 @translationof Custom headers footers and titles
823
824 @c TODO: somewhere put a link to header spacing info
825 @c       (you'll have to explain it more in NR 4).
826
827 @menu
828 * タイトル ブロックのカスタム テキスト フォーマット::
829 * タイトル ブロックのカスタム レイアウト::
830 * ヘッダとフッタのカスタム レイアウト::
831 @end menu
832
833 @node タイトル ブロックのカスタム テキスト フォーマット
834 @unnumberedsubsubsec タイトル ブロックのカスタム テキスト フォーマット
835 @translationof Custom text formatting for title blocks
836
837 標準の @code{\markup} コマンドを使って @code{\header} ブロックの中にある@c
838 ヘッダ、フッタ、それにタイトル テキストをカスタマイズすることができます。
839
840 @lilypond[quote,verbatim,noragged-right]
841 \score {
842   { s1 }
843   \header {
844     piece = \markup { \fontsize #4 \bold "PRAELUDIUM I" }
845     subtitle = \markup { \italic "(Excerpt)" }
846   }
847 }
848 @end lilypond
849
850 @seealso
851 記譜法リファレンス:
852 @ref{テキストをフォーマットする}
853
854
855 @node タイトル ブロックのカスタム レイアウト
856 @unnumberedsubsubsec タイトル ブロックのカスタム レイアウト
857 @translationof Custom layout for title blocks
858
859 @code{\header} ブロックの中に @code{\markup} コマンドを配置することにより、@c
860 シンプルなテキストをフォーマットすることができます。@c
861 しかしながら、タイトルの配置を精密に制御することはできません。@c
862 テキスト フィールドの配置をカスタマイズするために、@c
863 以下の @code{\paper} 変数のどちらか、あるいは両方を使用します:
864
865 @itemize
866 @item @code{bookTitleMarkup}
867 @item @code{scoreTitleMarkup}
868 @end itemize
869
870 これらのマークアップ変数は
871 @ref{book と score のタイトル ブロックのデフォルト レイアウト}
872 で説明しています。
873
874 @file{ly/titling-init.ly} で定義されている @code{scoreTitleMarkup}
875 のデフォルト設定は以下のとおりです:
876
877 @example
878 scoreTitleMarkup = \markup @{ \column @{
879   \on-the-fly #print-all-headers @{ \bookTitleMarkup \hspace #1 @}
880   \fill-line @{
881     \fromproperty #'header:piece
882     \fromproperty #'header:opus
883   @}
884 @}
885 @}
886 @end example
887
888 これは、@code{piece} テキスト フィールドと @code{opus} テキスト フィールドを@c
889 同一行の両端に配置します:
890
891 @lilypond[quote,verbatim,noragged-right]
892 \score {
893   { s1 }
894   \header {
895     piece = "PRAELUDIUM I"
896     opus = "BWV 846"
897   }
898 }
899 @end lilypond
900
901 以下の例では、@code{scoreTitleMarkup} を再定義することにより、@c
902 @code{piece} テキスト フィールドを中央に配置して、フォントを大きく、@c
903 太字にしています。
904
905 @lilypond[papersize=a5,quote,verbatim,noragged-right]
906 \book {
907   \paper {
908     indent = 0\mm
909     scoreTitleMarkup = \markup {
910       \fill-line {
911         \null
912         \fontsize #4 \bold \fromproperty #'header:piece
913         \fromproperty #'header:opus
914       }
915     }
916   }
917   \header { tagline = ##f }
918   \score {
919     { s1 }
920     \header {
921       piece = "PRAELUDIUM I"
922       opus = "BWV 846"
923     }
924   }
925 }
926 @end lilypond
927
928 @code{print-all-headers} を @code{\paper} ブロックの中に配置することにより、@c
929 メイン タイトル ブロックのテキスト フィールドを個々の score タイトル ブロック@c
930 に表示させることができます。@c
931 この方法の欠点は、個々の @code{\score} ブロックで、@c
932 最上位の @code{\header} ブロックだけに表示させるテキスト フィールドを@c
933 手動で抑制する必要があることです。@c
934 @ref{タイトル ブロックの説明} を参照してください。
935
936 この欠点を回避するには、個々の @code{\score} ブロックに表示させたい@c
937 テキスト フィールドを @code{scoreTitleMarkup} 定義に追加します。@c
938 以下の例では、@code{composer} テキスト フィールド
939 (通常、これは @code{bookTitleMarkup} に関連付けされています)
940 を @code{scoreTitleMarkup} に追加することにより、@c
941 各 score は異なる作曲者を表示しています:
942
943 @lilypond[papersize=a5,quote,verbatim,noragged-right]
944 \book {
945   \paper {
946     indent = 0\mm
947     scoreTitleMarkup = \markup {
948       \fill-line {
949         \null
950         \fontsize #4 \bold \fromproperty #'header:piece
951         \fromproperty #'header:composer
952       }
953     }
954   }
955   \header { tagline = ##f }
956   \score {
957     { s1 }
958     \header {
959       piece = "MENUET"
960       composer = "Christian Petzold"
961     }
962   }
963   \score {
964     { s1 }
965     \header {
966       piece = "RONDEAU"
967       composer = "François Couperin"
968     }
969   }
970 }
971 @end lilypond
972
973 あなた自身のカスタム テキスト フィールドを作成して、@c
974 それをマークアップ定義で参照することもできます。
975
976 @lilypond[papersize=a5,quote,verbatim,noragged-right]
977 \book {
978   \paper {
979     indent = 0\mm
980     scoreTitleMarkup = \markup {
981       \fill-line {
982         \null
983         \override #`(direction . ,UP) {
984           \dir-column {
985             \center-align \fontsize #-1 \bold
986               \fromproperty #'header:mycustomtext %% User-defined field
987             \center-align \fontsize #4 \bold
988               \fromproperty #'header:piece
989           }
990         }
991         \fromproperty #'header:opus
992       }
993     }
994   }
995   \header { tagline = ##f }
996   \score {
997     { s1 }
998     \header {
999       piece = "FUGA I"
1000       mycustomtext = "A 4 VOCI" %% User-defined field
1001       opus = "BWV 846"
1002     }
1003   }
1004 }
1005 @end lilypond
1006
1007 @seealso
1008 記譜法リファレンス:
1009 @ref{タイトル ブロックの説明}
1010
1011
1012 @node ヘッダとフッタのカスタム レイアウト
1013 @unnumberedsubsubsec ヘッダとフッタのカスタム レイアウト
1014 @translationof Custom layout for headers and footers
1015
1016 @c can make-header and make-footer be removed from
1017 @c paper-defaults-init.ly? -mp
1018
1019 @code{\header} ブロックの中に @code{\markup} コマンドを配置することにより、@c
1020 シンプルなテキストをフォーマットすることができます。@c
1021 しかしながら、ヘッダとフッタの配置を精密に制御することはできません。@c
1022 テキスト フィールドの配置をカスタマイズするために、@c
1023 以下の @code{\paper} 変数のいずれか、あるいはいくつかを使用します:
1024
1025 @itemize
1026 @item @code{oddHeaderMarkup}
1027 @item @code{evenHeaderMarkup}
1028 @item @code{oddFooterMarkup}
1029 @item @code{evenFooterMarkup}
1030 @end itemize
1031
1032 以下の例では、ページ番号を各ページの最下段中央に配置しています。@c
1033 まず、@code{oddHeaderMarkup} と @code{evenHeaderMarkup} に
1034 @emph{null} を定義することにより、デフォルト設定を削除します。@c
1035 次に、@code{oddFooterMarkup} に中央に配置されたページ番号を再定義します。@c
1036 最後に、@code{evenFooterMarkup} に @code{oddFooterMarkup} を@c
1037 定義することにより、同じレイアウトにします:
1038
1039 @lilypond[papersize=a8,quote,verbatim,noragged-right]
1040 \book {
1041   \paper {
1042     print-page-number = ##t
1043     print-first-page-number = ##t
1044     oddHeaderMarkup = \markup \null
1045     evenHeaderMarkup = \markup \null
1046     oddFooterMarkup = \markup {
1047       \fill-line {
1048         \on-the-fly #print-page-number-check-first
1049         \fromproperty #'page:page-number-string
1050       }
1051     }
1052     evenFooterMarkup = \oddFooterMarkup
1053   }
1054   \score {
1055     \new Staff { s1 \break s1 \break s1 }
1056   }
1057 }
1058 @end lilypond
1059
1060 @seealso
1061 記譜法リファレンス:
1062 @ref{タイトル ブロックの説明},
1063 @ref{book と score のタイトル ブロックのデフォルト レイアウト}
1064
1065
1066 @node 脚注を作成する
1067 @subsection 脚注を作成する
1068 @translationof Creating footnotes
1069
1070 作成できる脚注には 2 つのタイプがあります。@c
1071 自動脚注と手動脚注です。
1072
1073 @menu
1074 * 脚注の概要::
1075 * 自動脚注::
1076 * 手動脚注::
1077 @end menu
1078
1079 @node 脚注の概要
1080 @unnumberedsubsubsec 脚注の概要
1081 @translationof Footnotes overview
1082
1083 自動脚注は繰り上がっていく数字の脚注を作り出し、@c
1084 手動脚注は脚注の印をカスタマイズすることができます。@c
1085 すべてのグラフィカル オブジェクト、最上位の @code{\markup}、@c
1086 それに和音に脚注を付けることができます。
1087
1088 各グラフィカル オブジェクトに付けられた脚注の順番は、
1089 そのグラフィカル オブジェクトが描かれる順番によって決定されます。@c
1090 このため、脚注はコンパイルの最中に作成されます。
1091
1092
1093 @node 自動脚注
1094 @unnumberedsubsubsec 自動脚注
1095 @translationof Automatic footnotes
1096
1097 自動脚注を作成するために 2 つのコマンドがあります。@c
1098 個々のグラフィカル オブジェクト
1099 (例えば、符頭、符幹、スラー、強弱記号、@c
1100 それに @code{TextScripts} の @code{\markup})
1101 に脚注を付ける場合は @code{\footnoteGrob} を使用し、@c
1102 和音に脚注を付ける場合は @code{\footnote} を使用してください。
1103
1104 2 つのコマンドはどちらも 3 つの引数を取ります:
1105 脚注を付ける @var{レイアウト オブジェクト}、@c
1106 脚注の位置 @var{(x . y)}、@c
1107 それにページ下部の脚注に表示される @code{\markup} です。
1108
1109 コマンド @code{\footnoteGrob} は脚注を付けるグラフィカル オブジェクトの
1110 @emph{前に} 配置する必要があります:
1111
1112 @lilypond[verbatim,quote,ragged-right,papersize=a8]
1113 \book {
1114   \header { tagline = ##f }
1115   \relative c' {
1116     \footnote #'(0.5 . -2) #'NoteHead
1117       \markup { The first note }
1118     a'4 b8
1119     \footnote #'(0.5 . 1) #'NoteHead
1120       \markup { The third note }
1121     e c4 d4
1122   }
1123 }
1124 @end lilypond
1125
1126 和音に脚注を付ける場合、@c
1127 @code{\footnote} を脚注を付ける音符の @emph{後に}
1128 @code{TextScript} として配置する必要があります:
1129
1130 @lilypond[verbatim,quote,ragged-right,papersize=a8]
1131 \book {
1132   \header { tagline = ##f }
1133   \relative c' {
1134     <
1135     c-\footnote #'(1 . -1.25) "Here is a C"
1136     es-\footnote #'(2 . -0.25) \markup { \italic "An E-flat" }
1137     g-\footnote #'(2 . 3) \markup { \bold "This is a G" }
1138     >1
1139   }
1140 }
1141 @end lilypond
1142
1143 @warning {
1144 脚注の垂直方向の位置が同じになる場合、下方向に並べられます。@c
1145 高い位置にある脚注は、リストでも上に来ます。
1146 }
1147
1148 ここで、グラフィカル オブジェクトに自動脚注を付ける例をいくつか挙げ、@c
1149 脚注とタグラインやコピーライトとの位置関係を示します。
1150
1151 @lilypond[verbatim,quote,ragged-right,papersize=a8]
1152 \book {
1153   \header { copyright = \markup { "Copyright 1970" } }
1154   \relative c' {
1155     \footnote #'(-3 . 0) #'DynamicText
1156       \markup { \bold Forte }
1157
1158     \footnote #'(0 . 1.5) #'Slur
1159       \markup { A slur }
1160     a'4\f(
1161
1162     \footnote #'(0 . -2) #'Beam
1163       \markup { Beam }
1164     b8)[ e]
1165
1166     \footnote #'(1 . -1) #'Stem
1167       \markup  { \teeny { This is a stem } }
1168     c4
1169
1170     \footnote #'(0 . 0.5) #'AccidentalCautionary
1171       \markup \italic { A cautionary accidental }
1172
1173     \footnote #'(0.5 . -0.5) #'TextScript
1174       \markup \italic { Slow Down }
1175     dis?4_"rit."
1176   }
1177 }
1178 @end lilypond
1179
1180 最上位の @code{\markup} に脚注を付ける場合、@c
1181 @code{\auto-footnote} コマンドを使う必要があります:
1182
1183 @lilypond[verbatim,quote,ragged-right,papersize=a8]
1184 \book {
1185   \header { tagline = ##f }
1186   \markup { \auto-footnote "A simple tune" \italic "By me" }
1187   \relative c' {
1188     a'4 b8 e c4 d
1189   }
1190 }
1191 @end lilypond
1192
1193
1194 @node 手動脚注
1195 @unnumberedsubsubsec 手動脚注
1196 @translationof Manual footnotes
1197
1198 @funindex \footnote
1199 @funindex \footnoteGrob
1200 @cindex footnotes, manual (手動脚注)
1201
1202 手動脚注を作成するために 2 つのコマンドがあります。@c
1203 最上位の @code{\markup} と和音にに脚注を付ける場合は
1204 @code{\footnote} を使用し、@c
1205 個々のグラフィカル オブジェクト
1206 (それに @code{TextScripts} の @code{\markup})
1207 に脚注を付ける場合は @code{\footnoteGrob} を使用てください。
1208
1209 グラフィカル オブジェクトに脚注を付ける場合、@c
1210 @code{\footnote} コマンドは 4 つの引数を取ります:
1211 脚注を付ける @var{レイアウト オブジェクト}、@c
1212 脚注の位置 @var{(x . y)}、@c
1213 それに 2 つの @code{\markup} コマンドです。@c
1214 2 つの @code{\markup} コマンドのうち、@c
1215 最初のコマンドは音符やグラフィカル オブジェクトに付ける脚注の印で、@c
1216 次のコマンドはページ下部の脚注です。
1217
1218 コマンド @code{\footnoteGrob} を脚注を付けるグラフィカル オブジェクトの
1219 @emph{後に} @code{TextScript} として配置する必要があります:
1220
1221 @lilypond[verbatim,quote,ragged-right,papersize=a8]
1222 \book {
1223   \header { tagline = ##f }
1224   \relative c' {
1225     a'4-\footnote
1226           "1" #'(0.5 . -2) #'NoteHead \markup { \italic "1. The first note" }
1227     b8
1228     e-\footnote
1229           \markup { \bold "2" } #'(0.5 . 1) #'NoteHead "2. The second note"
1230     c4
1231     d\p-\footnote "3" #'(0.5 . -1) #'DynamicText "3. Piano"
1232   }
1233 }
1234 @end lilypond
1235
1236 和音に脚注を付ける場合、@c
1237 @code{\footnote} を脚注を付ける音符の @emph{後に}
1238 @code{TextScript} として配置する必要があります:
1239
1240 @lilypond[verbatim,quote,ragged-right,papersize=a8]
1241 \book {
1242   \header { tagline = ##f }
1243   \relative c' {
1244     <
1245     c-\footnote "1" #'(1 . -1.25) "1. C"
1246     es-\footnote
1247        \markup { \bold "b" } #'(2 . -0.25) "b. E-flat"
1248     g-\footnote "3" #'(2 . 3) \markup { \italic "iii. G" }
1249     >1
1250   }
1251 }
1252 @end lilypond
1253
1254 @warning {
1255 脚注の垂直方向の位置が同じになる場合、下方向に並べられます。@c
1256 高い位置にある脚注は、リストでも上に来ます。
1257 }
1258
1259 ここで、グラフィカル オブジェクトに手動脚注を付ける例をいくつか挙げ、@c
1260 脚注とタグラインやコピーライトとの位置関係を示します。
1261
1262 @lilypond[verbatim,quote,ragged-right,papersize=a8]
1263 \book {
1264   \header { tagline = ##f }
1265   \relative c' {
1266     \footnote
1267       \markup { \teeny 1 } #'(-3 . 0) #'DynamicText
1268       \markup { 1. \bold Forte }
1269
1270     \footnote
1271       \markup { \teeny b } #'(0 . 1.5) #'Slur
1272       \markup { b. A slur }
1273     a'4\f(
1274
1275     \footnote
1276       \markup { \teeny 3 } #'(0 . -2) #'Beam
1277       \markup { 3. Beam }
1278     b8)[ e]
1279
1280     \footnote
1281       \markup { 4 } #'(1 . -1) #'Stem
1282       \markup  { \bold 4. { This is a stem } }
1283     c4
1284
1285     \footnote
1286       \markup \concat \teeny { "sharp (v)" } #'(0 . 0.5) #'AccidentalCautionary
1287       \markup \italic { v. A cautionary accidental }
1288
1289     \footnote
1290       \markup \concat \teeny { "a" } #'(0.5 . -0.5) #'TextScript
1291       \markup \italic { a. Slow Down }
1292     dis?4_"rit."
1293
1294     \breathe
1295     \footnote
1296       \markup { \teeny \musicglyph #"rests.4" } #'(1.5 . -0.25) #'BreathingSign
1297       \markup { \null }
1298   }
1299 }
1300 @end lilypond
1301
1302 最上位の @code{\markup} に脚注を付ける場合、下記のようにします:
1303
1304 @lilypond[verbatim,quote,ragged-right,papersize=a8]
1305 \book {
1306   \header { tagline = ##f }
1307   \markup { "A simple tune" \footnote "*" \italic "* By me" }
1308   \relative c' {
1309     a'4 b8 e c4 d4
1310   }
1311 }
1312 @end lilypond
1313
1314 @seealso
1315 学習マニュアル:
1316 @rlearning{オブジェクトとインタフェイス}
1317
1318 記譜法リファレンス:
1319 @ref{バルーン ヘルプ},
1320 @ref{ページ レイアウト},
1321 @ref{テキスト マーク},
1322 @ref{テキスト スクリプト},
1323 @ref{タイトルとヘッダ}
1324
1325 内部リファレンス:
1326 @rinternals{FootnoteEvent},
1327 @rinternals{FootnoteItem},
1328 @rinternals{FootnoteSpanner},
1329 @rinternals{Footnote_engraver}
1330
1331 @knownissues
1332 同じページにある複数の脚注は上下にしか配置できません。@c
1333 ある脚注が他の脚注の上に配置され、同じ行に配置することはできません。@c
1334 @code{MultiMeasureRests} に脚注を付けることはできず、@c
1335 @code{Staff}、@code{\markup} オブジェクト、それに他の @code{footnote} と@c
1336 衝突する可能性があります。@c
1337 手動の @code{footnote} コマンドを使う場合、@c
1338 containing @code{footnote-auto-number = ##f} を保持している
1339 @code{\paper} ブロックが必要です。
1340
1341
1342 @ignore
1343 @node カスタム タイトル
1344 @subsection カスタム タイトル
1345 @translationof Custom titles
1346
1347 さらに高度なオプションとして、@c
1348 @code{\paper} ブロックの中にある以下の変数の定義を変更することができます。@c
1349 初期化ファイル @file{../ly/titling-init.ly} が@c
1350 デフォルトのレイアウトの設定リストです。
1351
1352 @table @code
1353 @funindex bookTitleMarkup
1354 @item bookTitleMarkup
1355   これは出力ドキュメントの先頭に付け加えられるタイトルです。@c
1356 通常、ここには作品の作曲者名とタイトルが含まれます。
1357
1358 @funindex scoreTitleMarkup
1359 @item scoreTitleMarkup
1360   これは @code{\score} ブロックの上に配置されるタイトルです。@c
1361 通常、ここには楽章の名前 (@code{piece} フィールド) が含まれます。
1362
1363 @funindex oddHeaderMarkup
1364 @item oddHeaderMarkup
1365   これは奇数番号ページのヘッダです。
1366
1367 @funindex evenHeaderMarkup
1368 @item evenHeaderMarkup
1369   これは偶数番号ページのヘッダです。@c
1370 これが指定されていない場合は、奇数番号ページのヘッダが代わりに使用されます。
1371
1372   デフォルトのヘッダ定義は、ページ番号は端に配置し、@c
1373 楽器名は中央に配置するようになっています。
1374
1375 @funindex oddFooterMarkup
1376 @item oddFooterMarkup
1377   これは奇数番号ページのフッタです。
1378
1379 @funindex evenFooterMarkup
1380 @item evenFooterMarkup
1381   これは偶数番号ページのフッタです。@c
1382 これが指定されていない場合は、偶数番号ページのフッタが代わりに使用されます。
1383
1384   デフォルトでは、最初のページのフッタには著作権についての注意書きが含まれ、@c
1385 最後のページのフッタにはタグ行が含まれます。
1386 @end table
1387
1388
1389 @cindex \paper
1390 @cindex header (ヘッダ)
1391 @cindex footer (フッタ)
1392 @cindex page layout (ページ レイアウト)
1393 @cindex titles (タイトル)
1394
1395 以下の定義では、タイトルはページの左側に配置され、@c
1396 作曲者名は同じ行の右側に配置されます。
1397
1398 @verbatim
1399 \paper {
1400   bookTitleMarkup = \markup {
1401    \fill-line {
1402      \fromproperty #'header:title
1403      \fromproperty #'header:composer
1404    }
1405   }
1406 }
1407 @end verbatim
1408 @end ignore
1409
1410 @node ページ番号の参照
1411 @subsection ページ番号の参照
1412 @translationof Reference to page numbers
1413
1414 @code{\label} コマンドを用いて、楽譜のある特定の場所
1415 -- 楽譜の最上位あるいは内部 --
1416 に印をつけることができます。@c
1417 このラベルをマークアップの中で参照することできます。@c
1418 ラベルを付けられた場所のページ番号を取得するには、@c
1419 @code{\page-ref} マークアップ コマンドを使います。
1420
1421 @lilypond[verbatim]
1422 \header { tagline = ##f }
1423 \book {
1424   \label #'firstScore
1425   \score {
1426     {
1427       c'1
1428       \pageBreak \mark A \label #'markA
1429       c'1
1430     }
1431   }
1432   \markup { The first score begins on page \page-ref #'firstScore "0" "?" }
1433   \markup { Mark A is on page \page-ref #'markA "0" "?" }
1434 }
1435 @end lilypond
1436
1437 @code{\page-ref} マークアップ コマンドは 3 つの引数をとります:
1438 @enumerate
1439 @item ラベル。@c
1440 これは Scheme シンボルです -- 例: @code{#'firstScore}。
1441 @item マークアップ。@c
1442 これはマークアップの大きさを推定するためのゲージです。
1443 @item マークアップ。@c
1444 これは、ラベルが不明な場合にページ番号として用いられます。
1445 @end enumerate
1446
1447 ゲージが必要な理由は、@c
1448 マークアップが解釈されているときに改ページはまだ行われておらず、@c
1449 ページ番号はまだわからないからです。@c
1450 この問題を回避するために、@c
1451 実際のマークアップ解釈はもっと後に延期されます。@c
1452 しかしながら、マークアップの大きさは事前に判明している必要があるため、@c
1453 ゲージを使ってマークアップの大きさを決定します。@c
1454 book のページ数が 10 から 99 までの範囲であるのなら、ゲージを "00"
1455 -- つまり、2 桁の数 -- にします。
1456
1457
1458 @predefined
1459 @funindex \label
1460 @code{\label},
1461 @funindex \page-ref
1462 @code{\page-ref}
1463 @endpredefined
1464
1465
1466 @node 目次
1467 @subsection 目次
1468 @translationof Table of contents
1469
1470 目次は @code{\markuplist \table-of-contents} コマンドを用いて挿入します。@c
1471 目次に表示すべき要素は @code{\tocItem} コマンドで挿入されます
1472 -- このコマンドは最上位あるいは音楽表記の内部で使用します。
1473
1474 @verbatim
1475 \markuplist \table-of-contents
1476 \pageBreak
1477
1478 \tocItem \markup "First score"
1479 \score {
1480   {
1481     c'4  % ...
1482     \tocItem \markup "Some particular point in the first score"
1483     d'4  % ...
1484   }
1485 }
1486
1487 \tocItem \markup "Second score"
1488 \score {
1489   {
1490     e'4 % ...
1491   }
1492 }
1493 @end verbatim
1494
1495 目次を構成するために使用するマークアップは
1496 @code{\paper} ブロックの中で定義します。@c
1497 デフォルトのマークアップは、@c
1498 目次のタイトルを構成する @code{tocTitleMarkup} と、@c
1499 目次の要素 -- 要素のタイトルとページ番号 -- を構成する
1500 @code{tocItemMarkup} です。@c
1501 これらの変数はユーザによって変更することができます:
1502
1503 @c KEEP LY
1504 @verbatim
1505 \paper {
1506   %% 目次タイトルをフランス語に翻訳します:
1507   tocTitleMarkup = \markup \huge \column {
1508     \fill-line { \null "Table des matières" \null }
1509     \hspace #1
1510   }
1511   %% より大きなフォント サイズを使用します
1512   tocItemMarkup = \markup \large \fill-line {
1513     \fromproperty #'toc:text \fromproperty #'toc:page
1514   }
1515 }
1516 @end verbatim
1517
1518 @code{tocItemMarkup} 定義の中で目次要素のテキストとページ番号を@c
1519 参照する方法に注目してください。
1520
1521 より手の込んだ目次を構築するために新しいコマンドとマークアップを@c
1522 定義することもできます:
1523 @itemize
1524 @item まず、@code{\paper} ブロックの中で新しいマークアップ変数を定義します
1525 @item それから、このマークアップ変数を用いて、@c
1526 目次要素を付け加えるための音楽関数を定義します。
1527 @end itemize
1528
1529 以下の例では、@c
1530 オペラの目次の中で幕の名前を挿入するために新しい様式を定義しています:
1531
1532 @verbatim
1533 \paper {
1534   tocActMarkup = \markup \large \column {
1535     \hspace #1
1536     \fill-line { \null \italic \fromproperty #'toc:text \null }
1537     \hspace #1
1538   }
1539 }
1540
1541 tocAct =
1542 #(define-music-function (parser location text) (markup?)
1543    (add-toc-item! 'tocActMarkup text))
1544 @end verbatim
1545
1546 @lilypond[line-width=11.0\cm]
1547 \header { tagline = ##f }
1548 \paper {
1549   tocActMarkup = \markup \large \column {
1550     \hspace #1
1551     \fill-line { \null \italic \fromproperty #'toc:text \null }
1552     \hspace #1
1553   }
1554 }
1555
1556 tocAct =
1557 #(define-music-function (parser location text) (markup?)
1558    (add-toc-item! 'tocActMarkup text))
1559
1560 \book {
1561   \markuplist \table-of-contents
1562   \tocAct \markup { Atto Primo }
1563   \tocItem \markup { Coro. Viva il nostro Alcide }
1564   \tocItem \markup { Cesare. Presti omai l'Egizzia terra }
1565   \tocAct \markup { Atto Secondo }
1566   \tocItem \markup { Sinfonia }
1567   \tocItem \markup { Cleopatra. V'adoro, pupille, saette d'Amore }
1568   \markup \null
1569 }
1570 @end lilypond
1571
1572 要素とページ番号の間をドットで埋めることができます:
1573
1574 @lilypond[verbatim,quote]
1575 \header { tagline = ##f }
1576 \paper {
1577   tocItemMarkup = \tocItemWithDotsMarkup
1578 }
1579
1580 \book {
1581   \markuplist \table-of-contents
1582   \tocItem \markup { Allegro }
1583   \tocItem \markup { Largo }
1584   \markup \null
1585 }
1586 @end lilypond
1587
1588
1589 @seealso
1590 初期化ファイル: @file{../ly/toc-init.ly}
1591
1592
1593 @predefined
1594 @funindex \table-of-contents
1595 @code{\table-of-contents},
1596 @funindex \tocItem
1597 @code{\tocItem}.
1598 @endpredefined
1599
1600
1601 @node 入力ファイルに取り組む
1602 @section 入力ファイルに取り組む
1603 @translationof Working with input files
1604
1605 @menu
1606 * LilyPond ファイルをインクルードする::
1607 * 1 つのソースから異なる版を生成する::
1608 * 特殊文字::
1609 @end menu
1610
1611
1612 @node LilyPond ファイルをインクルードする
1613 @subsection LilyPond ファイルをインクルードする
1614 @translationof Including LilyPond files
1615
1616 @funindex \include
1617 @cindex including files (ファイルをインクルードする)
1618
1619 大きなプロジェクトは別々のファイルに分割することができます。@c
1620 他のファイルを参照するには、以下のようにします:
1621
1622 @example
1623 \include "otherfile.ly"
1624 @end example
1625
1626 @code{\include "otherfile.ly"} という行は、@c
1627 @file{otherfile.ly} の内容をカレント ファイルの @code{\include}
1628 がある場所に貼り付けるのと等価です。@c
1629 例えば、大きなプロジェクトでは、個々の楽器パートを別々のファイルで記述し、@c
1630 個々の楽器ファイルをまとめる @qq{総譜} ファイルを作成することができます。@c
1631 通常、インクルードされるファイルはいくつかの変数を定義し、@c
1632 それらの変数は総譜ファイルの中で使用されます。@c
1633 インクルードされるファイルの中でタグ付きセクションにマークを付けて、@c
1634 それを楽譜の他の場所で使うことができます
1635 -- @ref{1 つのソースから異なる版を生成する} を参照してください。
1636
1637 カレントのワーキング ディレクトリの中にあるファイルは
1638 @code{\include} コマンドに後にファイル名を指定するだけで@c
1639 参照することができます。@c
1640 他の場所にあるファイルはフル パス参照か相対パス参照
1641 (ディレクトリ区切りとして、UNIX ではスラッシュ / を使用しますが、@c
1642 DOS/Windows ではバックスラッシュ \ を使用します) によって@c
1643 参照することができます。@c
1644 例えば、@file{stuff.ly} がカレントのワーキング ディレクトリよりも
1645 1 つ上のディレクトリの中にある場合、以下のようにインクルードします:
1646
1647 @example
1648 \include "../stuff.ly"
1649 @end example
1650
1651 @noindent
1652 あるいは、インクルードされるオーケストラのすべてのパート ファイルが、@c
1653 カレント ディレクトリ内部の @file{parts} というサブディレクトリの中に@c
1654 配置されている場合、以下のようにインクルードします:
1655
1656 @example
1657 \include "parts/VI.ly"
1658 \include "parts/VII.ly"
1659 ... etc
1660 @end example
1661
1662 インクルードされるファイルも @code{\include} 文を持つことができます。@c
1663 それら第 2 レベルの @code{\include} 文はそのファイルがメイン ファイルに@c
1664 組み込まれるまで解釈されません。@c
1665 そのため、第 2 レベルの @code{\include} 文で指定するファイル名は@c
1666 すべてメイン ファイルを保持しているディレクトリからの相対参照で@c
1667 指定しなければなりません
1668 -- インクルード ファイルを保持しているディレクトリからではありません。@c
1669 しかしながら、この振る舞いは、オプション @option{-drelative-includes} を@c
1670 コマンド ラインで渡すことによって
1671 (あるいは、メイン入力ファイルの先頭に
1672 @code{#(ly:set-option 'relative-includes #t)} を付け加えることによって)
1673 変更することができます。@c
1674 @code{relative-includes} をセットすることで、@c
1675 各 @code{\include} コマンドのパスは@c
1676 そのコマンドを保持しているファイルからの相対参照になります。@c
1677 この振る舞いを使用することが推奨されていて、@c
1678 lilypond の将来のバージョンではこの振る舞いがデフォルトになります。
1679
1680 コマンド ラインから LilyPond を呼び出すときにオプションとして指定した@c
1681 サーチ パスに含まれるディレクトリから@c
1682 ファイルをインクルードすることもできます。@c
1683 サーチ パスを指定した場合、@c
1684 インクルードされるファイルはファイル名だけで指定されます。@c
1685 例えば、サーチ パスで指定する @file{parts} というサブディレクトリの中にある@c
1686 ファイルをインクルードする @file{main.ly} をコンパイルするには、@c
1687 @file{main.ly} を保持しているディレクトリに cd して、以下を入力します:
1688
1689 @example
1690 lilypond --include=parts main.ly
1691 @end example
1692
1693 @file{main.ly} の中には以下を記述しておきます:
1694
1695 @example
1696 \include "VI.ly"
1697 \include "VII.ly"
1698 ... etc
1699 @end example
1700
1701 いくつもの楽譜でインクルードされるファイルは
1702 LilyPond ディレクトリ @file{../ly} の中に置くことになるかもしれません
1703 (このディレクトリが存在する場所はインストールの仕方に依存します
1704 -- @rlearning{その他の情報源} を参照してください)。@c
1705 このディレクトリの中にあるファイルは、@code{\include} 文で@c
1706 ファイル名を指定するだけでインクルードすることができます。@c
1707 この方法で @file{english.ly} のような言語依存のファイルを@c
1708 インクルードしています。
1709
1710 LilyPond は、実行開始時に、デフォルトで@c
1711 いくつかのファイルをインクルードします。@c
1712 このインクルードはユーザには明らかにされませんが、@c
1713 コマンド ラインから @code{lilypond --verbose} を実行することによって@c
1714 インクルードされるファイルを明らかにすることができます。@c
1715 @code{--verbose} オプションは、他の多くの情報とともに、@c
1716 LilyPond が使用するパスとファイルのリストを表示します。@c
1717 また、デフォルトでインクルードされるファイルのうち、@c
1718 より重要なファイルについて @rlearning{その他の情報源} で議論されています。@c
1719 これらのファイルを編集することができますが、@c
1720 これらのファイルに加えられた変更は@c
1721 新しいバージョンの LilyPond をインストールすると失われます。
1722
1723 @code{\include} を使用している簡単な例がいくつか
1724 @rlearning{楽譜とパート} で示されています。
1725
1726
1727 @seealso
1728 学習マニュアル:
1729 @rlearning{その他の情報源},
1730 @rlearning{楽譜とパート}
1731
1732
1733 @knownissues
1734
1735 インクルードされるファイルに LilyPond のインストール ファイルと同じ名前が@c
1736 与えられている場合、LilyPond のインストール ファイルが優先されます。
1737
1738
1739
1740 @node 1 つのソースから異なる版を生成する
1741 @subsection 1 つのソースから異なる版を生成する
1742 @translationof Different editions from one source
1743
1744 同じ音楽ソースから異なるバージョンの楽譜を容易に生成できるようにするために、@c
1745 いくつかの方法が用意されています。@c
1746 長い音楽や注記のセクションをさまざまなやり方で組み合わせる場合には、@c
1747 おそらく変数が最も役に立つでしょう。@c
1748 差し替え用の短い音楽セクションの中から 1 つを選択する場合にはタグが役に立ち、@c
1749 楽曲の一部をいろいろな箇所で組み合わせることもできます。
1750
1751 どのような方法をとるにしても、楽譜構造から音楽表記を分離しておくと、@c
1752 音楽表記に手を触れずに楽譜構造を変更することが簡単に行えます。
1753
1754 @menu
1755 * 変数を使用する::
1756 * タグを使用する::
1757 * グローバル設定を使用する::
1758 @end menu
1759
1760 @node 変数を使用する
1761 @unnumberedsubsubsec 変数を使用する
1762 @translationof Using variables
1763
1764 @cindex variables, use of (変数を使用する)
1765
1766 音楽のセクションが変数の中で定義されている場合、@c
1767 そのセクションを楽譜の異なる部分で再利用することができます
1768 -- @rlearning{変数を用いて楽曲を編成する} を参照してください。@c
1769 例えば、@notation{アカペラ} のボーカル譜はリハーサル目的で@c
1770 すべてのパートをまとめたピアノ譜を持つことがよくあります。@c
1771 これは声楽全般で言えることです。@c
1772 その場合、音楽を入力する必要があるのは 1 回だけです。@c
1773 2 つの変数からの音楽を 1 つの譜に組み込むことができます
1774 -- @ref{自動パート結合} を参照してください。@c
1775 ここに例を挙げます:
1776
1777 @lilypond[verbatim,quote]
1778 sopranoMusic = \relative c'' { a4 b c b8( a) }
1779 altoMusic = \relative g' { e4 e e f }
1780 tenorMusic = \relative c' { c4 b e d8( c) }
1781 bassMusic = \relative c' { a4 gis a d, }
1782 allLyrics = \lyricmode {King of glo -- ry }
1783 <<
1784   \new Staff = "Soprano" \sopranoMusic
1785   \new Lyrics \allLyrics
1786   \new Staff = "Alto" \altoMusic
1787   \new Lyrics \allLyrics
1788   \new Staff = "Tenor" {
1789     \clef "treble_8"
1790     \tenorMusic
1791   }
1792   \new Lyrics \allLyrics
1793   \new Staff = "Bass" {
1794     \clef "bass"
1795     \bassMusic
1796   }
1797   \new Lyrics \allLyrics
1798   \new PianoStaff <<
1799     \new Staff = "RH" {
1800       \set Staff.printPartCombineTexts = ##f
1801       \partcombine
1802       \sopranoMusic
1803       \altoMusic
1804     }
1805     \new Staff = "LH" {
1806       \set Staff.printPartCombineTexts = ##f
1807       \clef "bass"
1808       \partcombine
1809       \tenorMusic
1810       \bassMusic
1811     }
1812   >>
1813 >>
1814 @end lilypond
1815
1816 音楽表記には変更を加えずに、楽譜構造の文を変えるだけで、@c
1817 ボーカル パートだけあるいはピアノ パートだけの楽譜を作り出すことができます。
1818
1819 長い楽譜では、変数定義をそれぞれ別々のファイルの中に置いて、@c
1820 それらのファイルをインクルードすることになるかもしれません
1821 -- @ref{LilyPond ファイルをインクルードする} を参照してください。
1822
1823 @node タグを使用する
1824 @unnumberedsubsubsec タグを使用する
1825 @translationof Using tags
1826
1827 @funindex \tag
1828 @funindex \keepWithTag
1829 @funindex \removeWithTag
1830 @funindex \pushToTag
1831 @funindex \appendToTag
1832 @cindex tag (タグ)
1833 @cindex keep tagged music (タグの付いた音楽を保持する)
1834 @cindex remove tagged music (タグの付いた音楽を排除する)
1835 @cindex splice into tagged music (タグの付いた音楽を組み合わせる)
1836
1837 @code{\tag #'@var{partA}} コマンドは音楽表記に
1838 @var{partA} という名前を付けます。@c
1839 この方法でタグを付けられた表記は、後で @code{\keepWithTag #'@var{name}} と
1840 @code{\removeWithTag #'@var{name}} のどちらかを用いて、@c
1841 名前によって選択あるいは排除することができます。@c
1842 タグの付いた音楽にそのようなフィルタを適用した結果は以下のようになります:
1843
1844 @multitable @columnfractions .5 .5
1845 @headitem フィルタ
1846   @tab 結果
1847 @item
1848 @code{\keepWithTag #'@var{name}} が前に付くタグ付きの音楽
1849   @tab タグの付いていない音楽と @var{name} というタグの付いた音楽が@c
1850 インクルードされます。@c
1851 他のタグ名を持つタグ付き音楽は排除されます。
1852 @item
1853 @code{\removeWithTag #'@var{name}} が前に付くタグ付きの音楽
1854   @tab タグの付いていない音楽と @var{name} 以外のタグを持つ音楽が@c
1855 インクルードされます。@c
1856 @var{name} というタグの付いた音楽は排除されます。
1857 @item
1858 @code{\keepWithTag} と @code{\removeWithTag} のどちらも@c
1859 前に付かないタグ付きの音楽
1860   @tab タグの付いた音楽とタグの付いていない音楽すべてがインクルードされます。
1861 @end multitable
1862
1863 @code{\tag}、@code{\keepWithTag} それに @code{\removeWithTag} コマンドの引数は@c
1864 シンボル (@code{#'score} や @code{#'part} など) とその後に続けて@c
1865 音楽表記であるべきです。
1866
1867 以下の例では、楽曲を 2 つのバージョンで示しています。@c
1868 1 つはトリルを通常の記譜法で示していて、@c
1869 もう 1 つはトリルを明示的に展開しています:
1870
1871 @lilypond[verbatim,quote]
1872 music = \relative g' {
1873   g8. c32 d
1874   \tag #'trills {d8.\trill }
1875   \tag #'expand {\repeat unfold 3 {e32 d} }
1876   c32 d
1877  }
1878
1879 \score {
1880   \keepWithTag #'trills \music
1881 }
1882 \score {
1883   \keepWithTag #'expand \music
1884 }
1885 @end lilypond
1886
1887 @noindent
1888 @code{\keepWithTag} を使う代わりに、@c
1889 音楽セクションを排除する方が楽な場合もあります:
1890
1891 @lilypond[verbatim,quote]
1892 music = \relative g' {
1893   g8. c32 d
1894   \tag #'trills {d8.\trill }
1895   \tag #'expand {\repeat unfold 3 {e32 d} }
1896   c32 d
1897  }
1898
1899 \score {
1900   \removeWithTag #'expand
1901   \music
1902 }
1903 \score {
1904   \removeWithTag #'trills
1905   \music
1906 }
1907 @end lilypond
1908
1909 タグ フィルタリングはアーティキュレーション、テキストなどにも@c
1910 適用することができます。@c
1911 フィルタリングを行うにはアーティキュレーションの前に
1912
1913 @example
1914 -\tag #'@var{your-tag}
1915 @end example
1916
1917 を置きます。@c
1918 例えば、以下は条件付の運指指示を持つ音符と条件付注記を持つ音符を定義しています:
1919
1920 @example
1921 c1-\tag #'finger ^4
1922 c1-\tag #'warn ^"Watch!"
1923 @end example
1924
1925 複数の @code{\tag} エントリで、表記に複数のタグを付ける場合もあります:
1926
1927 @lilypond[quote,verbatim]
1928 music = \relative c'' {
1929   \tag #'a \tag #'both { a4 a a a }
1930   \tag #'b \tag #'both { b4 b b b }
1931 }
1932 <<
1933 \keepWithTag #'a \music
1934 \keepWithTag #'b \music
1935 \keepWithTag #'both \music
1936 >>
1937 @end lilypond
1938
1939 単一の音楽表記に複数の @code{\removeWithTag} フィルタを適用することによって、@c
1940 いくつかの異なる名前のタグが付いたセクションを排除することができます:
1941
1942 @lilypond[verbatim,quote]
1943 music = \relative c'' {
1944 \tag #'A { a4 a a a }
1945 \tag #'B { b4 b b b }
1946 \tag #'C { c4 c c c }
1947 \tag #'D { d4 d d d }
1948 }
1949 {
1950 \removeWithTag #'B
1951 \removeWithTag #'C
1952 \music
1953 }
1954 @end lilypond
1955
1956 単一の音楽表記に複数の @code{\keepWithTag} フィルタを適用すると、@c
1957 タグ付きセクションは @emph{すべて} 排除されます。@c
1958 なぜなら、最初のフィルタはあるタグ名以外を持つセクションを排除し、@c
1959 2 番目のフィルタがそのタグ名を持つセクションを排除するからです。
1960
1961 既存の音楽表記のある特定の場所にいくつか音を組み込みたいことがあります。@c
1962 @code{\pushToTag} と @code{\appendToTag} を使って、@c
1963 既存の音楽構造の @code{要素} の前または後に素材を追加することができます。@c
1964 すべての音楽構造が @code{要素} を持つわけではありませんが、@c
1965 連続するか同時進行する音楽構造はまず間違いなく @code{要素} を持ちます:
1966
1967 @lilypond[verbatim,quote]
1968 test = { \tag #'here { \tag #'here <<c''>> } }
1969
1970 {
1971   \pushToTag #'here c'
1972   \pushToTag #'here e'
1973   \pushToTag #'here g' \test
1974   \appendToTag #'here c'
1975   \appendToTag #'here e'
1976   \appendToTag #'here g' \test
1977 }
1978 @end lilypond
1979
1980 どちらのコマンドもタグ、組み込む素材、それにタグ付けされた音楽表記を
1981 取り、タグが出現するたびに素材を組み込みます。@c
1982 これらのコマンドは変更するものを全てコピーするので、@c
1983 オリジナルの @code{\test} が元の意味を保持し続けることを保証します。
1984
1985
1986 @seealso
1987 学習マニュアル:
1988 @rlearning{変数を用いて楽曲を編成する}
1989
1990 記譜法リファレンス:
1991 @ref{自動パート結合},
1992 @ref{LilyPond ファイルをインクルードする}
1993
1994 @ignore
1995 @c This warning is more general than this placement implies.
1996 @c Rests are not merged whether or not they come from tagged sections.
1997 @c Should be deleted?  -td
1998
1999 @knownissues
2000
2001 Multiple rests are not merged if you create a score with more
2002 than one tagged section at the same place.
2003
2004 複数のタグ付きセクションからを生成した場合、@c
2005 同じ場所にある複数の休符はマージされません。
2006 @end ignore
2007
2008
2009 @node グローバル設定を使用する
2010 @unnumberedsubsubsec グローバル設定を使用する
2011 @translationof Using global settings
2012
2013 @cindex include-settings
2014
2015 別のファイルからグローバル設定をインクルードすることができます:
2016
2017 @example
2018 lilypond -dinclude-settings=MY_SETTINGS.ly MY_SCORE.ly
2019 @end example
2020
2021 ページ サイズ、フォント、書体などのような設定のグループを別々のファイルに@c
2022 保存することができます。@c
2023 こうすることにより、適当な設定ファイルを指定するだけで、@c
2024 同じ楽譜から異なる版を作り出すことができます。
2025
2026 このテクニックはスタイル シートでも使えます。@c
2027 @rlearning{スタイル シート} を参照してください。
2028
2029 @seealso
2030 学習マニュアル:
2031 @rlearning{変数を用いて楽曲を編成する},
2032 @rlearning{スタイル シート}.
2033
2034 記譜法リファレンス:
2035 @ref{LilyPond ファイルをインクルードする}
2036
2037
2038 @node 特殊文字
2039 @subsection 特殊文字
2040 @translationof Special characters
2041
2042 @cindex special characters (特殊文字)
2043 @cindex non-ASCII characters (非 ASCII 文字)
2044
2045 @menu
2046 * テキスト エンコーディング::
2047 * Unicode::
2048 * ASCII エイリアス::
2049 @end menu
2050
2051
2052 @node テキスト エンコーディング
2053 @unnumberedsubsubsec テキスト エンコーディング
2054 @translationof Text encoding
2055
2056 @cindex UTF-8
2057
2058 LilyPond は Unicode 協会と ISO/IEC 10646 によって定義された@c
2059 文字レパートリを使用します。@c
2060 この文字レパートリは、ほとんどすべての現代言語と他の多くの言語で@c
2061 使用される文字セットに対して、固有の名前とコード位置を定義しています。@c
2062 Unicode はいくつかの異なるエンコーディングを用いて実装することができます。@c
2063 LilyPond は UTF-8 エンコーディング
2064 (UTF は Unicode Transformation Format を意味します) を使用します
2065 -- UTF-8 はすべての共通ラテン文字を 1 バイトで表し、@c
2066 他の文字を可変バイト長形式 (最大 4 ビット) で表します。
2067
2068 文字の実際の見た目は利用可能なある特定のフォントの中にあるグリフ (図柄)
2069 によって決定されます
2070 -- フォントはグリフを指す Unicode コードのサブセット (部分集合) の写像を@c
2071 定義しています。@c
2072 LilyPond は多言語テキストを、Pango ライブラリを用いて、@c
2073 レイアウトして描画します。
2074
2075 Lilypond は入力のエンコーディング変換をまったく行いません。@c
2076 これは非 ASCII 文字を含むすべてのテキスト
2077  -- タイトル、歌詞テキストあるいは演奏指示 --
2078 を UTF-8 でエンコードして入力する必要があるということを意味します。@c
2079 そのようなテキストを入力する最も容易な方法は Unicode を認識するエディタを@c
2080 用いて、ファイルを UTF-8 で保存することです。@c
2081 人気のある現代的なエディタのほとんどが UTF-8 をサポートします
2082  -- 例えば、vim, Emacs, jEdit, GEdit です。@c
2083 NT より後の MS Windows システムはすべて@c
2084 ネイティブ キャラクタ エンコーディングとして Unicode を使用します。@c
2085 そのため、Notepad でさえ UTF-8 フォーマットのファイルを@c
2086 編集して保存することができます。@c
2087 Windows 用のもっと機能的なエディタに BabelPad があります。
2088
2089 非 ASCII 文字を保持している LilyPond 入力ファイルが UTF-8 フォーマットで@c
2090 保存されていない場合、エラー メッセージ
2091
2092 @example
2093 FT_Get_Glyph_Name () error: invalid argument
2094 @end example
2095
2096 が表示されます。
2097
2098 ここでキリル文字、ヘブライ文字、ポルトガル語のテキストを表示する例を挙げます:
2099
2100 @c KEEP LY
2101 @lilypond[quote]
2102 %c No verbatim here as the code does not display correctly in PDF
2103 % キリル文字
2104 bulgarian = \lyricmode {
2105   Жълтата дюля беше щастлива, че пухът, който цъфна, замръзна като гьон.
2106 }
2107
2108 % ヘブライ文字
2109 hebrew = \lyricmode {
2110   זה כיף סתם לשמוע איך תנצח קרפד עץ טוב בגן.
2111 }
2112
2113 % ポルトガル語
2114 portuguese = \lyricmode {
2115   à vo -- cê uma can -- ção legal
2116 }
2117
2118 \relative  {
2119   c2 d e f g f e
2120 }
2121 \addlyrics { \bulgarian }
2122 \addlyrics { \hebrew }
2123 \addlyrics { \portuguese }
2124 @end lilypond
2125
2126
2127 @node Unicode
2128 @unnumberedsubsubsec Unicode
2129 @translationof Unicode
2130
2131 @cindex Unicode (ユニコード)
2132
2133 単一の文字 -- その文字に対する Unicode コード ポイントを知っているが、@c
2134 使用しているエディタではその文字を使用できない -- を入力するには、@c
2135 @code{\markup} ブロック内部で @code{\char ##xhhhh} あるいは
2136 @code{\char ##dddd} を使用します
2137 -- ここで @code{hhhh} はその文字に対する 16 進コードであり、@c
2138 @code{dddd} はそれに対応する 10 進数値です。@c
2139 先頭の 0 は省略可能ですが、16 進表記では 4 文字で指定する方法が一般的です。@c
2140 (@code{\char} の後に UTF-8 エンコーディングのコード ポイントを使うべきでは@c
2141 ありません。@c
2142 なぜなら、UTF-8 エンコーディングはバイト数を表すための余分なビットを@c
2143 保持しているからです。)
2144 任意の文字に対する 16 進のコード ポイントを調べるための、@c
2145 Unicode コード表と文字名インデックスは Unicode コンソーシアム Web サイト
2146 @uref{http://www.unicode.org/} にあります。
2147
2148
2149 例えば、@code{\char ##x03BE} と @code{\char #958} はどちらも
2150 Unicode U+03BE の文字を入力します
2151 -- この文字は Unicode 名 @qq{Greek Small Letter Xi}
2152 (ギリシャ小文字クシー) です。@c
2153
2154 この方法で任意の Unicode コード ポイントを入力することができます。@c
2155 すべての特殊文字がこの方法で入力されている場合、@c
2156 入力ファイルを UTF-8 フォーマットで保存する必要はありません。@c
2157 もちろん、入力された文字を保持しているフォントがすべて@c
2158 インストールされていて、LilyPond で利用可能になっている必要があります。
2159
2160 以下の例は UTF-8 コード化された文字を 4 箇所
2161 -- リハーサル記号の中、アーティキュレーション テキストとして、歌詞の中、@c
2162 楽譜の下にある独立したテキストの中 --
2163 で使用しています:
2164
2165 @lilypond[quote,verbatim]
2166 \score {
2167   \relative c'' {
2168     c1 \mark \markup { \char ##x03EE }
2169     c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } }
2170   }
2171   \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
2172 }
2173 \markup { "Copyright 2008--2012" \char ##x00A9 }
2174 @end lilypond
2175
2176 @cindex copyright sign (著作権記号)
2177
2178 著作権についての注意書きの中で著作権記号を入力するには、以下のようにします:
2179
2180 @example
2181 \header @{
2182   copyright = \markup @{ \char ##x00A9 "2008" @}
2183 @}
2184 @end example
2185
2186
2187 @node ASCII エイリアス
2188 @unnumberedsubsubsec ASCII エイリアス
2189 @translationof ASCII aliases
2190
2191 特殊文字の ASCII エイリアスのリストを含めることができます:
2192
2193 @c KEEP LY
2194 @lilypond[quote,verbatim]
2195 \paper {
2196   #(include-special-characters)
2197 }
2198
2199 \markup "&flqq; &ndash; &OE;uvre incomplète&hellip; &frqq;"
2200
2201 \score {
2202   \new Staff { \repeat unfold 9 a'4 }
2203   \addlyrics {
2204     This is al -- so wor -- kin'~in ly -- rics: &ndash;_&OE;&hellip;
2205   }
2206 }
2207
2208 \markup \column {
2209   "特殊文字への置換を無効にすることができます:"
2210   "&ndash; &OE; &hellip;"
2211   \override #'(replacement-alist . ()) "&ndash; &OE; &hellip;"
2212 }
2213 @end lilypond
2214
2215 また、エイリアスを作ることもできます。@c
2216 グローバルに作るか:
2217
2218 @lilypond[quote,verbatim]
2219 \paper {
2220   #(add-text-replacements!
2221     '(("100" . "hundred")
2222       ("dpi" . "dots per inch")))
2223 }
2224 \markup "A 100 dpi."
2225 @end lilypond
2226
2227 ローカルで作ります:
2228
2229 @lilypond[quote,verbatim]
2230 \markup \replace #'(("100" . "hundred")
2231                     ("dpi" . "dots per inch")) "A 100 dpi."
2232 @end lilypond
2233
2234 @seealso
2235 記譜法リファレンス:
2236 @ref{List of special characters}
2237
2238 インストールされているファイル:
2239 @file{ly/text-replacements.ly}
2240
2241
2242
2243 @node 出力を制御する
2244 @section 出力を制御する
2245 @translationof Controlling output
2246
2247 @menu
2248 * 音楽の断片を抽出する::
2249 * 校正済みの音楽をスキップする::
2250 * 他の出力フォーマット::
2251 * 記譜フォントを置換する::
2252 @end menu
2253
2254 @node 音楽の断片を抽出する
2255 @subsection 音楽の断片を抽出する
2256 @translationof Extracting fragments of music
2257
2258 大きな楽譜の中の小さな範囲を、出力から直接引用することができます。@c
2259 これは紙の楽譜の一部をはさみで切り抜くことに相当します。
2260
2261 これは切り抜く小節を定義することによって実行されます。@c
2262 例えば、以下の定義は、
2263
2264
2265 @verbatim
2266 \layout {
2267   clip-regions
2268   = #(list
2269       (cons
2270        (make-rhythmic-location 5 1 2)
2271        (make-rhythmic-location 7 3 4)))
2272 }
2273 @end verbatim
2274
2275 @noindent
2276 第 5 小節の中間から第 7 小節までを抽出します。@c
2277 @code{5 1 2} は第 5 小節の先頭から 1/2 音符の位置を意味し、@c
2278 @code{7 3 4} は第 7 小節の先頭から 4 分音符 3 つ分の位置を意味します。
2279
2280 リズムによる位置のペアをリストに追加することによって、@c
2281 更に多くの切り抜き範囲を定義することができます。
2282
2283 この機能を使用するには、@c
2284 LilyPond を @option{-dclip-systems} を付けて呼び出す必要があります。@c
2285 切り抜きは EPS ファイルとして出力され、@c
2286 更にフォーマットが指定されている場合には PDF や PNG に変換されます。
2287
2288 出力フォーマットについての更なる情報は、@c
2289 @rprogram{lilypond を呼び出す} を参照してください。
2290
2291 @node 校正済みの音楽をスキップする
2292 @subsection 校正済みの音楽をスキップする
2293 @translationof Skipping corrected music
2294
2295 @funindex skipTypesetting
2296 @funindex showFirstLength
2297 @funindex showLastLength
2298
2299 音楽を入力あるいはコピーしているとき、@c
2300 閲覧、校正する必要があるのは、たいてい終わり近くの音楽
2301 (そこに音符を追加している場所) だけです。@c
2302 校正プロセスを速めるために、@c
2303 最後の数小節以外の譜刻をスキップすることができます。@c
2304 これはソース ファイルの中に以下を置くことによって実現できます:
2305
2306 @verbatim
2307 showLastLength = R1*5
2308 \score { ... }
2309 @end verbatim
2310
2311 @noindent
2312 これは入力ファイルの中にあるそれぞれの @code{\score} の最後の 5 小節だけを@c
2313 描画します (4/4 拍子と仮定して)。@c
2314 長い楽曲の場合、小さな部分だけを描画するのにかかる時間は@c
2315 楽曲をすべて描画するのにかかる時間よりも非常に短くなります。@c
2316 すでに譜刻済みの楽譜の開始部分に取り掛かる (例えば、新しいパートを追加する)
2317 ときには、@code{showFirstLength} プロパティも役に立つかもしれません。
2318
2319 楽譜の中のいくつかのパートをスキップは、プロパティ @code{Score.skipTypesetting}
2320 を用いたより細かなやり方で制御することができます。@c
2321 このプロパティがセットされていると、譜刻はまったく行われません。
2322
2323 このプロパティは MIDI ファイルへの出力を制御するためにも用いられます。@c
2324 このプロパティはすべてのイベント -- テンポの変更や楽器の変更を含む -- を@c
2325 スキップするということに注意してください。@c
2326 くれぐれも注意してください。
2327
2328 @lilypond[quote,relative=2,ragged-right,verbatim]
2329 c8 d
2330 \set Score.skipTypesetting = ##t
2331 e8 e e e e e e e
2332 \set Score.skipTypesetting = ##f
2333 c8 d b bes a g c2
2334 @end lilypond
2335
2336 多声の音楽では、@code{Score.skipTypesetting} はすべてのボイスと譜に@c
2337 影響を与えて、より多くの時間を節約します。
2338
2339
2340 @node 他の出力フォーマット
2341 @subsection 他の出力フォーマット
2342 @translationof Alternative output formats
2343
2344 @cindex scalable vector graphics output (SVG 出力)
2345 @cindex SVG output (SVG 出力)
2346 @cindex encapsulated postscript output (EPS 出力)
2347 @cindex EPS output (EPS 出力)
2348
2349 譜刻される楽譜のデフォルト出力フォーマットは、@c
2350 Portable Document Format (PDF) と PostScript (PS) です。@c
2351 コマンド ライン オプションを指定することにより、@c
2352 Scalable Vector Graphics (SVG), Encapsulated PostScript (EPS) それに
2353 Portable Network Graphics (PNG) 出力フォーマットが利用可能です。@c
2354 @rprogram{lilypond のコマンド ライン オプション} を参照してください。
2355
2356
2357 @node 記譜フォントを置換する
2358 @subsection 記譜フォントを置換する
2359 @translationof Replacing the notation font
2360
2361 LilyPond で使用される Feta フォントの代わりに Gonville に使うことができます。@c
2362 Gonville は以下からダウンロードできます:
2363 @example
2364 @uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/}
2365 @end example
2366
2367 Gonville のサンプル小節です:
2368
2369 @c NOTE: these images are a bit big, but that's important
2370 @c       for the font comparison.  -gp
2371 @sourceimage{Gonville_after,,,}
2372
2373 LilyPond の Feta フォントのサンプル小節です:
2374
2375 @sourceimage{Gonville_before,,,}
2376
2377 @subsubheading MacOS でのインストール手順
2378
2379 ZIP ファイルをダウンロードして、伸張します。@c
2380 @code{lilyfonts} ディレクトリを @file{@var{SHARE_DIR}/lilypond/current} に@c
2381 コピーします
2382 -- 更なる情報は、@rlearning{その他の情報源} を参照してください。@c
2383 既存の @code{fonts} ディレクトリを @code{fonts_orig} にリネームして、@c
2384 @code{lilyfonts} ディレクトリを @code{fonts} にリネームします。@c
2385 Feta フォントに戻すには、@code{fonts_orig} を @code{fonts} に戻します。
2386
2387 @seealso
2388 学習マニュアル: @rlearning{その他の情報源}
2389
2390 @knownissues
2391
2392 Gonville では @q{古代の音楽} を記譜することはできません。@c
2393 Gonville フォント ファミリーでは、@c
2394 これからリリースされる LilyPond の新しい図柄は提供されないかもしれません。@c
2395 ライセンス条件等を含む Gonville の更なる情報は、@c
2396 製作者の Web サイトを参照してください。
2397
2398
2399 @node MIDI 出力
2400 @section MIDI 出力
2401 @translationof MIDI output
2402
2403 @cindex Sound (サウンド)
2404 @cindex MIDI
2405
2406 MIDI (Musical Instrument Digital Interface) はデジタル楽器接続 / 制御の@c
2407 標準インタフェイスです。@c
2408 MIDI ファイルはいくつかのトラックの中にある音符の連なりです。@c
2409 MIDI ファイルは実際はサウンド ファイルではありません。@c
2410 音符の連なりと実際のサウンドの翻訳を行うには専用のソフトウェアが必要になります。
2411
2412 LilyPond で記述した音楽は MIDI ファイルに変換することができ、@c
2413 入力されたものを聴くことができます。@c
2414 これは音楽をチェックするのに便利です。オクターブの外れや臨時記号の付け間違いは
2415 MIDI 出力を聴いたときに際立ちます。
2416
2417 標準 MIDI 出力には粗雑さがあります。@c
2418 オプションで @ref{奏法スクリプト} を用いることにより、@c
2419 強化されたリアルな MIDI 出力を得ることができます。
2420
2421 MIDI 出力は譜毎に 1 つのチャンネルを割り当て、@c
2422 ドラムのためにチャンネル 10 を予約します。@c
2423 デバイス 1 つにつき MIDI チャンネルは 16 しかないため、@c
2424 楽譜が 16 以上の譜を保持している場合、MIDI チャンネルは再利用されます。
2425
2426 @menu
2427 * MIDI ファイルを作り出す::
2428 * MIDI ブロック::
2429 * 何が MIDI に出力されるのか?::
2430 * MIDI での繰り返し::
2431 * MIDI での音の強弱を制御する::
2432 * MIDI での打楽器::
2433 * 奏法スクリプト::
2434 @end menu
2435
2436 @node MIDI ファイルを作り出す
2437 @subsection MIDI ファイルを作り出す
2438 @translationof Creating MIDI files
2439
2440 LilyPond 入力ファイルから MIDI ファイルを作り出すには、@c
2441 score に @code{\midi} ブロックを付け加えます。@c
2442 例えば、以下のように:
2443
2444 @example
2445 \score @{
2446   @var{...music...}
2447   \midi @{ @}
2448 @}
2449 @end example
2450
2451 @code{\layout} ブロックを持たない @code{\score} の中に
2452 @code{\midi} ブロックがある場合、MIDI 出力だけが生成されます。@c
2453 楽譜も必要な場合は、@code{\layout} ブロックも存在している必要があります。
2454
2455 @example
2456 \score @{
2457   @var{...music...}
2458   \midi @{ @}
2459   \layout @{ @}
2460 @}
2461 @end example
2462
2463 ピッチ、リズム、タイ、強弱記号、テンポの変更は解釈されて@c
2464 正確に MIDI 出力に翻訳されます。@c
2465 強弱記号、クレッシェンド、デクレッシェンドは MIDI ボリューム レベルに@c
2466 翻訳されます。@c
2467 強弱記号は利用可能な MIDI ボリューム レンジ内のある固定値に翻訳されます。@c
2468 クレッシェンドとデクレッシェンドはそれらの開始点と終了点の間でボリュームを@c
2469 線形に変化させます。@c
2470 MIDI 出力における強弱記号の効果を完全に削除することができます
2471  -- @ref{MIDI ブロック} を参照してください。
2472
2473 初期のテンポと後のテンポ変化は、音楽記譜内部の @code{\tempo} コマンドで@c
2474 指定することができます。@c
2475 通常このコマンドはメトロノーム記号を表示させますが、@c
2476 表示を抑制することができます
2477 -- @ref{メトロノーム記号} を参照してください。@c
2478 初期 MIDI テンポあるいは MIDI 全体のテンポを指定するための代替手段が@c
2479 この後で記述されています -- @ref{MIDI ブロック} を参照してください。
2480
2481 Windows の制限により、Windows での MIDI ファイルのデフォルトの拡張子は
2482 @code{.mid} です。@c
2483 他の OS では、拡張子は @code{.midi} となります。@c
2484 他の拡張子を使いたいのであれば、入力ファイルの最上位で、@c
2485 @code{\book} ブロック, @code{\bookpart} ブロック、それに @code{\score}
2486 ブロックの前に以下の行を挿入します:
2487
2488 @example
2489 #(ly:set-option 'midi-extension "midi")
2490 @end example
2491
2492 上記の行は、MIDI ファイルのデフォルトの拡張子を @code{.midi} にします。
2493
2494 上記の方法の代わりとして、@c
2495 コマンド ラインで以下のオプションを与える方法があります:
2496
2497 @example
2498 lilypond … -dmidi-extension=midi lilyFile.ly
2499 @end example
2500
2501
2502 @unnumberedsubsubsec 楽器名
2503 @c @unnumberedsubsubsec Instrument names
2504
2505 @cindex instrument names (楽器名)
2506 @funindex Staff.midiInstrument
2507
2508 @code{Staff.midiInstrument} プロパティに楽器名を設定することで、@c
2509 使用する MIDI 楽器が指定されます。@c
2510 楽器名は @ref{MIDI instruments} にあるリストから選択しなければなりません。
2511
2512 @example
2513 \new Staff @{
2514   \set Staff.midiInstrument = #"glockenspiel"
2515   @var{...notes...}
2516 @}
2517 @end example
2518
2519 @example
2520 \new Staff \with @{midiInstrument = #"cello"@} @{
2521   @var{...notes...}
2522 @}
2523 @end example
2524
2525 選択された楽器が MIDI 楽器のリストにある楽器に一致しない場合、@c
2526 グランド ピアノ (@code{"acoustic grand"}) 楽器が使用されます。
2527
2528
2529 @snippets
2530
2531 @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
2532 {changing-midi-output-to-one-channel-per-voice.ly}
2533
2534 @knownissues
2535
2536 @c In 2.11 the following no longer seems to be a problem -td
2537 @ignore
2538 Unterminated (de)crescendos will not render properly in the midi file,
2539 resulting in silent passages of music.  The workaround is to explicitly
2540 terminate the (de)crescendo.  For example,
2541
2542 終端の無い(デ)クレッシェンドは適切に MIDI ファイルを作り出しません。@c
2543 結果として無音の音楽パッセージとなります。@c
2544 回避方法として、明示的に(デ)クレッシェンドを終了させます。@c
2545 例えば、
2546
2547 @example
2548 @{ a\< b c d\f @}
2549 @end example
2550
2551 @noindent
2552 will not work properly but
2553 これは正しく機能しませんが、
2554
2555 @example
2556 @{ a\< b c d\!\f @}
2557 @end example
2558
2559 @noindent
2560 will.
2561 これは正しく機能します。
2562 @end ignore
2563
2564 MIDI ボリュームの変化は音符の開始点でのみ起こります。@c
2565 そのため、クレッシェンドとデクレッシェンドは@c
2566 単一の音符のボリューム変化には効果を持ちません。
2567
2568 すべての MIDI プレイヤが MIDI 出力の中にあるテンポ変化を@c
2569 正しく処理するわけではありません。@c
2570 正しく機能するプレイヤとして知られているものには MS Windows の Media Player や
2571 @uref{http://@/timidity@/.sourceforge@/.net/,timidity} があります。
2572
2573 @node MIDI ブロック
2574 @subsection MIDI ブロック
2575 @translationof MIDI block
2576
2577 @cindex MIDI block (MIDI ブロック)
2578
2579 MIDI 出力が必要な場合、@c
2580 score 内部に @code{\midi} ブロックを置く必要があります。@c
2581 MIDI ブロックはレイアウト ブロックに似ていますが、それよりも単純です。@c
2582 しばしば、@code{\midi} ブロックは空のままですが、コンテキストの再編成
2583 -- 新しいコンテキスト定義やプロパティの値を設定するためのコード --
2584 を保持することもできます。@c
2585 例えば以下の例は、テンポ指示を譜刻することなしに、@c
2586 MIDI ファイルの初期テンポを設定します:
2587
2588 @example
2589 \score @{
2590   @var{...music...}
2591   \midi @{
2592     \context @{
2593       \Score
2594       tempoWholesPerMinute = #(ly:make-moment 72 4)
2595     @}
2596   @}
2597 @}
2598 @end example
2599
2600 この例では、テンポは 1 分間あたり 72 個の 4 分音符にセットされています。@c
2601 この種のテンポ指定では引数として付点音符の長さをとることはできません。@c
2602 付点音符の長さを指定する必要がある場合、@c
2603 その付点音符をより小さな単位に分解します。@c
2604 例えば、1 分間に 90 個の付点 4 分音符のテンポは、@c
2605 1 分間に 270 個の 8 分音符として指定することができます:
2606
2607 @example
2608 tempoWholesPerMinute = #(ly:make-moment 270 8)
2609 @end example
2610
2611 @cindex MIDI context definitions (MIDI コンテキスト定義)
2612
2613 @code{\midi} ブロック内部でのコンテキスト定義は、@c
2614 @code{\layout} ブロック内部でのコンテキスト定義の構文とまったく同じです。@c
2615 サウンドのモジュールへの翻訳は performer と呼ばれます。@c
2616 MIDI 出力のためのコンテキストは
2617 @file{../ly/performer-init.ly} で定義されています
2618 -- @rlearning{その他の情報源} を参照してください。@c
2619 例えば、MIDI 出力から強弱記号の効果を削除するには、@c
2620 @code{\midi@{ @}} ブロックの中に以下のコードを挿入します。
2621
2622 @example
2623 \midi @{
2624   ...
2625   \context @{
2626     \Voice
2627     \remove "Dynamic_performer"
2628   @}
2629 @}
2630 @end example
2631
2632 MIDI 出力は、@code{\score} コマンドで定義された score ブロック内部に
2633 @code{\midi} ブロックが存在する場合にのみ生成されます。
2634
2635 @ignore
2636 @code{\midi} ブロックが明示的にインスタンス化された score コンテキストの中
2637 (例えば、@code{\new Score} ブロックの中) に配置された場合、@c
2638 その LilyPond ファイルはエラーになります。@c
2639 これを解決するには、@code{\new Score} と @code{\midi} コマンドを
2640 @code{\score} ブロックの中に置きます。
2641 @end ignore
2642
2643 @example
2644 \score @{
2645   @{ @dots{}notes@dots{} @}
2646   \midi @{ @}
2647 @}
2648 @end example
2649
2650
2651 @node 何が MIDI に出力されるのか?
2652 @subsection 何が MIDI に出力されるのか?
2653 @translationof What goes into the MIDI output?
2654
2655 @c TODO Check grace notes - timing is suspect?
2656
2657 @unnumberedsubsubsec MIDI でサポートされるもの
2658 @c @unnumberedsubsubsec Supported in MIDI
2659
2660 @cindex Pitches in MIDI (MIDI でのピッチ)
2661 @cindex MIDI, Pitches (MIDI でのピッチ)
2662 @cindex Quarter tones in MIDI (MIDI での4 分音)
2663 @cindex MIDI, quarter tones (MIDI での4 分音)
2664 @cindex Microtones in MIDI (MIDI での微分音)
2665 @cindex MIDI, microtones (MIDI での微分音)
2666 @cindex Chord names in MIDI (MIDI でのコード ネーム)
2667 @cindex MIDI, chord names (MIDI でのコード ネーム)
2668 @cindex Rhythms in MIDI (MIDI でのリズム)
2669 @cindex MIDI, Rhythms (MIDI でのリズム)
2670 @cindex Articlulate scripts (奏法スクリプト)
2671 @cindex MIDI, articulations (MIDI での奏法)
2672 @cindex articulations in MIDI (MIDI での奏法)
2673 @cindex trills in MIDI (MIDI でのトリル)
2674 @cindex turns in MIDI (MIDI でのターン)
2675 @cindex rallentando in MIDI (MIDI でのラレンタンド)
2676 @cindex accelerando in MIDI (MIDI でのアッチェレランド)
2677 @c TODO etc
2678
2679 以下の記譜要素が MIDI 出力に反映されます:
2680
2681 @itemize
2682 @item ピッチ
2683 @item 微分音 (@ref{臨時記号} を参照してください。@c
2684 演奏にはピッチ ベンドをサポートするプレイヤが必要になります。)
2685 @item コード名で入力された和音
2686 @item 音符の演奏時間として入力されたリズム -- 連符を含みます
2687 @item @q{@code{:}[@var{number}]} を使わずに入力されたトレモロ
2688 @item タイ
2689 @item 強弱記号
2690 @item 複数の音符にかかるクレッシェンド、デクレッシェンド
2691 @item テンポ記号で入力されたテンポ変化
2692 @item 歌詞
2693 @end itemize
2694
2695 @ref{奏法スクリプト} を用いることで、@c
2696 上記のリストにいくつかの要素が追加されます:
2697
2698 @itemize
2699 @item アーティキュレーション (スラー、スタッカート等)
2700 @item トリル、ターン
2701 @item ラレンタンドとアッチェレランド
2702 @end itemize
2703
2704 @unnumberedsubsubsec MIDI でサポートされないもの
2705 @c @unnumberedsubsubsec Unsupported in MIDI
2706
2707 @c TODO index as above
2708
2709 以下の記譜要素は MIDI 出力に影響を与えません:
2710
2711 @itemize
2712 @item 注記 -- 例えば swing -- として入力されたリズム
2713 @item テンポ記号を使わずに注記として入力されたテンポ変化
2714 @item スタッカートと他のアーティキュレーションや装飾
2715 @item スラーとフレージング スラー
2716 @item 単一の音符に付けられたクレッシェンド、デクレッシェンド
2717 @item @q{@code{:}[@var{number}]} を使って入力されたトレモロ
2718 @item 通奏低音
2719 @item 微分音の和音
2720 @end itemize
2721
2722
2723 @node MIDI での繰り返し
2724 @subsection MIDI での繰り返し
2725 @translationof Repeats in MIDI
2726
2727 @cindex repeats in MIDI (MIDI での繰り返し)
2728 @funindex \unfoldRepeats
2729
2730 ちょっとした追加で、@c
2731 すべてのタイプの繰り返しを MIDI 出力に反映させることができます。@c
2732 これは @code{\unfoldRepeats} 音楽関数を適用することによって@c
2733 達成することができます。@c
2734 この関数はすべての繰り返しを展開します。
2735
2736 @lilypond[quote,verbatim]
2737 \unfoldRepeats {
2738   \repeat tremolo 8 { c'32 e' }
2739   \repeat percent 2 { c''8 d'' }
2740   \repeat volta 2 { c'4 d' e' f' }
2741   \alternative {
2742     { g' a' a' g' }
2743     { f' e' d' c' }
2744   }
2745 }
2746 \bar "|."
2747 @end lilypond
2748
2749 複数のボイスを持つ score で、繰り返しを正しく MIDI 出力に展開するには、@c
2750 @emph{各ボイス} の繰り返し指示が完全に記譜されている必要があります。
2751
2752 MIDI のために @code{\unfoldRepeats} を使用する楽譜ファイルを作成する場合、@c
2753 2 つの @code{\score} ブロックが必要になります:
2754 1 つは MIDI のため (繰り返しを展開します) で、@c
2755 もう 1 つは楽譜のため
2756 (差し替え、トレモロ、パーセント記号の繰り返しを使用します) です。@c
2757 例えば、以下のようにします:
2758
2759 @example
2760 \score @{
2761   @var{..music..}
2762   \layout @{ .. @}
2763 @}
2764 \score @{
2765   \unfoldRepeats @var{..music..}
2766   \midi @{ .. @}
2767 @}
2768 @end example
2769
2770 @node MIDI での音の強弱を制御する
2771 @subsection MIDI での音の強弱を制御する
2772 @translationof Controlling MIDI dynamics
2773
2774 @c MIDI dynamics: MIDI での音の強弱?
2775 MIDI での音の強弱は @code{Dynamic_performer}
2776 -- これはデフォルトでは Voice コンテキストの中に存在します --
2777 によって実装されます。@c
2778 MIDI 全体のボリューム、強弱記号による相対ボリューム、@c
2779 楽器間の相対ボリュームを制御することができます。
2780
2781 @unnumberedsubsubsec 強弱記号
2782 @c @unnumberedsubsubsec Dynamic marks
2783
2784 強弱記号は利用可能な MIDI ボリューム レンジ内のある固定の分数に翻訳されます。@c
2785 デフォルトでの分数の範囲は、@notation{ppppp} に対する 0.25 から、@c
2786 @notation{fffff} に対する 0.95 までです。@c
2787 強弱記号とそれに対応する分数のセットを @file{../scm/midi.scm} で@c
2788 調べることができます
2789 -- @rlearning{その他の情報源} を参照してください。@c
2790 引数として強弱記号をとり、それに対する分数を返す関数を作成し、@c
2791 その関数を @code{Score.dynamicAbsoluteVolumeFunction} に@c
2792 セットすることによって、分数のセットを変更あるいは拡張することができます。
2793
2794 例えば、@notation{リンフォルツァンド} 強弱記号 -- @code{\rfz} -- を@c
2795 使う必要がある場合、@c
2796 この強弱記号はデフォルト セットの中に含まれていないため、@c
2797 MIDI ボリュームに影響を与えません。@c
2798 同様に @code{make-dynamic-script} で新しい強弱記号を定義した場合、@c
2799 その強弱記号もデフォルト セットには含まれません。@c
2800 以下の例は、そのような強弱記号に対する MIDI ボリュームを追加する方法を@c
2801 示しています。@c
2802 以下の Scheme 関数は、rfz の強弱記号があった場合は分数に 0.9 をセットし、@c
2803 そうでない場合はデフォルトの関数を呼び出します。
2804
2805 @lilypond[verbatim,quote]
2806 #(define (myDynamics dynamic)
2807     (if (equal? dynamic "rfz")
2808       0.9
2809       (default-dynamic-absolute-volume dynamic)))
2810
2811 \score {
2812   \new Staff {
2813     \set Staff.midiInstrument = #"cello"
2814     \set Score.dynamicAbsoluteVolumeFunction = #myDynamics
2815     \new Voice {
2816       \relative c'' {
2817         a4\pp b c-\rfz
2818       }
2819     }
2820   }
2821   \layout {}
2822   \midi {}
2823 }
2824 @end lilypond
2825
2826 分数テーブル全体を再定義する必要がある場合、@c
2827 上記の方法の代わりに @file{../scm/midi.scm} の中にある
2828 @notation{default-dynamic-absolute-volume} プロシージャと@c
2829 そのモデルとなる関連テーブルを使用する方が良いでしょう。@c
2830 このセクションの最後の例で、その方法を示しています。
2831
2832 @unnumberedsubsubsec MIDI 全体でのボリューム
2833 @c @unnumberedsubsubsec Overall MIDI volume
2834
2835 強弱記号に対する MIDI 全体の最小ボリュームと最大ボリュームは
2836 @code{Score} レベルでプロパティ @code{midiMinimumVolume} と
2837 @code{midiMaximumVolume} を設定することで制御できます。@c
2838 これらのプロパティは強弱記号に対してのみ効果を発揮します。@c
2839 そのため、楽譜の開始からそれらのプロパティを適用するには、@c
2840 楽譜の開始点に強弱記号を置く必要があります。@c
2841 各強弱記号に対応する分数は以下の式で算出されます:
2842
2843 @example
2844 midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fraction
2845 @end example
2846
2847 以下の例では、MIDI 全体のボリュームの範囲は 0.2 - 0.5 の範囲に制限されています。
2848
2849 @lilypond[verbatim,quote]
2850 \score {
2851   <<
2852     \new Staff {
2853       \key g \major
2854       \time 2/2
2855       \set Staff.midiInstrument = #"flute"
2856       \new Voice \relative c''' {
2857         r2 g\mp g fis~
2858         fis4 g8 fis e2~
2859         e4 d8 cis d2
2860       }
2861     }
2862     \new Staff {
2863       \key g \major
2864       \set Staff.midiInstrument = #"clarinet"
2865       \new Voice \relative c'' {
2866         b1\p a2. b8 a
2867         g2. fis8 e
2868         fis2 r
2869       }
2870     }
2871   >>
2872   \layout {}
2873   \midi {
2874     \context {
2875       \Score
2876       tempoWholesPerMinute = #(ly:make-moment 72 2)
2877       midiMinimumVolume = #0.2
2878       midiMaximumVolume = #0.5
2879     }
2880   }
2881 }
2882 @end lilypond
2883
2884
2885 @unnumberedsubsubsec 楽器の音の強さを均一化する (i)
2886 @c @unnumberedsubsubsec Equalizing different instruments (i)
2887
2888 @code{Staff} コンテキストの中で最小 MIDI ボリューム プロパティと@c
2889 最大 MIDI ボリューム プロパティが設定されている場合、@c
2890 MIDI 楽器間の相対ボリュームを制御することができます。@c
2891 これは基本的な楽器イコライザであり、@c
2892 MIDI 出力の品質を著しく高めることができます。
2893
2894 以下の例では、クラリネットのボリュームはフルートのボリュームよりも@c
2895 相対的に低く設定されています。@c
2896 これを正しく機能させるには、それぞれの楽器の最初の音符に@c
2897 強弱記号を置く必要があります。
2898
2899 @lilypond[verbatim,quote]
2900 \score {
2901   <<
2902     \new Staff {
2903       \key g \major
2904       \time 2/2
2905       \set Staff.midiInstrument = #"flute"
2906       \set Staff.midiMinimumVolume = #0.7
2907       \set Staff.midiMaximumVolume = #0.9
2908       \new Voice \relative c''' {
2909         r2 g\mp g fis~
2910         fis4 g8 fis e2~
2911         e4 d8 cis d2
2912       }
2913     }
2914     \new Staff {
2915       \key g \major
2916       \set Staff.midiInstrument = #"clarinet"
2917       \set Staff.midiMinimumVolume = #0.3
2918       \set Staff.midiMaximumVolume = #0.6
2919       \new Voice \relative c'' {
2920         b1\p a2. b8 a
2921         g2. fis8 e
2922         fis2 r
2923       }
2924     }
2925   >>
2926   \layout {}
2927   \midi {
2928     \context {
2929       \Score
2930       tempoWholesPerMinute = #(ly:make-moment 72 2)
2931     }
2932   }
2933 }
2934 @end lilypond
2935
2936 @unnumberedsubsubsec 楽器の音の強さを均一化する (ii)
2937 @c @unnumberedsubsubsec Equalizing different instruments (ii)
2938
2939 MIDI 最小/最大ボリューム プロパティが設定されていない場合、@c
2940 デフォルトでは、LilyPond はいくつかの楽器に軽度の均一化を適用します。@c
2941 適用を受ける楽器とその equalization は @file{../scm/midi.scm} の中にある@c
2942 テーブル @notation{instrument-equalizer-alist} に示されています。
2943
2944 引数として MIDI 楽器名だけを受け入れて、その楽器に適用する@c
2945 最小/最大ボリュームの分数ペアを返す Scheme プロシージャを
2946 @code{Score} コンテキストの中にある
2947 @code{instrumentEqualizer} にセットすることで、@c
2948 この基本的なデフォルト イコライザを置き換えることができます。@c
2949 この置き換えは、このセクションの始めでの
2950 @code{dynamicAbsoluteVolumeFunction}  の再設定の方法とまったく同じです。@c
2951 @file{../scm/midi.scm} の中にあるデフォルト イコライザ
2952 @notation{default-instrument-equalizer} は@c
2953 そのようなプロシージャをどのように記述するのかを示しています。
2954
2955 以下の例は、フルートとクラリネットの相対ボリュームを@c
2956 前の例と同じ値にセットしています。
2957
2958 @lilypond[verbatim,quote]
2959 #(define my-instrument-equalizer-alist '())
2960
2961 #(set! my-instrument-equalizer-alist
2962   (append
2963     '(
2964       ("flute" . (0.7 . 0.9))
2965       ("clarinet" . (0.3 . 0.6)))
2966     my-instrument-equalizer-alist))
2967
2968 #(define (my-instrument-equalizer s)
2969   (let ((entry (assoc s my-instrument-equalizer-alist)))
2970     (if entry
2971       (cdr entry))))
2972
2973 \score {
2974   <<
2975     \new Staff {
2976       \key g \major
2977       \time 2/2
2978       \set Score.instrumentEqualizer = #my-instrument-equalizer
2979       \set Staff.midiInstrument = #"flute"
2980       \new Voice \relative c''' {
2981         r2 g\mp g fis ~
2982         fis4 g8 fis e2 ~
2983         e4 d8 cis d2
2984       }
2985     }
2986     \new Staff {
2987       \key g \major
2988       \set Staff.midiInstrument = #"clarinet"
2989       \new Voice \relative c'' {
2990         b1\p a2. b8 a
2991         g2. fis8 e
2992         fis2 r
2993       }
2994     }
2995   >>
2996   \layout { }
2997   \midi {
2998     \context {
2999       \Score
3000       tempoWholesPerMinute = #(ly:make-moment 72 2)
3001     }
3002   }
3003 }
3004 @end lilypond
3005
3006 @ignore
3007 @c Delete when satisfied this is adequately covered elsewhere -td
3008
3009 @n ode Microtones in MIDI (MIDI での微分音)
3010 @s ubsection Microtones in MIDI (MIDI での微分音)
3011
3012 @cindex microtones in MIDI (MIDI での微分音)
3013
3014 半シャープと半フラットからなる微分音は MIDI ファイルにエクスポートされ、@c
3015 ピッチ ベンドをサポートする MIDI プレーヤで正しく演奏されます。@c
3016 @ref{他の言語での音符名} を参照してください。@c
3017 以下の例は 1 オクターブの中にあるすべての半シャープと半フラットの音を@c
3018 示しています。@c
3019 この例をコピーしてコンパイルすることで、@c
3020 あなたが持っている MIDI プレイやで微分音をテストすることができます。
3021
3022 @lilypond[verbatim,quote]
3023 \score {
3024   \relative c' {
3025     c cih cis cisih
3026     d dih ees eeh
3027     e eih f fih
3028     fis fisih g gih
3029     gis gisih a aih
3030     bes beh b bih
3031   }
3032   \layout {}
3033   \midi {}
3034 }
3035 @end lilypond
3036 @end ignore
3037
3038
3039 @node MIDI での打楽器
3040 @subsection MIDI での打楽器
3041 @translationof Percussion in MIDI
3042
3043 打楽器は一般的に @code{DrumStaff} コンテキストの中で記譜され、@c
3044 そのように記譜された場合、その打楽器は正しく MIDI チャンネル 10 に@c
3045 出力されます。@c
3046 しかしながら、いくつかのピッチを持つ打楽器
3047 -- ザイロフォン、マリンバ、ビブラフォン、ティンパニなど --
3048 は @qq{通常の} 楽器のように扱われ、正しい MIDI 出力を得るには、@c
3049 それらの楽器のための音楽を@c
3050 通常の @code{Staff} コンテキストに入力する必要があります
3051  -- @code{DrumStaff} には入力しません。
3052
3053
3054 いくつかのピッチを持たない打楽器
3055 -- メロディック トム、太鼓、シンセドラムなど --
3056 のサウンドは一般の MIDI 標準に含まれ、MIDI チャネル@tie{}10 経由では@c
3057 使用できません。@c
3058 そのため、そのような楽器の記譜も適切なピッチを使って@c
3059 通常の @code{Staff} コンテキストに入力すべきです。
3060
3061 多くの打楽器 -- カスタネットなど -- は一般の MIDI 標準には含まれません。@c
3062 そのような楽器のための記述を行っている場合に MIDI 出力を作り出すための@c
3063 最も容易な -- けれども不十分な -- 方法は、@c
3064 標準セットから最も近いサウンドを代わりに用いることです。
3065
3066 @c TODO Expand with examples, and any other issues
3067
3068 @knownissues
3069
3070 一般の MIDI 標準はリム ショットを含まないため、@c
3071 代わりにサイドスティックを用います。
3072
3073 @node 奏法スクリプト
3074 @subsection 奏法スクリプト
3075 @translationof The Articulate script
3076
3077 奏法スクリプトを用いることにより、よりリアルな MIDI 出力を得ることができます。@c
3078 奏法スクリプトは、音符を適切な時間比率の音符とスキップで置き換えることにより、@c
3079 アーティキュレーション (スラー、スタッカート等) を考慮に入れようとします。@c
3080 さらに、トリルやターンを展開しようとし、@c
3081 さらにラレンタンドとアッチェレランドを考慮に入れようとします。
3082
3083 奏法スクリプトを使うには、@c
3084 入力ファイルの先頭で以下をインクルードする必要があります。
3085
3086 @example
3087 \include "articulate.ly"
3088 @end example
3089
3090 さらに、@code{\score} セクションで以下のようにします。
3091
3092 @example
3093 \unfoldRepeats \articulate <<
3094         all the rest of the score...
3095 >>
3096 @end example
3097
3098 この方法で入力ファイルを変更すると、@c
3099 出力される楽譜の見た目は著しく変わってしまいますが、@c
3100 標準の @code{\midi} ブロックはより良い MIDI ファイルを作り出します。
3101
3102 奏法スクリプトを機能させるための必須事項ではありませんが、@c
3103 上記の例のように @code{\unfoldRepeats} コマンドを挿入することにより、@c
3104 @notation{トリル} などの短縮記譜の演奏が可能になります。
3105
3106 @knownissues
3107
3108 @c 未訳
3109 Articulate shortens chords といくつかの音楽 (特にオルガン音楽) の演奏は@c
3110 うまくいかないことがあります。
3111
3112
3113 @node 音楽情報を抽出する
3114 @section 音楽情報を抽出する
3115 @translationof Extracting musical information
3116
3117 グラフィカルな出力と MIDI を作り出すことに加えて、@c
3118 LilyPond は音楽情報をテキストとして表示することができます。
3119
3120 @menu
3121 * LilyPond 記譜法を表示する::
3122 * Scheme 音楽表記を表示する::
3123 * 音楽イベントをファイルに保存する::
3124 @end menu
3125
3126 @node LilyPond 記譜法を表示する
3127 @subsection LilyPond 記譜法を表示する
3128 @translationof Displaying LilyPond notation
3129
3130 @funindex \displayLilyMusic
3131
3132 LilyPond 記譜法で書かれた音楽表記を@c
3133 音楽関数 @code{\displayLilyMusic} で表示することが可能です。@c
3134 出力を見るには、通常、コマンド ラインで LilyPond を実行します。@c
3135 例えば、
3136
3137 @example
3138 @{
3139   \displayLilyMusic \transpose c a, @{ c4 e g a bes @}
3140 @}
3141 @end example
3142
3143 は、以下を表示します:
3144
3145 @example
3146 @{ a,4 cis e fis g @}
3147 @end example
3148
3149 デフォルトでは、LilyPond は上記のメッセージを@c
3150 他のすべてのメッセージと一緒にコンソールに表示します。@c
3151 上記のメッセージを分離して @code{\display@{STUFF@}} の結果を保存するには、@c
3152 出力をファイルにリダイレクトします。
3153
3154 @example
3155 lilypond file.ly >display.txt
3156 @end example
3157
3158 @funindex \void
3159
3160 LilyPond は音楽表記を表示するだけでなく、それを解釈します
3161 (なぜなら、@code{\displayLilyMusic} は追加で音楽表記を表示するために@c
3162 返すだけだからです)。@c
3163 既存の音楽に @code{\displayLilyMusic} を挿入するだけで@c
3164 その音楽の情報を得るられるので便利です。@c
3165 本当に LilyPond に音楽を解釈させたくないのであれば、@c
3166 @code{\void} を使ってその音楽を無視させます:
3167
3168 @example
3169 @{
3170   \void \displayLilyMusic \transpose c a, @{ c4 e g a bes @}
3171 @}
3172 @end example
3173
3174
3175 @node Scheme 音楽表記を表示する
3176 @subsection Scheme 音楽表記を表示する
3177 @translationof Displaying scheme music expressions
3178
3179 @rextend{Displaying music expressions} を参照してください。
3180
3181
3182 @node 音楽イベントをファイルに保存する
3183 @subsection 音楽イベントをファイルに保存する
3184 @translationof Saving music events to a file
3185
3186 以下のファイルをインクルードすることにより、@c
3187 音楽イベントをファイルに保存することができます。
3188
3189 @example
3190 \include "event-listener.ly"
3191 @end example
3192
3193 これは譜毎に @file{FILENAME-STAFFNAME.notes} あるいは
3194 @file{FILENAME-unnamed-staff.notes} というファイルを作成します。@c
3195 複数の名前の無い譜がある場合、
3196 すべての譜のイベントが同じファイルに出力されるということに注意してください。@c
3197 出力は以下のようになります:
3198
3199 @example
3200 0.000   note     57       4   p-c 2 12
3201 0.000   dynamic  f
3202 0.250   note     62       4   p-c 7 12
3203 0.500   note     66       8   p-c 9 12
3204 0.625   note     69       8   p-c 14 12
3205 0.750   rest     4
3206 0.750   breathe
3207 @end example
3208
3209 出力はタブ区切り行で、各行には 2 つの固定フィールドがあり、@c
3210 その後にオプション パラメータが続きます。
3211
3212 @example
3213 @var{time}  @var{type}  @var{...params...}
3214 @end example
3215
3216 この情報は、@c
3217 簡単に Python スクリプト等の他のプログラムに読み込ませることができ、@c
3218 LilyPond で音楽分析や録音再生実験を行おうとする研究者にとってとても有用です。
3219
3220
3221 @knownissues
3222
3223 lilypond 音楽イベントすべてが @file{event-listener.ly} で@c
3224 サポートされるわけではありません。@c
3225 @file{event-listener.ly} は、良く作られた @qq{概念実証} を意図しています。
3226
3227 読み取りたい音楽イベントがサポートされていないのであれば、@c
3228 あなたが作業している lilypond ディレクトリに @file{event-listener.ly} を@c
3229 コピーして、編集することで、望みの情報を出力させることができます。