]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/ja/notation/input.itely
Merge remote branch 'origin' into release/unstable
[lilypond.git] / Documentation / ja / notation / input.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
2 @ignore
3     Translation of GIT committish: b3e632849e6cc825c77eca4287c619d23e7f5057
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.14.0"
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   @}
446         \layout @{ @}
447         \header @{ @}
448 @}
449 @end example
450
451 この振る舞いは、@c
452 変数 @code{toplevel-score-handler} を最上位の階層で設定することによって、@c
453 変更することができます。@c
454 デフォルトのハンドラは@c
455 初期化ファイル @file{../scm/lily.scm} で定義されています。
456
457 @item
458 マークアップ テキスト。@c
459 例として以下の歌詞を挙げます:
460 @example
461 \markup @{
462    2.  The first line verse two.
463 @}
464 @end example
465
466 マークアップ テキストは、それが出現した場所で、@c
467 score あるいは音楽表記の上、間、あるいは下に描かれます。
468
469 @cindex variables (変数)
470
471 @item
472 以下のような変数:
473 @example
474 foo = @{ c4 d e d @}
475 @end example
476
477 これは後で使用することができます。@c
478 使用するには、入力ファイルの中で @code{\foo} と入力します。@c
479 変数の名前はアルファベットだけで構成すべきです。@c
480 数字、アンダスコアあるいはダッシュを使うことができません。
481
482 @end itemize
483
484 以下の例は最上位の階層で入力される可能性がある 3 つのものを示しています:
485
486 @example
487 \layout @{
488   % Don't justify the output
489   ragged-right = ##t
490 @}
491
492 \header @{
493    title = "Do-re-mi"
494 @}
495
496 @{ c'4 d' e2 @}
497 @end example
498
499
500 ファイルの任意の場所で、以下の編集指示のいずれかが入力される可能性があります:
501
502 @itemize
503 @item @code{\version}
504 @item @code{\include}
505 @item @code{\sourcefilename}
506 @item @code{\sourcefileline}
507 @item
508 @code{%} 記号で始まる単一行コメント。
509
510 @item
511 @code{%@{ .. %@}} で囲まれる複数行コメント。
512
513 @end itemize
514
515 @cindex whitespace
516
517 通常、入力の要素間にある空白は無視され、@c
518 可読性を良くするために自由に削除あるいは追加することができます。@c
519 しかしながら、以下の状況ではエラーを避けるために空白を挿入する必要があります:
520
521 @itemize
522 @item 波括弧の前後。
523 @item コマンドあるいは変数 -- すなわち、@code{\} 記号で始まる要素 -- の後。
524 @item Scheme 表記として解釈される要素
525 -- すなわち、@code{#} 記号で始まる要素 -- の後。
526 @item Scheme 表記要素を区切る空白。
527 @item @code{lyricmode} モードの @code{\override} と @code{\set} コマンドの@c
528 中にある単語を区切る空白。@c
529 特に、@code{\override Score . LyricText #'font-size = #5} のように、@c
530 コマンドの中のドットとイコール記号の前後、コマンド全体の前後に@c
531 空白を挿入することを忘れないで下さい。
532
533 @end itemize
534
535 @seealso
536 学習マニュアル:
537 @rlearning{LilyPond 入力ファイルの仕組み}
538
539
540 @node タイトルとヘッダ
541 @section タイトルとヘッダ
542 @translationof Titles and headers
543
544 ほとんどすべての楽譜にはタイトルと作曲者名が含まれます。@c
545 楽譜の中にはさらに多くの情報を含むものもあります。
546
547 @menu
548 * タイトル、ヘッダ、フッタを作成する::
549 * カスタム ヘッダ、フッタ、タイトル::
550 * ページ番号の参照::
551 * 目次::
552 @end menu
553
554
555 @node タイトル、ヘッダ、フッタを作成する
556 @subsection タイトル、ヘッダ、フッタを作成する
557 @translationof Creating titles, headers, and footers
558
559 @menu
560 * タイトル ブロックの説明::
561 * book と score のタイトル ブロックのデフォルト レイアウト::
562 * ヘッダとフッタのデフォルト レウアウト::
563 @end menu
564
565 @node タイトル ブロックの説明
566 @unnumberedsubsubsec タイトル ブロックの説明
567 @translationof Title blocks explained
568
569 @c TODO: figure out how \bookpart titles work
570
571 タイトル ブロックには 2 つのタイプがあります:
572 book の最初の @code{\score} の上に表示されるメインのタイトル ブロックと、@c
573 各 @code{\score} ブロック内に表示される個々のタイトル ブロックです。@c
574 両タイプのテキスト フィールドは @code{\header} ブロックを用いて挿入します。
575
576 book が単一の score しか持たない場合、@c
577 @code{\header} ブロックを配置する場所は @code{\score} ブロックの内側でも@c
578 外側でも構いません。
579
580 @warning{@bs{}@code{score} ブロックの内側に @bs{}@code{header} ブロックを@c
581 追加する場合、@c
582 @bs{}@code{header} ブロックの前に音楽表記を配置する必要があります。}
583
584 @lilypond[papersize=a5,quote,verbatim,noragged-right]
585 \header {
586   title = "SUITE I."
587   composer = "J. S. Bach."
588 }
589
590 \score {
591   \new Staff \relative g, {
592     \clef bass
593     \key g \major
594     \repeat unfold 2 { g16( d' b') a b d, b' d, } |
595     \repeat unfold 2 { g,16( e' c') b c e, c' e, } |
596   }
597   \header {
598     piece = "Prélude."
599   }
600 }
601
602 \score {
603   \new Staff \relative b {
604     \clef bass
605     \key g \major
606     \partial 16 b16 |
607     <g, d' b'~>4 b'16 a( g fis) g( d e fis) g( a b c) |
608     d16( b g fis) g( e d c) b(c d e) fis( g a b) |
609   }
610   \header {
611     piece = "Allemande."
612   }
613 }
614 @end lilypond
615
616 book のメイン タイトル ブロックのテキスト フィールドはすべての @code{\score}
617 ブロックに表示させることができ、手動で表示を抑制することもできます:
618
619 @c KEEP LY
620 @lilypond[papersize=a5,quote,verbatim,noragged-right]
621 \book {
622   \paper {
623     print-all-headers = ##t
624   }
625   \header {
626     title = "DAS WOHLTEMPERIRTE CLAVIER"
627     subtitle = "TEIL I"
628     % この book では tagline を表示しません
629     tagline = ##f
630   }
631   \markup { \vspace #1 }
632   \score {
633     \new PianoStaff <<
634       \new Staff { s1 }
635       \new Staff { \clef "bass" s1 }
636     >>
637     \header {
638       title = "PRAELUDIUM I"
639       opus = "BWV 846"
640       % この score では subtitle を表示しません
641       subtitle = ##f
642     }
643   }
644   \score {
645     \new PianoStaff <<
646       \new Staff { s1 }
647       \new Staff { \clef "bass" s1 }
648     >>
649     \header {
650       title = "FUGA I"
651       subsubtitle = "A 4 VOCI"
652       opus = "BWV 846"
653       % この score では subtitle を表示しません
654       subtitle = ##f
655     }
656   }
657 }
658 @end lilypond
659
660 @seealso
661 記譜法リファレンス:
662 @ref{ファイル構造},
663 @ref{タイトル ブロックのカスタム レイアウト}
664
665
666 @node book と score のタイトル ブロックのデフォルト レイアウト
667 @unnumberedsubsubsec book と score のタイトル ブロックのデフォルト レイアウト
668 @translationof Default layout of book and score title blocks
669
670 タイトル ブロックのレイアウトとフォーマットは 2 つの @code{\paper}
671 変数によって制御されます。@c
672 メインの @code{\header} タイトル ブロックのための @code{bookTitleMarkup} と、@c
673 @code{\score} 内部の個々の @code{\header} ブロックのための
674 @code{scoreTitleMarkup} です。
675
676 @c KEEP LY
677 @lilypond[papersize=a6,quote,verbatim,noragged-right]
678 \header {
679   % 以下のフィールドは中央揃えされます。
680   dedication = "Dedication"
681   title = "Title"
682   subtitle = "Subtitle"
683   subsubtitle = "Subsubtitle"
684   instrument = "Instrument"
685
686   % 以下のフィールドは左端に左揃えされます。
687   poet = "Poet"
688   meter = "Meter"
689
690   % 以下のフィールドは右端に右揃えされます。
691   composer = "Composer"
692   arranger = "Arranger"
693 }
694
695 \score {
696   { s1 }
697   \header {
698     % 以下のフィールドは同一行の両端に配置されます。
699     piece = "Piece"
700     opus = "Opus"
701   }
702 }
703 @end lilypond
704
705 @c Is the bit about \null markups true? -mp
706
707 @code{\header} ブロックでセットされなかったテキスト フィールドには@c
708 @code{\null} マークアップがセットされ、スペースを無駄にしません。
709
710 デフォルト設定では、@code{scoreTitleMarkup} は
711 @code{piece} テキスト フィールドと @code{opus} テキスト フィールドを@c
712 同一行の両端に配置します。
713
714 @cindex breakbefore
715
716 最上位の @code{\header} ブロックのタイトルを最初のページに配置して、@c
717 @code{\score} ブロックで定義される楽譜を次のページから始めるするには、@c
718 @code{\score} ブロックの中にある @code{\header} ブロック内で@c
719 @code{breakbefore} 変数を使用します。
720
721 @lilypond[papersize=a8landscape,verbatim,noragged-right]
722 \book {
723   \header {
724     title = "This is my Title"
725     subtitle = "This is my Subtitle"
726     copyright = "This is the bottom of the first page"
727   }
728   \score {
729     \repeat unfold 4 { e'' e'' e'' e'' }
730     \header {
731       piece = "This is the Music"
732       breakbefore = ##t
733     }
734   }
735 }
736 @end lilypond
737
738 @seealso
739 学習マニュアル:
740 @rlearning{LilyPond 入力ファイルの仕組み}
741
742 記譜法リファレンス:
743 @ref{ファイル構造}
744
745 インストールされているファイル:
746 @file{ly/titling-init.ly}
747
748
749 @node ヘッダとフッタのデフォルト レウアウト
750 @unnumberedsubsubsec ヘッダとフッタのデフォルト レウアウト
751 @translationof Default layout of headers and footers
752
753 @emph{ヘッダ} と @emph{フッタ} は、book のテキストとは別の、@c
754 ページの最初と最後に表示されるテキスト行です。@c
755 ヘッダとフッタは以下の @code{\paper} 変数によって制御されます:
756
757 @itemize
758 @item @code{oddHeaderMarkup}
759 @item @code{evenHeaderMarkup}
760 @item @code{oddFooterMarkup}
761 @item @code{evenFooterMarkup}
762 @end itemize
763
764 これらのマークアップ変数は、最上位の @code{\header} ブロック
765 (これは book のすべての score に適用されます) から、@c
766 テキスト フィールドのみにアクセスすることができ、@c
767 @file{ly/titling-init.ly} で定義されています。@c
768 デフォルトでは以下のようになっています:
769
770 @itemize
771
772 @item
773 ページ番号は、2 ページ目から、ページ最上段の左端 (偶数ページの場合)
774 または右端 (奇数ページの場合) に自動的に配置されます。
775
776 @item
777 @code{instrument} テキスト フィールドは、2 ページ目から、@c
778 各ページの中央に配置されます。
779
780 @item
781 @code{copyright} テキストは最初のページの最下段中央に配置されます。
782
783 @item
784 @code{tagline} は最後のページの最下段中央に配置されます。@c
785 1 ページしかない場合は @code{copyright} の下に配置されます。
786
787 @end itemize
788
789 @lilypond[papersize=a8landscape]
790 \book {
791   \score {
792     \relative c' {
793       c4 d e f
794     }
795   }
796 }
797 @end lilypond
798
799 最上位の @code{\header} ブロックの中に @code{tagline} を追加することで、@c
800 デフォルトのタグラインを変更することができます。
801
802 @lilypond[papersize=a8landscape,verbatim]
803 \book {
804   \header {
805     tagline = "... music notation for Everyone"
806   }
807   \score {
808     \relative c' {
809       c4 d e f
810     }
811   }
812 }
813 @end lilypond
814
815 タグラインを削除するには、@code{tagline}  に @code{##f} をセットします。
816
817
818 @node カスタム ヘッダ、フッタ、タイトル
819 @subsection カスタム ヘッダ、フッタ、タイトル
820 @translationof Custom headers footers and titles
821
822 @c TODO: somewhere put a link to header spacing info
823 @c       (you'll have to explain it more in NR 4).
824
825 @menu
826 * タイトル ブロックのカスタム テキスト フォーマット::
827 * タイトル ブロックのカスタム レイアウト::
828 * ヘッダとフッタのカスタム レイアウト::
829 @end menu
830
831 @node タイトル ブロックのカスタム テキスト フォーマット
832 @unnumberedsubsubsec タイトル ブロックのカスタム テキスト フォーマット
833 @translationof Custom text formatting for title blocks
834
835 標準の @code{\markup} コマンドを使って @code{\header} ブロックの中にある@c
836 ヘッダ、フッタ、それにタイトル テキストをカスタマイズすることができます。
837
838 @lilypond[quote,verbatim,noragged-right]
839 \score {
840   { s1 }
841   \header {
842     piece = \markup { \fontsize #4 \bold "PRAELUDIUM I" }
843     subtitle = \markup { \italic "(Excerpt)" }
844   }
845 }
846 @end lilypond
847
848 @seealso
849 記譜法リファレンス:
850 @ref{テキストをフォーマットする}
851
852
853 @node タイトル ブロックのカスタム レイアウト
854 @unnumberedsubsubsec タイトル ブロックのカスタム レイアウト
855 @translationof Custom layout for title blocks
856
857 @code{\header} ブロックの中に @code{\markup} コマンドを配置することにより、@c
858 シンプルなテキストをフォーマットすることができます。@c
859 しかしながら、タイトルの配置を精密に制御することはできません。@c
860 テキスト フィールドの配置をカスタマイズするために、@c
861 以下の @code{\paper} 変数のどちらか、あるいは両方を使用します:
862
863 @itemize
864 @item @code{bookTitleMarkup}
865 @item @code{scoreTitleMarkup}
866 @end itemize
867
868 これらのマークアップ変数は
869 @ref{book と score のタイトル ブロックのデフォルト レイアウト}
870 で説明しています。
871
872 @file{ly/titling-init.ly} で定義されている @code{scoreTitleMarkup}
873 のデフォルト設定は以下のとおりです:
874
875 @example
876 scoreTitleMarkup = \markup @{ \column @{
877   \on-the-fly #print-all-headers @{ \bookTitleMarkup \hspace #1 @}
878   \fill-line @{
879     \fromproperty #'header:piece
880     \fromproperty #'header:opus
881   @}
882 @}
883 @}
884 @end example
885
886 これは、@code{piece} テキスト フィールドと @code{opus} テキスト フィールドを@c
887 同一行の両端に配置します:
888
889 @lilypond[quote,verbatim,noragged-right]
890 \score {
891   { s1 }
892   \header {
893     piece = "PRAELUDIUM I"
894     opus = "BWV 846"
895   }
896 }
897 @end lilypond
898
899 以下の例では、@code{scoreTitleMarkup} を再定義することにより、@c
900 @code{piece} テキスト フィールドを中央に配置して、フォントを大きく、@c
901 太字にしています。
902
903 @lilypond[papersize=a5,quote,verbatim,noragged-right]
904 \book {
905   \paper {
906     indent = 0\mm
907     scoreTitleMarkup = \markup {
908       \fill-line {
909         \null
910         \fontsize #4 \bold \fromproperty #'header:piece
911         \fromproperty #'header:opus
912       }
913     }
914   }
915   \header { tagline = ##f }
916   \score {
917     { s1 }
918     \header {
919       piece = "PRAELUDIUM I"
920       opus = "BWV 846"
921     }
922   }
923 }
924 @end lilypond
925
926 @code{print-all-headers} を @code{\paper} ブロックの中に配置することにより、@c
927 メイン タイトル ブロックのテキスト フィールドを個々の score タイトル ブロック@c
928 に表示させることができます。@c
929 この方法の欠点は、個々の @code{\score} ブロックで、@c
930 最上位の @code{\header} ブロックだけに表示させるテキスト フィールドを@c
931 手動で抑制する必要があることです。@c
932 @ref{タイトル ブロックの説明} を参照してください。
933
934 この欠点を回避するには、個々の @code{\score} ブロックに表示させたい@c
935 テキスト フィールドを @code{scoreTitleMarkup} 定義に追加します。@c
936 以下の例では、@code{composer} テキスト フィールド
937 (通常、これは @code{bookTitleMarkup} に関連付けされています)
938 を @code{scoreTitleMarkup} に追加することにより、@c
939 各 score は異なる作曲者を表示しています:
940
941 @lilypond[papersize=a5,quote,verbatim,noragged-right]
942 \book {
943   \paper {
944     indent = 0\mm
945     scoreTitleMarkup = \markup {
946       \fill-line {
947         \null
948         \fontsize #4 \bold \fromproperty #'header:piece
949         \fromproperty #'header:composer
950       }
951     }
952   }
953   \header { tagline = ##f }
954   \score {
955     { s1 }
956     \header {
957       piece = "MENUET"
958       composer = "Christian Petzold"
959     }
960   }
961   \score {
962     { s1 }
963     \header {
964       piece = "RONDEAU"
965       composer = "François Couperin"
966     }
967   }
968 }
969 @end lilypond
970
971 あなた自身のカスタム テキスト フィールドを作成して、@c
972 それをマークアップ定義で参照することもできます。
973
974 @lilypond[papersize=a5,quote,verbatim,noragged-right]
975 \book {
976   \paper {
977     indent = 0\mm
978     scoreTitleMarkup = \markup {
979       \fill-line {
980         \null
981         \override #`(direction . ,UP) {
982           \dir-column {
983             \center-align \fontsize #-1 \bold
984               \fromproperty #'header:mycustomtext %% User-defined field
985             \center-align \fontsize #4 \bold
986               \fromproperty #'header:piece
987           }
988         }
989         \fromproperty #'header:opus
990       }
991     }
992   }
993   \header { tagline = ##f }
994   \score {
995     { s1 }
996     \header {
997       piece = "FUGA I"
998       mycustomtext = "A 4 VOCI" %% User-defined field
999       opus = "BWV 846"
1000     }
1001   }
1002 }
1003 @end lilypond
1004
1005 @seealso
1006 記譜法リファレンス:
1007 @ref{タイトル ブロックの説明}
1008
1009
1010 @node ヘッダとフッタのカスタム レイアウト
1011 @unnumberedsubsubsec ヘッダとフッタのカスタム レイアウト
1012 @translationof Custom layout for headers and footers
1013
1014 @c can make-header and make-footer be removed from
1015 @c paper-defaults-init.ly? -mp
1016
1017 @code{\header} ブロックの中に @code{\markup} コマンドを配置することにより、@c
1018 シンプルなテキストをフォーマットすることができます。@c
1019 しかしながら、ヘッダとフッタの配置を精密に制御することはできません。@c
1020 テキスト フィールドの配置をカスタマイズするために、@c
1021 以下の @code{\paper} 変数のいずれか、あるいはいくつかを使用します:
1022
1023 @itemize
1024 @item @code{oddHeaderMarkup}
1025 @item @code{evenHeaderMarkup}
1026 @item @code{oddFooterMarkup}
1027 @item @code{evenFooterMarkup}
1028 @end itemize
1029
1030 以下の例では、ページ番号を各ページの最下段中央に配置しています。@c
1031 まず、@code{oddHeaderMarkup} と @code{evenHeaderMarkup} に
1032 @emph{null} を定義することにより、デフォルト設定を削除します。@c
1033 次に、@code{oddFooterMarkup} に中央に配置されたページ番号を再定義します。@c
1034 最後に、@code{evenFooterMarkup} に @code{oddFooterMarkup} を@c
1035 定義することにより、同じレイアウトにします:
1036
1037 @lilypond[papersize=a8,quote,verbatim,noragged-right]
1038 \book {
1039   \paper {
1040     print-page-number = ##t
1041     print-first-page-number = ##t
1042     oddHeaderMarkup = \markup \null
1043     evenHeaderMarkup = \markup \null
1044     oddFooterMarkup = \markup {
1045       \fill-line {
1046         \on-the-fly #print-page-number-check-first
1047         \fromproperty #'page:page-number-string
1048       }
1049     }
1050     evenFooterMarkup = \oddFooterMarkup
1051   }
1052   \score {
1053     \new Staff { s1 \break s1 \break s1 }
1054   }
1055 }
1056 @end lilypond
1057
1058 @seealso
1059 記譜法リファレンス:
1060 @ref{タイトル ブロックの説明},
1061 @ref{book と score のタイトル ブロックのデフォルト レイアウト}
1062
1063
1064 @ignore
1065 @node カスタム タイトル
1066 @subsection カスタム タイトル
1067 @translationof Custom titles
1068
1069 さらに高度なオプションとして、@c
1070 @code{\paper} ブロックの中にある以下の変数の定義を変更することができます。@c
1071 初期化ファイル @file{../ly/titling-init.ly} が@c
1072 デフォルトのレイアウトの設定リストです。
1073
1074 @table @code
1075 @funindex bookTitleMarkup
1076 @item bookTitleMarkup
1077   これは出力ドキュメントの先頭に付け加えられるタイトルです。@c
1078 通常、ここには作品の作曲者名とタイトルが含まれます。
1079
1080 @funindex scoreTitleMarkup
1081 @item scoreTitleMarkup
1082   これは @code{\score} ブロックの上に配置されるタイトルです。@c
1083 通常、ここには楽章の名前 (@code{piece} フィールド) が含まれます。
1084
1085 @funindex oddHeaderMarkup
1086 @item oddHeaderMarkup
1087   これは奇数番号ページのヘッダです。
1088
1089 @funindex evenHeaderMarkup
1090 @item evenHeaderMarkup
1091   これは偶数番号ページのヘッダです。@c
1092 これが指定されていない場合は、奇数番号ページのヘッダが代わりに使用されます。
1093
1094   デフォルトのヘッダ定義は、ページ番号は端に配置し、@c
1095 楽器名は中央に配置するようになっています。
1096
1097 @funindex oddFooterMarkup
1098 @item oddFooterMarkup
1099   これは奇数番号ページのフッタです。
1100
1101 @funindex evenFooterMarkup
1102 @item evenFooterMarkup
1103   これは偶数番号ページのフッタです。@c
1104 これが指定されていない場合は、偶数番号ページのフッタが代わりに使用されます。
1105
1106   デフォルトでは、最初のページのフッタには著作権についての注意書きが含まれ、@c
1107 最後のページのフッタにはタグ行が含まれます。
1108 @end table
1109
1110
1111 @cindex \paper
1112 @cindex header (ヘッダ)
1113 @cindex footer (フッタ)
1114 @cindex page layout (ページ レイアウト)
1115 @cindex titles (タイトル)
1116
1117 以下の定義では、タイトルはページの左側に配置され、@c
1118 作曲者名は同じ行の右側に配置されます。
1119
1120 @verbatim
1121 \paper {
1122   bookTitleMarkup = \markup {
1123    \fill-line {
1124      \fromproperty #'header:title
1125      \fromproperty #'header:composer
1126    }
1127   }
1128 }
1129 @end verbatim
1130 @end ignore
1131
1132 @node ページ番号の参照
1133 @subsection ページ番号の参照
1134 @translationof Reference to page numbers
1135
1136 @code{\label} コマンドを用いて、楽譜のある特定の場所
1137 -- 楽譜の最上位あるいは内部 --
1138 に印をつけることができます。@c
1139 このラベルをマークアップの中で参照することできます。@c
1140 ラベルを付けられた場所のページ番号を取得するには、@c
1141 @code{\page-ref} マークアップ コマンドを使います。
1142
1143 @lilypond[verbatim]
1144 \header { tagline = ##f }
1145 \book {
1146   \label #'firstScore
1147   \score {
1148     {
1149       c'1
1150       \pageBreak \mark A \label #'markA
1151       c'1
1152     }
1153   }
1154   \markup { The first score begins on page \page-ref #'firstScore "0" "?" }
1155   \markup { Mark A is on page \page-ref #'markA "0" "?" }
1156 }
1157 @end lilypond
1158
1159 @code{\page-ref} マークアップ コマンドは 3 つの引数をとります:
1160 @enumerate
1161 @item ラベル。@c
1162 これは Scheme シンボルです -- 例: @code{#'firstScore}。
1163 @item マークアップ。@c
1164 これはマークアップの大きさを推定するためのゲージです。
1165 @item マークアップ。@c
1166 これは、ラベルが不明な場合にページ番号として用いられます。
1167 @end enumerate
1168
1169 ゲージが必要な理由は、@c
1170 マークアップが解釈されているときに改ページはまだ行われておらず、@c
1171 ページ番号はまだわからないからです。@c
1172 この問題を回避するために、@c
1173 実際のマークアップ解釈はもっと後に延期されます。@c
1174 しかしながら、マークアップの大きさは事前に判明している必要があるため、@c
1175 ゲージを使ってマークアップの大きさを決定します。@c
1176 book のページ数が 10 から 99 までの範囲であるのなら、ゲージを "00"
1177 -- つまり、2 桁の数 -- にします。
1178
1179
1180 @predefined
1181 @funindex \label
1182 @code{\label},
1183 @funindex \page-ref
1184 @code{\page-ref}
1185 @endpredefined
1186
1187
1188 @node 目次
1189 @subsection 目次
1190 @translationof Table of contents
1191
1192 目次は @code{\markuplines \table-of-contents} コマンドを用いて挿入します。@c
1193 目次に表示すべき要素は @code{\tocItem} コマンドで挿入されます
1194 -- このコマンドは最上位あるいは音楽表記の内部で使用します。
1195
1196 @verbatim
1197 \markuplines \table-of-contents
1198 \pageBreak
1199
1200 \tocItem \markup "First score"
1201 \score {
1202   {
1203     c'4  % ...
1204     \tocItem \markup "Some particular point in the first score"
1205     d'4  % ...
1206   }
1207 }
1208
1209 \tocItem \markup "Second score"
1210 \score {
1211   {
1212     e'4 % ...
1213   }
1214 }
1215 @end verbatim
1216
1217 目次を構成するために使用するマークアップは
1218 @code{\paper} ブロックの中で定義します。@c
1219 デフォルトのマークアップは、@c
1220 目次のタイトルを構成する @code{tocTitleMarkup} と、@c
1221 目次の要素 -- 要素のタイトルとページ番号 -- を構成する
1222 @code{tocItemMarkup} です。@c
1223 これらの変数はユーザによって変更することができます:
1224
1225 @c KEEP LY
1226 @verbatim
1227 \paper {
1228   %% 目次タイトルをフランス語に翻訳します:
1229   tocTitleMarkup = \markup \huge \column {
1230     \fill-line { \null "Table des matières" \null }
1231     \hspace #1
1232   }
1233   %% より大きなフォント サイズを使用します
1234   tocItemMarkup = \markup \large \fill-line {
1235     \fromproperty #'toc:text \fromproperty #'toc:page
1236   }
1237 }
1238 @end verbatim
1239
1240 @code{tocItemMarkup} 定義の中で目次要素のテキストとページ番号を@c
1241 参照する方法に注目してください。
1242
1243 より手の込んだ目次を構築するために新しいコマンドとマークアップを@c
1244 定義することもできます:
1245 @itemize
1246 @item まず、@code{\paper} ブロックの中で新しいマークアップ変数を定義します
1247 @item それから、このマークアップ変数を用いて、@c
1248 目次要素を付け加えるための音楽関数を定義します。
1249 @end itemize
1250
1251 以下の例では、@c
1252 オペラの目次の中で幕の名前を挿入するために新しい様式を定義しています:
1253
1254 @verbatim
1255 \paper {
1256   tocActMarkup = \markup \large \column {
1257     \hspace #1
1258     \fill-line { \null \italic \fromproperty #'toc:text \null }
1259     \hspace #1
1260   }
1261 }
1262
1263 tocAct =
1264 #(define-music-function (parser location text) (markup?)
1265    (add-toc-item! 'tocActMarkup text))
1266 @end verbatim
1267
1268 @lilypond[line-width=11.0\cm]
1269 \header { tagline = ##f }
1270 \paper {
1271   tocActMarkup = \markup \large \column {
1272     \hspace #1
1273     \fill-line { \null \italic \fromproperty #'toc:text \null }
1274     \hspace #1
1275   }
1276 }
1277
1278 tocAct =
1279 #(define-music-function (parser location text) (markup?)
1280    (add-toc-item! 'tocActMarkup text))
1281
1282 \book {
1283   \markuplines \table-of-contents
1284   \tocAct \markup { Atto Primo }
1285   \tocItem \markup { Coro. Viva il nostro Alcide }
1286   \tocItem \markup { Cesare. Presti omai l'Egizzia terra }
1287   \tocAct \markup { Atto Secondo }
1288   \tocItem \markup { Sinfonia }
1289   \tocItem \markup { Cleopatra. V'adoro, pupille, saette d'Amore }
1290   \markup \null
1291 }
1292 @end lilypond
1293
1294 要素とページ番号の間をドットで埋めることができます:
1295
1296 @lilypond[verbatim,quote]
1297 \header { tagline = ##f }
1298 \paper {
1299   tocItemMarkup = \tocItemWithDotsMarkup
1300 }
1301
1302 \book {
1303   \markuplines \table-of-contents
1304   \tocItem \markup { Allegro }
1305   \tocItem \markup { Largo }
1306   \markup \null
1307 }
1308 @end lilypond
1309
1310
1311 @seealso
1312 初期化ファイル: @file{../ly/toc-init.ly}
1313
1314
1315 @predefined
1316 @funindex \table-of-contents
1317 @code{\table-of-contents},
1318 @funindex \tocItem
1319 @code{\tocItem}.
1320 @endpredefined
1321
1322
1323 @node 入力ファイルに取り組む
1324 @section 入力ファイルに取り組む
1325 @translationof Working with input files
1326
1327 @menu
1328 * LilyPond ファイルをインクルードする::
1329 * 1 つのソースから異なる版を生成する::
1330 * テキスト エンコーディング::
1331 @c * LilyPond 記譜法を表示する::
1332 @end menu
1333
1334
1335 @node LilyPond ファイルをインクルードする
1336 @subsection LilyPond ファイルをインクルードする
1337 @translationof Including LilyPond files
1338
1339 @funindex \include
1340 @cindex including files (ファイルをインクルードする)
1341
1342 大きなプロジェクトは別々のファイルに分割することができます。@c
1343 他のファイルを参照するには、以下のようにします:
1344
1345 @example
1346 \include "otherfile.ly"
1347 @end example
1348
1349 @code{\include "otherfile.ly"} という行は、@c
1350 @file{otherfile.ly} の内容をカレント ファイルの @code{\include}
1351 がある場所に貼り付けるのと等価です。@c
1352 例えば、大きなプロジェクトでは、個々の楽器パートを別々のファイルで記述し、@c
1353 個々の楽器ファイルをまとめる @qq{総譜} ファイルを作成することができます。@c
1354 通常、インクルードされるファイルはいくつかの変数を定義し、@c
1355 それらの変数は総譜ファイルの中で使用されます。@c
1356 インクルードされるファイルの中でタグ付きセクションにマークを付けて、@c
1357 それを楽譜の他の場所で使うことができます
1358 -- @ref{1 つのソースから異なる版を生成する} を参照してください。
1359
1360 カレントのワーキング ディレクトリの中にあるファイルは
1361 @code{\include} コマンドに後にファイル名を指定するだけで@c
1362 参照することができます。@c
1363 他の場所にあるファイルはフル パス参照か相対パス参照
1364 (ディレクトリ区切りとして、UNIX ではスラッシュ / を使用しますが、@c
1365 DOS/Windows ではバックスラッシュ \ を使用します) によって@c
1366 参照することができます。@c
1367 例えば、@file{stuff.ly} がカレントのワーキング ディレクトリよりも
1368 1 つ上のディレクトリの中にある場合、以下のようにインクルードします:
1369
1370 @example
1371 \include "../stuff.ly"
1372 @end example
1373
1374 @noindent
1375 あるいは、インクルードされるオーケストラのすべてのパート ファイルが、@c
1376 カレント ディレクトリ内部の @file{parts} というサブディレクトリの中に@c
1377 配置されている場合、以下のようにインクルードします:
1378
1379 @example
1380 \include "parts/VI.ly"
1381 \include "parts/VII.ly"
1382 ... etc
1383 @end example
1384
1385 インクルードされるファイルも @code{\include} 文を持つことができます。@c
1386 それら第 2 レベルの @code{\include} 文はそのファイルがメイン ファイルに@c
1387 組み込まれるまで解釈されません。@c
1388 そのため、第 2 レベルの @code{\include} 文で指定するファイル名は@c
1389 すべてメイン ファイルを保持しているディレクトリからの相対参照で@c
1390 指定しなければなりません
1391 -- インクルード ファイルを保持しているディレクトリからではありません。@c
1392 しかしながら、この振る舞いは、オプション @code{-drelative-includes} を@c
1393 コマンド ラインで渡すことによって
1394 (あるいは、メイン入力ファイルの先頭に
1395 @code{#(ly:set-option 'relative-includes #t)} を付け加えることによって)
1396 変更することができます。@c
1397 @code{relative-includes} をセットすることで、@c
1398 各 @code{\include} コマンドのパスは@c
1399 そのコマンドを保持しているファイルからの相対参照になります。@c
1400 この振る舞いを使用することが推奨されていて、@c
1401 lilypond の将来のバージョンではこの振る舞いがデフォルトになります。
1402
1403 コマンド ラインから LilyPond を呼び出すときにオプションとして指定した@c
1404 サーチ パスに含まれるディレクトリから@c
1405 ファイルをインクルードすることもできます。@c
1406 サーチ パスを指定した場合、@c
1407 インクルードされるファイルはファイル名だけで指定されます。@c
1408 例えば、サーチ パスで指定する @file{parts} というサブディレクトリの中にある@c
1409 ファイルをインクルードする @file{main.ly} をコンパイルするには、@c
1410 @file{main.ly} を保持しているディレクトリに cd して、以下を入力します:
1411
1412 @example
1413 lilypond --include=parts main.ly
1414 @end example
1415
1416 @file{main.ly} の中には以下を記述しておきます:
1417
1418 @example
1419 \include "VI.ly"
1420 \include "VII.ly"
1421 ... etc
1422 @end example
1423
1424 いくつもの楽譜でインクルードされるファイルは
1425 LilyPond ディレクトリ @file{../ly} の中に置くことになるかもしれません
1426 (このディレクトリが存在する場所はインストールの仕方に依存します
1427 -- @rlearning{その他の情報源} を参照してください)。@c
1428 このディレクトリの中にあるファイルは、@code{\include} 文で@c
1429 ファイル名を指定するだけでインクルードすることができます。@c
1430 この方法で @file{english.ly} のような言語依存のファイルを@c
1431 インクルードしています。
1432
1433 LilyPond は、実行開始時に、デフォルトで@c
1434 いくつかのファイルをインクルードします。@c
1435 このインクルードはユーザには明らかにされませんが、@c
1436 コマンド ラインから @code{lilypond --verbose} を実行することによって@c
1437 インクルードされるファイルを明らかにすることができます。@c
1438 @code{--verbose} オプションは、他の多くの情報とともに、@c
1439 LilyPond が使用するパスとファイルのリストを表示します。@c
1440 また、デフォルトでインクルードされるファイルのうち、@c
1441 より重要なファイルについて @rlearning{その他の情報源} で議論されています。@c
1442 これらのファイルを編集することができますが、@c
1443 これらのファイルに加えられた変更は@c
1444 新しいバージョンの LilyPond をインストールすると失われます。
1445
1446 @code{\include} を使用している簡単な例がいくつか
1447 @rlearning{楽譜とパート} で示されています。
1448
1449
1450 @seealso
1451 学習マニュアル:
1452 @rlearning{その他の情報源},
1453 @rlearning{楽譜とパート}
1454
1455
1456 @knownissues
1457
1458 インクルードされるファイルに LilyPond のインストール ファイルと同じ名前が@c
1459 与えられている場合、LilyPond のインストール ファイルが優先されます。
1460
1461
1462
1463 @node 1 つのソースから異なる版を生成する
1464 @subsection 1 つのソースから異なる版を生成する
1465 @translationof Different editions from one source
1466
1467 同じ音楽ソースから異なるバージョンの楽譜を容易に生成できるようにするために、@c
1468 いくつかの方法が用意されています。@c
1469 長い音楽や注記のセクションをさまざまなやり方で組み合わせる場合には、@c
1470 おそらく変数が最も役に立つでしょう。@c
1471 一方、差し替え用の短い音楽セクションの中から 1 つを選択する場合には、@c
1472 タグが役に立ちます。@c
1473 どのような方法をとるにしても、楽譜構造から音楽表記を分離しておくと、@c
1474 音楽表記に手を触れずに楽譜構造を変更することが簡単に行えます。
1475
1476 @menu
1477 * 変数を使用する::
1478 * タグを使用する::
1479 * グローバル設定を使用する::
1480 @end menu
1481
1482 @node 変数を使用する
1483 @unnumberedsubsubsec 変数を使用する
1484 @translationof Using variables
1485
1486 @cindex variables, use of (変数を使用する)
1487
1488 音楽のセクションが変数の中で定義されている場合、@c
1489 そのセクションを楽譜の異なる部分で再利用することができます
1490 -- @rlearning{変数を用いて楽曲を編成する} を参照してください。@c
1491 例えば、@notation{アカペラ} のボーカル譜はリハーサル目的で@c
1492 すべてのパートをまとめたピアノ譜を持つことがよくあります。@c
1493 これは声楽全般で言えることです。@c
1494 その場合、音楽を入力する必要があるのは 1 回だけです。@c
1495 2 つの変数からの音楽を 1 つの譜に組み込むことができます
1496 -- @ref{自動パート結合} を参照してください。@c
1497 ここに例を挙げます:
1498
1499 @lilypond[verbatim,quote]
1500 sopranoMusic = \relative c'' { a4 b c b8( a) }
1501 altoMusic = \relative g' { e4 e e f }
1502 tenorMusic = \relative c' { c4 b e d8( c) }
1503 bassMusic = \relative c' { a4 gis a d, }
1504 allLyrics = \lyricmode {King of glo -- ry }
1505 <<
1506   \new Staff = "Soprano" \sopranoMusic
1507   \new Lyrics \allLyrics
1508   \new Staff = "Alto" \altoMusic
1509   \new Lyrics \allLyrics
1510   \new Staff = "Tenor" {
1511     \clef "treble_8"
1512     \tenorMusic
1513   }
1514   \new Lyrics \allLyrics
1515   \new Staff = "Bass" {
1516     \clef "bass"
1517     \bassMusic
1518   }
1519   \new Lyrics \allLyrics
1520   \new PianoStaff <<
1521     \new Staff = "RH" {
1522       \set Staff.printPartCombineTexts = ##f
1523       \partcombine
1524       \sopranoMusic
1525       \altoMusic
1526     }
1527     \new Staff = "LH" {
1528       \set Staff.printPartCombineTexts = ##f
1529       \clef "bass"
1530       \partcombine
1531       \tenorMusic
1532       \bassMusic
1533     }
1534   >>
1535 >>
1536 @end lilypond
1537
1538 音楽表記には変更を加えずに、楽譜構造の文を変えるだけで、@c
1539 ボーカル パートだけあるいはピアノ パートだけの楽譜を作り出すことができます。
1540
1541 長い楽譜では、変数定義をそれぞれ別々のファイルの中に置いて、@c
1542 それらのファイルをインクルードすることになるかもしれません
1543 -- @ref{LilyPond ファイルをインクルードする} を参照してください。
1544
1545 @node タグを使用する
1546 @unnumberedsubsubsec タグを使用する
1547 @translationof Using tags
1548
1549 @funindex \tag
1550 @funindex \keepWithTag
1551 @funindex \removeWithTag
1552 @cindex tag (タグ)
1553 @cindex keep tagged music (タグの付いた音楽を保持する)
1554 @cindex remove tagged music (タグの付いた音楽を排除する)
1555
1556 @code{\tag #'@var{partA}} コマンドは音楽表記に
1557 @var{partA} という名前を付けます。@c
1558 この方法でタグを付けられた表記は、後で @code{\keepWithTag #'@var{name}} と
1559 @code{\removeWithTag #'@var{name}} のどちらかを用いて、@c
1560 名前によって選択あるいは排除することができます。@c
1561 タグの付いた音楽にそのようなフィルタを適用した結果は以下のようになります:
1562
1563 @multitable @columnfractions .5 .5
1564 @headitem フィルタ
1565   @tab 結果
1566 @item
1567 @code{\keepWithTag #'@var{name}} が前に付くタグ付きの音楽
1568   @tab タグの付いていない音楽と @var{name} というタグの付いた音楽が@c
1569 インクルードされます。@c
1570 他のタグ名を持つタグ付き音楽は排除されます。
1571 @item
1572 @code{\removeWithTag #'@var{name}} が前に付くタグ付きの音楽
1573   @tab タグの付いていない音楽と @var{name} 以外のタグを持つ音楽が@c
1574 インクルードされます。@c
1575 @var{name} というタグの付いた音楽は排除されます。
1576 @item
1577 @code{\keepWithTag} と @code{\removeWithTag} のどちらも@c
1578 前に付かないタグ付きの音楽
1579   @tab タグの付いた音楽とタグの付いていない音楽すべてがインクルードされます。
1580 @end multitable
1581
1582 @code{\tag}、@code{\keepWithTag} それに @code{\removeWithTag} コマンドの引数は@c
1583 シンボル (@code{#'score} や @code{#'part} など) とその後に続けて@c
1584 音楽表記であるべきです。
1585
1586 以下の例では、楽曲を 2 つのバージョンで示しています。@c
1587 1 つはトリルを通常の記譜法で示していて、@c
1588 もう 1 つはトリルを明示的に展開しています:
1589
1590 @lilypond[verbatim,quote]
1591 music = \relative g' {
1592   g8. c32 d
1593   \tag #'trills {d8.\trill }
1594   \tag #'expand {\repeat unfold 3 {e32 d} }
1595   c32 d
1596  }
1597
1598 \score {
1599   \keepWithTag #'trills \music
1600 }
1601 \score {
1602   \keepWithTag #'expand \music
1603 }
1604 @end lilypond
1605
1606 @noindent
1607 @code{\keepWithTag} を使う代わりに、@c
1608 音楽セクションを排除する方が楽な場合もあります:
1609
1610 @lilypond[verbatim,quote]
1611 music = \relative g' {
1612   g8. c32 d
1613   \tag #'trills {d8.\trill }
1614   \tag #'expand {\repeat unfold 3 {e32 d} }
1615   c32 d
1616  }
1617
1618 \score {
1619   \removeWithTag #'expand
1620   \music
1621 }
1622 \score {
1623   \removeWithTag #'trills
1624   \music
1625 }
1626 @end lilypond
1627
1628 タグ フィルタリングはアーティキュレーション、テキストなどにも@c
1629 適用することができます。@c
1630 フィルタリングを行うにはアーティキュレーションの前に
1631
1632 @example
1633 -\tag #'@var{your-tag}
1634 @end example
1635
1636 を置きます。@c
1637 例えば、以下は条件付の運指指示を持つ音符と条件付注記を持つ音符を定義しています:
1638
1639 @example
1640 c1-\tag #'finger ^4
1641 c1-\tag #'warn ^"Watch!"
1642 @end example
1643
1644 複数の @code{\tag} エントリで、表記に複数のタグを付ける場合もあります:
1645
1646 @lilypond[quote,verbatim]
1647 music = \relative c'' {
1648   \tag #'a \tag #'both { a4 a a a }
1649   \tag #'b \tag #'both { b4 b b b }
1650 }
1651 <<
1652 \keepWithTag #'a \music
1653 \keepWithTag #'b \music
1654 \keepWithTag #'both \music
1655 >>
1656 @end lilypond
1657
1658 単一の音楽表記に複数の @code{\removeWithTag} フィルタを適用することによって、@c
1659 いくつかの異なる名前のタグが付いたセクションを排除することができます:
1660
1661 @lilypond[verbatim,quote]
1662 music = \relative c'' {
1663 \tag #'A { a4 a a a }
1664 \tag #'B { b4 b b b }
1665 \tag #'C { c4 c c c }
1666 \tag #'D { d4 d d d }
1667 }
1668 {
1669 \removeWithTag #'B
1670 \removeWithTag #'C
1671 \music
1672 }
1673 @end lilypond
1674
1675 単一の音楽表記に複数の @code{\keepWithTag} フィルタを適用すると、@c
1676 タグ付きセクションは @emph{すべて} 排除されます。@c
1677 なぜなら、最初のフィルタはあるタグ名以外を持つセクションを排除し、@c
1678 2 番目のフィルタがそのタグ名を持つセクションを排除するからです。
1679
1680
1681 @seealso
1682 学習マニュアル:
1683 @rlearning{変数を用いて楽曲を編成する}
1684
1685 記譜法リファレンス:
1686 @ref{自動パート結合},
1687 @ref{LilyPond ファイルをインクルードする}
1688
1689 @ignore
1690 @c This warning is more general than this placement implies.
1691 @c Rests are not merged whether or not they come from tagged sections.
1692 @c Should be deleted?  -td
1693
1694 @knownissues
1695
1696 Multiple rests are not merged if you create a score with more
1697 than one tagged section at the same place.
1698
1699 複数のタグ付きセクションからを生成した場合、@c
1700 同じ場所にある複数の休符はマージされません。
1701
1702 @end ignore
1703
1704
1705 @node グローバル設定を使用する
1706 @unnumberedsubsubsec グローバル設定を使用する
1707 @translationof Using global settings
1708
1709 @cindex include-settings
1710
1711 別のファイルからグローバル設定をインクルードすることができます:
1712
1713 @example
1714 lilypond -dinclude-settings=MY_SETTINGS.ly MY_SCORE.ly
1715 @end example
1716
1717 ページ サイズ、フォント、書体などのような設定のグループを別々のファイルに@c
1718 保存することができます。@c
1719 こうすることにより、適当な設定ファイルを指定するだけで、@c
1720 同じ楽譜から異なる版を作り出すことができます。
1721
1722 このテクニックはスタイル シートでも使えます。@c
1723 @rlearning{スタイル シート} を参照してください。
1724
1725 @seealso
1726 学習マニュアル:
1727 @rlearning{変数を用いて楽曲を編成する},
1728 @rlearning{スタイル シート}.
1729
1730 記譜法リファレンス:
1731 @ref{LilyPond ファイルをインクルードする}
1732
1733
1734 @node テキスト エンコーディング
1735 @subsection テキスト エンコーディング
1736 @translationof Text encoding
1737
1738 @cindex Unicode
1739 @cindex UTF-8
1740 @cindex non-ASCII characters (非 ASCII 文字)
1741
1742 LilyPond は Unicode 協会と ISO/IEC 10646 によって定義された@c
1743 文字レパートリを使用します。@c
1744 この文字レパートリは、ほとんどすべての現代言語と他の多くの言語で@c
1745 使用される文字セットに対して、固有の名前とコード位置を定義しています。@c
1746 Unicode はいくつかの異なるエンコーディングを用いて実装することができます。@c
1747 LilyPond は UTF-8 エンコーディング
1748 (UTF は Unicode Transformation Format を意味します) を使用します
1749 -- UTF-8 はすべての共通ラテン文字を 1 バイトで表し、@c
1750 他の文字を可変バイト長形式 (最大 4 ビット) で表します。
1751
1752 文字の実際の見た目は利用可能なある特定のフォントの中にあるグリフ (図柄)
1753 によって決定されます
1754 -- フォントはグリフを指す Unicode コードのサブセット (部分集合) の写像を@c
1755 定義しています。@c
1756 LilyPond は多言語テキストを、Pango ライブラリを用いて、@c
1757 レイアウトして描画します。
1758
1759 Lilypond は入力のエンコーディング変換をまったく行いません。@c
1760 これは非 ASCII 文字を含むすべてのテキスト
1761  -- タイトル、歌詞テキストあるいは演奏指示 --
1762 を UTF-8 でエンコードして入力する必要があるということを意味します。@c
1763 そのようなテキストを入力する最も容易な方法は Unicode を認識するエディタを@c
1764 用いて、ファイルを UTF-8 で保存することです。@c
1765 人気のある現代的なエディタのほとんどが UTF-8 をサポートします
1766  -- 例えば、vim, Emacs, jEdit, GEdit です。@c
1767 NT より後の MS Windows システムはすべて@c
1768 ネイティブ キャラクタ エンコーディングとして Unicode を使用します。@c
1769 そのため、Notepad でさえ UTF-8 フォーマットのファイルを@c
1770 編集して保存することができます。@c
1771 Windows 用のもっと機能的なエディタに BabelPad があります。
1772
1773 非 ASCII 文字を保持している LilyPond 入力ファイルが UTF-8 フォーマットで@c
1774 保存されていない場合、エラー メッセージ
1775
1776 @example
1777 FT_Get_Glyph_Name () error: invalid argument
1778 @end example
1779
1780 が表示されます。
1781
1782 ここでキリル文字、ヘブライ文字、ポルトガル語のテキストを表示する例を挙げます:
1783
1784 @c KEEP LY
1785 @lilypond[quote]
1786 %c No verbatim here as the code does not display correctly in PDF
1787 % キリル文字
1788 bulgarian = \lyricmode {
1789   Жълтата дюля беше щастлива, че пухът, който цъфна, замръзна като гьон.
1790 }
1791
1792 % ヘブライ文字
1793 hebrew = \lyricmode {
1794   זה כיף סתם לשמוע איך תנצח קרפד עץ טוב בגן.
1795 }
1796
1797 % ポルトガル語
1798 portuguese = \lyricmode {
1799   à vo -- cê uma can -- ção legal
1800 }
1801
1802 \relative  {
1803   c2 d e f g f e
1804 }
1805 \addlyrics { \bulgarian }
1806 \addlyrics { \hebrew }
1807 \addlyrics { \portuguese }
1808 @end lilypond
1809
1810 単一の文字 -- その文字に対する Unicode コード ポイントを知っているが、@c
1811 使用しているエディタではその文字を使用できない -- を入力するには、@c
1812 @code{\markup} ブロック内部で @code{\char ##xhhhh} あるいは
1813 @code{\char ##dddd} を使用します
1814 -- ここで @code{hhhh} はその文字に対する 16 進コードであり、@c
1815 @code{dddd} はそれに対応する 10 進数値です。@c
1816 先頭の 0 は省略可能ですが、16 進表記では 4 文字で指定する方法が一般的です。@c
1817 (@code{\char} の後に UTF-8 エンコーディングのコード ポイントを使うべきでは@c
1818 ありません。@c
1819 なぜなら、UTF-8 エンコーディングはバイト数を表すための余分なビットを@c
1820 保持しているからです。)
1821 任意の文字に対する 16 進のコード ポイントを調べるための、@c
1822 Unicode コード表と文字名インデックスは Unicode コンソーシアム Web サイト
1823 @uref{http://www.unicode.org/} にあります。
1824
1825
1826 例えば、@code{\char ##x03BE} と @code{\char #958} はどちらも
1827 Unicode U+03BE の文字を入力します
1828 -- この文字は Unicode 名 @qq{Greek Small Letter Xi}
1829 (ギリシャ小文字クシー) です。@c
1830
1831 この方法で任意の Unicode コード ポイントを入力することができます。@c
1832 すべての特殊文字がこの方法で入力されている場合、@c
1833 入力ファイルを UTF-8 フォーマットで保存する必要はありません。@c
1834 もちろん、入力された文字を保持しているフォントがすべて@c
1835 インストールされていて、LilyPond で利用可能になっている必要があります。
1836
1837 以下の例は UTF-8 コード化された文字を 4 箇所
1838 -- リハーサル記号の中、アーティキュレーション テキストとして、歌詞の中、@c
1839 楽譜の下にある独立したテキストの中 --
1840 で使用しています:
1841
1842 @lilypond[quote,verbatim]
1843 \score {
1844   \relative c'' {
1845     c1 \mark \markup { \char ##x03EE }
1846     c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } }
1847   }
1848   \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
1849 }
1850 \markup { "Copyright 2008--2011" \char ##x00A9 }
1851 @end lilypond
1852
1853 @cindex copyright sign (著作権記号)
1854
1855 著作権についての注意書きの中で著作権記号を入力するには、以下のようにします:
1856
1857 @example
1858 \header @{
1859   copyright = \markup @{ \char ##x00A9 "2008" @}
1860 @}
1861 @end example
1862
1863
1864 @node 出力を制御する
1865 @section 出力を制御する
1866 @translationof Controlling output
1867
1868 @menu
1869 * 音楽の断片を抽出する::
1870 * 校正済みの音楽をスキップする::
1871 * 他の出力フォーマット::
1872 * 記譜フォントを置換する::
1873 @end menu
1874
1875 @node 音楽の断片を抽出する
1876 @subsection 音楽の断片を抽出する
1877 @translationof Extracting fragments of music
1878
1879 大きな楽譜の中の小さな範囲を、出力から直接引用することができます。@c
1880 これは紙の楽譜の一部をはさみで切り抜くことに相当します。
1881
1882 これは切り抜く小節を定義することによって実行されます。@c
1883 例えば、以下の定義は、
1884
1885
1886 @verbatim
1887 \layout {
1888   clip-regions
1889   = #(list
1890       (cons
1891        (make-rhythmic-location 5 1 2)
1892        (make-rhythmic-location 7 3 4)))
1893 }
1894 @end verbatim
1895
1896 @noindent
1897 第 5 小節の中間から第 7 小節までを抽出します。@c
1898 @code{5 1 2} は第 5 小節の先頭から 1/2 音符の位置を意味し、@c
1899 @code{7 3 4} は第 7 小節の先頭から 4 分音符 3 つ分の位置を意味します。
1900
1901 リズムによる位置のペアをリストに追加することによって、@c
1902 更に多くの切り抜き範囲を定義することができます。
1903
1904 この機能を使用するには、@c
1905 LilyPond を @code{-dclip-systems} を付けて呼び出す必要があります。@c
1906 切り抜きは EPS ファイルとして出力され、@c
1907 更にフォーマットが指定されている場合には PDF や PNG に変換されます。
1908
1909 出力フォーマットについての更なる情報は、@c
1910 @rprogram{lilypond を呼び出す} を参照してください。
1911
1912 @node 校正済みの音楽をスキップする
1913 @subsection 校正済みの音楽をスキップする
1914 @translationof Skipping corrected music
1915
1916 @funindex skipTypesetting
1917 @funindex showFirstLength
1918 @funindex showLastLength
1919
1920 音楽を入力あるいはコピーしているとき、@c
1921 閲覧、校正する必要があるのは、たいてい終わり近くの音楽
1922 (そこに音符を追加している場所) だけです。@c
1923 校正プロセスを速めるために、@c
1924 最後の数小節以外の譜刻をスキップすることができます。@c
1925 これはソース ファイルの中に以下を置くことによって実現できます:
1926
1927 @verbatim
1928 showLastLength = R1*5
1929 \score { ... }
1930 @end verbatim
1931
1932 @noindent
1933 これは入力ファイルの中にあるそれぞれの @code{\score} の最後の 5 小節だけを@c
1934 描画します (4/4 拍子と仮定して)。@c
1935 長い楽曲の場合、小さな部分だけを描画するのにかかる時間は@c
1936 楽曲をすべて描画するのにかかる時間よりも非常に短くなります。@c
1937 すでに譜刻済みの楽譜の開始部分に取り掛かる (例えば、新しいパートを追加する)
1938 ときには、@code{showFirstLength} プロパティも役に立つかもしれません。
1939
1940 楽譜の中のいくつかのパートをスキップは、プロパティ @code{Score.skipTypesetting}
1941 を用いたより細かなやり方で制御することができます。@c
1942 このプロパティがセットされていると、譜刻はまったく行われません。
1943
1944 このプロパティは MIDI ファイルへの出力を制御するためにも用いられます。@c
1945 このプロパティはすべてのイベント -- テンポの変更や楽器の変更を含む -- を@c
1946 スキップするということに注意してください。@c
1947 くれぐれも注意してください。
1948
1949 @lilypond[quote,relative=2,ragged-right,verbatim]
1950 c8 d
1951 \set Score.skipTypesetting = ##t
1952 e8 e e e e e e e
1953 \set Score.skipTypesetting = ##f
1954 c8 d b bes a g c2
1955 @end lilypond
1956
1957 多声の音楽では、@code{Score.skipTypesetting} はすべてのボイスと譜に@c
1958 影響を与えて、より多くの時間を節約します。
1959
1960
1961 @node 他の出力フォーマット
1962 @subsection 他の出力フォーマット
1963 @translationof Alternative output formats
1964
1965 @cindex scalable vector graphics output (SVG 出力)
1966 @cindex SVG output (SVG 出力)
1967 @cindex encapsulated postscript output (EPS 出力)
1968 @cindex EPS output (EPS 出力)
1969
1970 譜刻される楽譜のデフォルト出力フォーマットは、@c
1971 Portable Document Format (PDF) と PostScript (PS) です。@c
1972 コマンド ライン オプションを指定することにより、@c
1973 Scalable Vector Graphics (SVG), Encapsulated PostScript (EPS) それに
1974 Portable Network Graphics (PNG) 出力フォーマットが利用可能です。@c
1975 @rprogram{lilypond のコマンド ライン オプション} を参照してください。
1976
1977
1978 @node 記譜フォントを置換する
1979 @subsection 記譜フォントを置換する
1980 @translationof Replacing the notation font
1981
1982 LilyPond で使用される Feta フォントの代わりに Gonville に使うことができます。@c
1983 Gonville は以下からダウンロードできます:
1984 @example
1985 @uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/}
1986 @end example
1987
1988 Gonville のサンプル小節です:
1989
1990 @c NOTE: these images are a bit big, but that's important
1991 @c       for the font comparison.  -gp
1992 @sourceimage{Gonville_after,,,}
1993
1994 LilyPond の Feta フォントのサンプル小節です:
1995
1996 @sourceimage{Gonville_before,,,}
1997
1998 @subsubheading MacOS でのインストール手順
1999
2000 ZIP ファイルをダウンロードして、伸張します。@c
2001 @code{lilyfonts} ディレクトリを @file{@var{SHARE_DIR}/lilypond/current} に@c
2002 コピーします
2003 -- 更なる情報は、@rlearning{その他の情報源} を参照してください。@c
2004 既存の @code{fonts} ディレクトリを @code{fonts_orig} に変更して、@c
2005 @code{lilyfonts} ディレクトリを @code{fonts} に変更します。@c
2006 Feta フォントに戻すには、@code{fonts_orig} を @code{fonts} に変更します。
2007
2008 @seealso
2009 学習マニュアル: @rlearning{その他の情報源}
2010
2011 @knownissues
2012
2013 Gonville では @q{古代の音楽} を記譜することはできません。@c
2014 ライセンス条件等を含む Gonville の更なる情報は、@c
2015 製作者の Web サイトを参照してください。
2016
2017
2018 @node MIDI 出力
2019 @section MIDI 出力
2020 @translationof MIDI output
2021
2022 @cindex Sound (サウンド)
2023 @cindex MIDI
2024
2025 MIDI (Musical Instrument Digital Interface) はデジタル楽器接続 / 制御の@c
2026 標準インタフェイスです。@c
2027 MIDI ファイルはいくつかのトラックの中にある音符の連なりです。@c
2028 MIDI ファイルは実際はサウンド ファイルではありません。@c
2029 音符の連なりと実際のサウンドの翻訳を行うには専用のソフトウェアが必要になります。
2030
2031 LilyPond で記述した音楽は MIDI ファイルに変換することができ、@c
2032 入力されたものを聴くことができます。@c
2033 これは音楽をチェックするのに便利です。オクターブの外れや臨時記号の付け間違いは
2034 MIDI 出力を聴いたときに際立ちます。
2035
2036 標準 MIDI 出力には粗雑さがあります。@c
2037 オプションで @ref{奏法スクリプト} を用いることにより、@c
2038 強化されたリアルな MIDI 出力を得ることができます。
2039
2040 @c TODO Check this
2041 MIDI 出力はそれぞれの譜とグローバル設定に対して 1 つずつチャンネルを@c
2042 割り当てます。@c
2043 そのため、MIDI ファイルに持たせる譜の数は 15 まで
2044 (ドラムを使用しない場合は 14 まで) にするべきです。@c
2045 それを越えた譜は演奏されません。
2046
2047 @menu
2048 * MIDI ファイルを作り出す::
2049 * MIDI ブロック::
2050 * 何が MIDI に出力されるのか?::
2051 * MIDI での繰り返し::
2052 * MIDI での音の強弱を制御する::
2053 * MIDI での打楽器::
2054 * 奏法スクリプト::
2055 @end menu
2056
2057 @node MIDI ファイルを作り出す
2058 @subsection MIDI ファイルを作り出す
2059 @translationof Creating MIDI files
2060
2061 LilyPond 入力ファイルから MIDI ファイルを作り出すには、@c
2062 score に @code{\midi} ブロックを付け加えます。@c
2063 例えば、以下のように:
2064
2065 @example
2066 \score @{
2067   @var{...music...}
2068   \midi @{ @}
2069 @}
2070 @end example
2071
2072 @code{\layout} ブロックを持たない @code{\score} の中に
2073 @code{\midi} ブロックがある場合、MIDI 出力だけが生成されます。@c
2074 楽譜も必要な場合は、@code{\layout} ブロックも存在している必要があります。
2075
2076 @example
2077 \score @{
2078   @var{...music...}
2079   \midi @{ @}
2080   \layout @{ @}
2081 @}
2082 @end example
2083
2084 ピッチ、リズム、タイ、強弱記号、テンポの変更は解釈されて@c
2085 正確に MIDI 出力に翻訳されます。@c
2086 強弱記号、クレッシェンド、デクレッシェンドは MIDI ボリューム レベルに@c
2087 翻訳されます。@c
2088 強弱記号は利用可能な MIDI ボリューム レンジ内のある固定値に翻訳されます。@c
2089 クレッシェンドとデクレッシェンドはそれらの開始点と終了点の間でボリュームを@c
2090 線形に変化させます。@c
2091 MIDI 出力における強弱記号の効果を完全に削除することができます
2092  -- @ref{MIDI ブロック} を参照してください。
2093
2094 初期のテンポと後のテンポ変化は、音楽記譜内部の @code{\tempo} コマンドで@c
2095 指定することができます。@c
2096 通常このコマンドはメトロノーム記号を表示させますが、@c
2097 表示を抑制することができます
2098 -- @ref{メトロノーム記号} を参照してください。@c
2099 初期 MIDI テンポあるいは MIDI 全体のテンポを指定するための代替手段が@c
2100 この後で記述されています -- @ref{MIDI ブロック} を参照してください。
2101
2102 Windows の制限により、Windows での MIDI ファイルのデフォルトの拡張子は
2103 @code{.mid} です。@c
2104 他の OS では、拡張子は @code{.midi} となります。@c
2105 他の拡張子を使いたいのであれば、入力ファイルの最上位で、@c
2106 @code{\book} ブロック, @code{\bookpart} ブロック、それに @code{\score}
2107 ブロックの前に以下の行を挿入します:
2108
2109 @example
2110 #(ly:set-option 'midi-extension "midi")
2111 @end example
2112
2113 上記の行は、MIDI ファイルのデフォルトの拡張子を @code{.midi} にします。
2114
2115 上記の方法の代わりとして、@c
2116 コマンド ラインで以下のオプションを与える方法があります:
2117
2118 @example
2119 lilypond … -dmidi-extension=midi lilyFile.ly
2120 @end example
2121
2122
2123 @unnumberedsubsubsec 楽器名
2124 @c @unnumberedsubsubsec Instrument names
2125
2126 @cindex instrument names (楽器名)
2127 @funindex Staff.midiInstrument
2128
2129 @code{Staff.midiInstrument} プロパティに楽器名を設定することで、@c
2130 使用する MIDI 楽器が指定されます。@c
2131 楽器名は @ref{MIDI instruments} にあるリストから選択しなければなりません。
2132
2133 @example
2134 \new Staff @{
2135   \set Staff.midiInstrument = #"glockenspiel"
2136   @var{...notes...}
2137 @}
2138 @end example
2139
2140 @example
2141 \new Staff \with @{midiInstrument = #"cello"@} @{
2142   @var{...notes...}
2143 @}
2144 @end example
2145
2146 選択された楽器が MIDI 楽器のリストにある楽器に一致しない場合、@c
2147 グランド ピアノ (@code{"acoustic grand"}) 楽器が使用されます。
2148
2149
2150 @snippets
2151
2152 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
2153 {changing-midi-output-to-one-channel-per-voice.ly}
2154
2155 @knownissues
2156
2157 @c In 2.11 the following no longer seems to be a problem -td
2158 @ignore
2159 Unterminated (de)crescendos will not render properly in the midi file,
2160 resulting in silent passages of music.  The workaround is to explicitly
2161 terminate the (de)crescendo.  For example,
2162
2163 終端の無い(デ)クレッシェンドは適切に MIDI ファイルを作り出しません。@c
2164 結果として無音の音楽パッセージとなります。@c
2165 回避方法として、明示的に(デ)クレッシェンドを終了させます。@c
2166 例えば、
2167
2168 @example
2169 @{ a\< b c d\f @}
2170 @end example
2171
2172 @noindent
2173 will not work properly but
2174 これは正しく機能しませんが、
2175
2176 @example
2177 @{ a\< b c d\!\f @}
2178 @end example
2179
2180 @noindent
2181 will.
2182 これは正しく機能します。
2183 @end ignore
2184
2185 MIDI ボリュームの変化は音符の開始点でのみ起こります。@c
2186 そのため、クレッシェンドとデクレッシェンドは@c
2187 単一の音符のボリューム変化には効果を持ちません。
2188
2189 すべての MIDI プレイヤが MIDI 出力の中にあるテンポ変化を@c
2190 正しく処理するわけではありません。@c
2191 正しく機能するプレイヤとして知られているものには MS Windows の Media Player や
2192 @uref{http://@/timidity@/.sourceforge@/.net/,timidity} があります。
2193
2194 @node MIDI ブロック
2195 @subsection MIDI ブロック
2196 @translationof MIDI block
2197
2198 @cindex MIDI block (MIDI ブロック)
2199
2200 MIDI 出力が必要な場合、@c
2201 score 内部に @code{\midi} ブロックを置く必要があります。@c
2202 MIDI ブロックはレイアウト ブロックに似ていますが、それよりも単純です。@c
2203 しばしば、@code{\midi} ブロックは空のままですが、コンテキストの再編成
2204 -- 新しいコンテキスト定義やプロパティの値を設定するためのコード --
2205 を保持することもできます。@c
2206 例えば以下の例は、テンポ指示を譜刻することなしに、@c
2207 MIDI ファイルの初期テンポを設定します:
2208
2209 @example
2210 \score @{
2211   @var{...music...}
2212   \midi @{
2213     \context @{
2214       \Score
2215       tempoWholesPerMinute = #(ly:make-moment 72 4)
2216     @}
2217   @}
2218 @}
2219 @end example
2220
2221 この例では、テンポは 1 分間あたり 72 個の 4 分音符にセットされています。@c
2222 この種のテンポ指定では引数として付点音符の長さをとることはできません。@c
2223 付点音符の長さを指定する必要がある場合、@c
2224 その付点音符をより小さな単位に分解します。@c
2225 例えば、1 分間に 90 個の付点 4 分音符のテンポは、@c
2226 1 分間に 270 個の 8 分音符として指定することができます:
2227
2228 @example
2229 tempoWholesPerMinute = #(ly:make-moment 270 8)
2230 @end example
2231
2232 @cindex MIDI context definitions (MIDI コンテキスト定義)
2233
2234 @code{\midi} ブロック内部でのコンテキスト定義は、@c
2235 @code{\layout} ブロック内部でのコンテキスト定義の構文とまったく同じです。@c
2236 サウンドのモジュールへの翻訳は performer と呼ばれます。@c
2237 MIDI 出力のためのコンテキストは
2238 @file{../ly/performer-init.ly} で定義されています
2239 -- @rlearning{その他の情報源} を参照してください。@c
2240 例えば、MIDI 出力から強弱記号の効果を削除するには、@c
2241 @code{\midi@{ @}} ブロックの中に以下のコードを挿入します。
2242
2243 @example
2244 \midi @{
2245   ...
2246   \context @{
2247     \Voice
2248     \remove "Dynamic_performer"
2249   @}
2250 @}
2251 @end example
2252
2253 MIDI 出力は、@code{\score} コマンドで定義された score ブロック内部に
2254 @code{\midi} ブロックが存在する場合にのみ生成されます。
2255
2256 @ignore
2257 @code{\midi} ブロックが明示的にインスタンス化された score コンテキストの中
2258 (例えば、@code{\new Score} ブロックの中) に配置された場合、@c
2259 その LilyPond ファイルはエラーになります。@c
2260 これを解決するには、@code{\new Score} と @code{\midi} コマンドを
2261 @code{\score} ブロックの中に置きます。
2262 @end ignore
2263
2264 @example
2265 \score @{
2266   @{ @dots{}notes@dots{} @}
2267   \midi @{ @}
2268 @}
2269 @end example
2270
2271
2272 @node 何が MIDI に出力されるのか?
2273 @subsection 何が MIDI に出力されるのか?
2274 @translationof What goes into the MIDI output?
2275
2276 @c TODO Check grace notes - timing is suspect?
2277
2278 @unnumberedsubsubsec MIDI でサポートされるもの
2279 @c @unnumberedsubsubsec Supported in MIDI
2280
2281 @cindex Pitches in MIDI (MIDI でのピッチ)
2282 @cindex MIDI, Pitches (MIDI でのピッチ)
2283 @cindex Quarter tones in MIDI (MIDI での4 分音)
2284 @cindex MIDI, quarter tones (MIDI での4 分音)
2285 @cindex Microtones in MIDI (MIDI での微分音)
2286 @cindex MIDI, microtones (MIDI での微分音)
2287 @cindex Chord names in MIDI (MIDI でのコード ネーム)
2288 @cindex MIDI, chord names (MIDI でのコード ネーム)
2289 @cindex Rhythms in MIDI (MIDI でのリズム)
2290 @cindex MIDI, Rhythms (MIDI でのリズム)
2291 @cindex Articlulate scripts (奏法スクリプト)
2292 @cindex MIDI, articulations (MIDI での奏法)
2293 @cindex articulations in MIDI (MIDI での奏法)
2294 @cindex trills in MIDI (MIDI でのトリル)
2295 @cindex turns in MIDI (MIDI でのターン)
2296 @cindex rallentando in MIDI (MIDI でのラレンタンド)
2297 @cindex accelerando in MIDI (MIDI でのアッチェレランド)
2298 @c TODO etc
2299
2300 以下の記譜要素が MIDI 出力に反映されます:
2301
2302 @itemize
2303 @item ピッチ
2304 @item 微分音 (@ref{臨時記号} を参照してください。@c
2305 演奏にはピッチ ベンドをサポートするプレイヤが必要になります。)
2306 @item コード名で入力された和音
2307 @item 音符の演奏時間として入力されたリズム -- 連符を含みます
2308 @item @q{@code{:}[@var{number}]} を使わずに入力されたトレモロ
2309 @item タイ
2310 @item 強弱記号
2311 @item 複数の音符にかかるクレッシェンド、デクレッシェンド
2312 @item テンポ記号で入力されたテンポ変化
2313 @item 歌詞
2314 @end itemize
2315
2316 @ref{奏法スクリプト} を用いることで、@c
2317 上記のリストにいくつかの要素が追加されます:
2318
2319 @itemize
2320 @item アーティキュレーション (スラー、スタッカート等)
2321 @item トリル、ターン
2322 @item ラレンタンドとアッチェレランド
2323 @end itemize
2324
2325 @unnumberedsubsubsec MIDI でサポートされないもの
2326 @c @unnumberedsubsubsec Unsupported in MIDI
2327
2328 @c TODO index as above
2329
2330 以下の記譜要素は MIDI 出力に影響を与えません:
2331
2332 @itemize
2333 @item 注記 -- 例えば swing -- として入力されたリズム
2334 @item テンポ記号を使わずに注記として入力されたテンポ変化
2335 @item スタッカートと他のアーティキュレーションや装飾
2336 @item スラーとフレージング スラー
2337 @item 単一の音符に付けられたクレッシェンド、デクレッシェンド
2338 @item @q{@code{:}[@var{number}]} を使って入力されたトレモロ
2339 @item 通奏低音
2340 @item 微分音の和音
2341 @end itemize
2342
2343
2344 @node MIDI での繰り返し
2345 @subsection MIDI での繰り返し
2346 @translationof Repeats in MIDI
2347
2348 @cindex repeats in MIDI (MIDI での繰り返し)
2349 @funindex \unfoldRepeats
2350
2351 ちょっとした追加で、@c
2352 すべてのタイプの繰り返しを MIDI 出力に反映させることができます。@c
2353 これは @code{\unfoldRepeats} 音楽関数を適用することによって@c
2354 達成することができます。@c
2355 この関数はすべての繰り返しを展開します。
2356
2357 @lilypond[quote,verbatim]
2358 \unfoldRepeats {
2359   \repeat tremolo 8 { c'32 e' }
2360   \repeat percent 2 { c''8 d'' }
2361   \repeat volta 2 { c'4 d' e' f' }
2362   \alternative {
2363     { g' a' a' g' }
2364     { f' e' d' c' }
2365   }
2366 }
2367 \bar "|."
2368 @end lilypond
2369
2370 複数のボイスを持つ score で、繰り返しを正しく MIDI 出力に展開するには、@c
2371 @emph{各ボイス} の繰り返し指示が完全に記譜されている必要があります。
2372
2373 MIDI のために @code{\unfoldRepeats} を使用する楽譜ファイルを作成する場合、@c
2374 2 つの @code{\score} ブロックが必要になります:
2375 1 つは MIDI のため (繰り返しを展開します) で、@c
2376 もう 1 つは楽譜のため
2377 (差し替え、トレモロ、パーセント記号の繰り返しを使用します) です。@c
2378 例えば、以下のようにします:
2379
2380 @example
2381 \score @{
2382   @var{..music..}
2383   \layout @{ .. @}
2384 @}
2385 \score @{
2386   \unfoldRepeats @var{..music..}
2387   \midi @{ .. @}
2388 @}
2389 @end example
2390
2391 @node MIDI での音の強弱を制御する
2392 @subsection MIDI での音の強弱を制御する
2393 @translationof Controlling MIDI dynamics
2394
2395 @c MIDI dynamics: MIDI での音の強弱?
2396 MIDI での音の強弱は @code{Dynamic_performer}
2397 -- これはデフォルトでは Voice コンテキストの中に存在します --
2398 によって実装されます。@c
2399 MIDI 全体のボリューム、強弱記号による相対ボリューム、@c
2400 楽器間の相対ボリュームを制御することができます。
2401
2402 @unnumberedsubsubsec 強弱記号
2403 @c @unnumberedsubsubsec Dynamic marks
2404
2405 強弱記号は利用可能な MIDI ボリューム レンジ内のある固定の分数に翻訳されます。@c
2406 デフォルトでの分数の範囲は、@notation{ppppp} に対する 0.25 から、@c
2407 @notation{fffff} に対する 0.95 までです。@c
2408 強弱記号とそれに対応する分数のセットを @file{../scm/midi.scm} で@c
2409 調べることができます
2410 -- @rlearning{その他の情報源} を参照してください。@c
2411 引数として強弱記号をとり、それに対する分数を返す関数を作成し、@c
2412 その関数を @code{Score.dynamicAbsoluteVolumeFunction} に@c
2413 セットすることによって、分数のセットを変更あるいは拡張することができます。
2414
2415 例えば、@notation{リンフォルツァンド} 強弱記号 -- @code{\rfz} -- を@c
2416 使う必要がある場合、@c
2417 この強弱記号はデフォルト セットの中に含まれていないため、@c
2418 MIDI ボリュームに影響を与えません。@c
2419 同様に @code{make-dynamic-script} で新しい強弱記号を定義した場合、@c
2420 その強弱記号もデフォルト セットには含まれません。@c
2421 以下の例は、そのような強弱記号に対する MIDI ボリュームを追加する方法を@c
2422 示しています。@c
2423 以下の Scheme 関数は、rfz の強弱記号があった場合は分数に 0.9 をセットし、@c
2424 そうでない場合はデフォルトの関数を呼び出します。
2425
2426 @lilypond[verbatim,quote]
2427 #(define (myDynamics dynamic)
2428     (if (equal? dynamic "rfz")
2429       0.9
2430       (default-dynamic-absolute-volume dynamic)))
2431
2432 \score {
2433   \new Staff {
2434     \set Staff.midiInstrument = #"cello"
2435     \set Score.dynamicAbsoluteVolumeFunction = #myDynamics
2436     \new Voice {
2437       \relative c'' {
2438         a4\pp b c-\rfz
2439       }
2440     }
2441   }
2442   \layout {}
2443   \midi {}
2444 }
2445 @end lilypond
2446
2447 分数テーブル全体を再定義する必要がある場合、@c
2448 上記の方法の代わりに @file{../scm/midi.scm} の中にある
2449 @notation{default-dynamic-absolute-volume} プロシージャと@c
2450 そのモデルとなる関連テーブルを使用する方が良いでしょう。@c
2451 このセクションの最後の例で、その方法を示しています。
2452
2453 @unnumberedsubsubsec MIDI 全体でのボリューム
2454 @c @unnumberedsubsubsec Overall MIDI volume
2455
2456 強弱記号に対する MIDI 全体の最小ボリュームと最大ボリュームは
2457 @code{Score} レベルでプロパティ @code{midiMinimumVolume} と
2458 @code{midiMaximumVolume} を設定することで制御できます。@c
2459 これらのプロパティは強弱記号に対してのみ効果を発揮します。@c
2460 そのため、楽譜の開始からそれらのプロパティを適用するには、@c
2461 楽譜の開始点に強弱記号を置く必要があります。@c
2462 各強弱記号に対応する分数は以下の式で算出されます:
2463
2464 @example
2465 midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fraction
2466 @end example
2467
2468 以下の例では、MIDI 全体のボリュームの範囲は 0.2 - 0.5 の範囲に制限されています。
2469
2470 @lilypond[verbatim,quote]
2471 \score {
2472   <<
2473     \new Staff {
2474       \key g \major
2475       \time 2/2
2476       \set Staff.midiInstrument = #"flute"
2477       \new Voice \relative c''' {
2478         r2 g\mp g fis~
2479         fis4 g8 fis e2~
2480         e4 d8 cis d2
2481       }
2482     }
2483     \new Staff {
2484       \key g \major
2485       \set Staff.midiInstrument = #"clarinet"
2486       \new Voice \relative c'' {
2487         b1\p a2. b8 a
2488         g2. fis8 e
2489         fis2 r
2490       }
2491     }
2492   >>
2493   \layout {}
2494   \midi {
2495     \context {
2496       \Score
2497       tempoWholesPerMinute = #(ly:make-moment 72 2)
2498       midiMinimumVolume = #0.2
2499       midiMaximumVolume = #0.5
2500     }
2501   }
2502 }
2503 @end lilypond
2504
2505
2506 @unnumberedsubsubsec 楽器の音の強さを均一化する (i)
2507 @c @unnumberedsubsubsec Equalizing different instruments (i)
2508
2509 @code{Staff} コンテキストの中で最小 MIDI ボリューム プロパティと@c
2510 最大 MIDI ボリューム プロパティが設定されている場合、@c
2511 MIDI 楽器間の相対ボリュームを制御することができます。@c
2512 これは基本的な楽器イコライザであり、@c
2513 MIDI 出力の品質を著しく高めることができます。
2514
2515 以下の例では、クラリネットのボリュームはフルートのボリュームよりも@c
2516 相対的に低く設定されています。@c
2517 これを正しく機能させるには、それぞれの楽器の最初の音符に@c
2518 強弱記号を置く必要があります。
2519
2520 @lilypond[verbatim,quote]
2521 \score {
2522   <<
2523     \new Staff {
2524       \key g \major
2525       \time 2/2
2526       \set Staff.midiInstrument = #"flute"
2527       \set Staff.midiMinimumVolume = #0.7
2528       \set Staff.midiMaximumVolume = #0.9
2529       \new Voice \relative c''' {
2530         r2 g\mp g fis~
2531         fis4 g8 fis e2~
2532         e4 d8 cis d2
2533       }
2534     }
2535     \new Staff {
2536       \key g \major
2537       \set Staff.midiInstrument = #"clarinet"
2538       \set Staff.midiMinimumVolume = #0.3
2539       \set Staff.midiMaximumVolume = #0.6
2540       \new Voice \relative c'' {
2541         b1\p a2. b8 a
2542         g2. fis8 e
2543         fis2 r
2544       }
2545     }
2546   >>
2547   \layout {}
2548   \midi {
2549     \context {
2550       \Score
2551       tempoWholesPerMinute = #(ly:make-moment 72 2)
2552     }
2553   }
2554 }
2555 @end lilypond
2556
2557 @unnumberedsubsubsec 楽器の音の強さを均一化する (ii)
2558 @c @unnumberedsubsubsec Equalizing different instruments (ii)
2559
2560 MIDI 最小/最大ボリューム プロパティが設定されていない場合、@c
2561 デフォルトでは、LilyPond はいくつかの楽器に軽度の均一化を適用します。@c
2562 適用を受ける楽器とその equalization は @file{../scm/midi.scm} の中にある@c
2563 テーブル @notation{instrument-equalizer-alist} に示されています。
2564
2565 引数として MIDI 楽器名だけを受け入れて、その楽器に適用する@c
2566 最小/最大ボリュームの分数ペアを返す Scheme プロシージャを
2567 @code{Score} コンテキストの中にある
2568 @code{instrumentEqualizer} にセットすることで、@c
2569 この基本的なデフォルト イコライザを置き換えることができます。@c
2570 この置き換えは、このセクションの始めでの
2571 @code{dynamicAbsoluteVolumeFunction}  の再設定の方法とまったく同じです。@c
2572 @file{../scm/midi.scm} の中にあるデフォルト イコライザ
2573 @notation{default-instrument-equalizer} は@c
2574 そのようなプロシージャをどのように記述するのかを示しています。
2575
2576 以下の例は、フルートとクラリネットの相対ボリュームを@c
2577 前の例と同じ値にセットしています。
2578
2579 @lilypond[verbatim,quote]
2580 #(define my-instrument-equalizer-alist '())
2581
2582 #(set! my-instrument-equalizer-alist
2583   (append
2584     '(
2585       ("flute" . (0.7 . 0.9))
2586       ("clarinet" . (0.3 . 0.6)))
2587     my-instrument-equalizer-alist))
2588
2589 #(define (my-instrument-equalizer s)
2590   (let ((entry (assoc s my-instrument-equalizer-alist)))
2591     (if entry
2592       (cdr entry))))
2593
2594 \score {
2595   <<
2596     \new Staff {
2597       \key g \major
2598       \time 2/2
2599       \set Score.instrumentEqualizer = #my-instrument-equalizer
2600       \set Staff.midiInstrument = #"flute"
2601       \new Voice \relative c''' {
2602         r2 g\mp g fis ~
2603         fis4 g8 fis e2 ~
2604         e4 d8 cis d2
2605       }
2606     }
2607     \new Staff {
2608       \key g \major
2609       \set Staff.midiInstrument = #"clarinet"
2610       \new Voice \relative c'' {
2611         b1\p a2. b8 a
2612         g2. fis8 e
2613         fis2 r
2614       }
2615     }
2616   >>
2617   \layout { }
2618   \midi {
2619     \context {
2620       \Score
2621       tempoWholesPerMinute = #(ly:make-moment 72 2)
2622     }
2623   }
2624 }
2625 @end lilypond
2626
2627 @ignore
2628 @c Delete when satisfied this is adequately covered elsewhere -td
2629
2630 @n ode Microtones in MIDI (MIDI での微分音)
2631 @s ubsection Microtones in MIDI (MIDI での微分音)
2632
2633 @cindex microtones in MIDI (MIDI での微分音)
2634
2635 半シャープと半フラットからなる微分音は MIDI ファイルにエクスポートされ、@c
2636 ピッチ ベンドをサポートする MIDI プレーヤで正しく演奏されます。@c
2637 @ref{他の言語での音符名} を参照してください。@c
2638 以下の例は 1 オクターブの中にあるすべての半シャープと半フラットの音を@c
2639 示しています。@c
2640 この例をコピーしてコンパイルすることで、@c
2641 あなたが持っている MIDI プレイやで微分音をテストすることができます。
2642
2643 @lilypond[verbatim,quote]
2644 \score {
2645   \relative c' {
2646     c cih cis cisih
2647     d dih ees eeh
2648     e eih f fih
2649     fis fisih g gih
2650     gis gisih a aih
2651     bes beh b bih
2652   }
2653   \layout {}
2654   \midi {}
2655 }
2656 @end lilypond
2657 @end ignore
2658
2659
2660 @node MIDI での打楽器
2661 @subsection MIDI での打楽器
2662 @translationof Percussion in MIDI
2663
2664 打楽器は一般的に @code{DrumStaff} コンテキストの中で記譜され、@c
2665 そのように記譜された場合、その打楽器は正しく MIDI チャンネル 10 に@c
2666 出力されます。@c
2667 しかしながら、いくつかのピッチを持つ打楽器
2668 -- ザイロフォン、マリンバ、ビブラフォン、ティンパニなど --
2669 は @qq{通常の} 楽器のように扱われ、正しい MIDI 出力を得るには、@c
2670 それらの楽器のための音楽を@c
2671 通常の @code{Staff} コンテキストに入力する必要があります
2672  -- @code{DrumStaff} には入力しません。
2673
2674
2675 いくつかのピッチを持たない打楽器
2676 -- メロディック トム、太鼓、シンセドラムなど --
2677 のサウンドは一般の MIDI 標準に含まれ、MIDI チャネル@tie{}10 経由では@c
2678 使用できません。@c
2679 そのため、そのような楽器の記譜も適切なピッチを使って@c
2680 通常の @code{Staff} コンテキストに入力すべきです。
2681
2682 多くの打楽器 -- カスタネットなど -- は一般の MIDI 標準には含まれません。@c
2683 そのような楽器のための記述を行っている場合に MIDI 出力を作り出すための@c
2684 最も容易な -- けれども不十分な -- 方法は、@c
2685 標準セットから最も近いサウンドを代わりに用いることです。
2686
2687 @c TODO Expand with examples, and any other issues
2688
2689 @knownissues
2690
2691 一般の MIDI 標準はリム ショットを含まないため、@c
2692 代わりにサイドスティックを用います。
2693
2694 @node 奏法スクリプト
2695 @subsection 奏法スクリプト
2696 @translationof The Articulate script
2697
2698 奏法スクリプトを用いることにより、よりリアルな MIDI 出力を得ることができます。@c
2699 奏法スクリプトは、音符を適切な時間比率の音符とスキップで置き換えることにより、@c
2700 アーティキュレーション (スラー、スタッカート等) を考慮に入れようとします。@c
2701 さらに、トリルやターンを展開しようとし、@c
2702 さらにラレンタンドとアッチェレランドを考慮に入れようとします。
2703
2704 奏法スクリプトを使うには、@c
2705 入力ファイルの先頭で以下をインクルードする必要があります。
2706
2707 @example
2708 \include "articulate.ly"
2709 @end example
2710
2711 さらに、@code{\score} セクションで以下のようにします。
2712
2713 @example
2714 \unfoldRepeats \articulate <<
2715         all the rest of the score...
2716 >>
2717 @end example
2718
2719 この方法で入力ファイルを変更すると、@c
2720 出力される楽譜の見た目は著しく変わってしまいますが、@c
2721 標準の @code{\midi} ブロックはより良い MIDI ファイルを作り出します。
2722
2723 奏法スクリプトを機能させるための必須事項ではありませんが、@c
2724 上記の例のように @code{\unfoldRepeats} コマンドを挿入することにより、@c
2725 @notation{トリル} などの短縮記譜の演奏が可能になります。
2726
2727 @knownissues
2728
2729 @c 未訳
2730 Articulate shortens chords といくつかの音楽 (特にオルガン音楽) の演奏は@c
2731 うまくいかないことがあります。
2732
2733
2734 @node 音楽情報を抽出する
2735 @section 音楽情報を抽出する
2736 @translationof Extracting musical information
2737
2738 グラフィカルな出力と MIDI を作り出すことに加えて、@c
2739 LilyPond は音楽情報をテキストとして表示することができます。
2740
2741 @menu
2742 * LilyPond 記譜法を表示する::
2743 * Scheme 音楽表記を表示する::
2744 * 音楽イベントをファイルに保存する::
2745 @end menu
2746
2747 @node LilyPond 記譜法を表示する
2748 @subsection LilyPond 記譜法を表示する
2749 @translationof Displaying LilyPond notation
2750
2751 @funindex \displayLilyMusic
2752
2753 音楽関数 @code{\displayLilyMusic} でLilyPond 記譜法で書かれた音楽表記を@c
2754 表示することが可能ですが、@c
2755 コマンド ラインを使っている場合にのみ可能です。@c
2756 例えば、
2757
2758 @example
2759 @{
2760   \displayLilyMusic \transpose c a, @{ c4 e g a bes @}
2761 @}
2762 @end example
2763
2764 は、以下を表示します:
2765
2766 @example
2767 @{ a,4 cis e fis g @}
2768 @end example
2769
2770 デフォルトでは、LilyPond は上記のメッセージを@c
2771 他のすべてのメッセージと一緒にコンソールに表示します。@c
2772 上記のメッセージを分離して @code{\display@{STUFF@}} の結果を保存するには、@c
2773 出力をファイルにリダイレクトします。
2774
2775 @example
2776 lilypond file.ly >display.txt
2777 @end example
2778
2779
2780 @node Scheme 音楽表記を表示する
2781 @subsection Scheme 音楽表記を表示する
2782 @translationof Displaying scheme music expressions
2783
2784 @rextend{Displaying music expressions} を参照してください。
2785
2786
2787 @node 音楽イベントをファイルに保存する
2788 @subsection 音楽イベントをファイルに保存する
2789 @translationof Saving music events to a file
2790
2791 以下のファイルをインクルードすることにより、@c
2792 音楽イベントをファイルに保存することができます。
2793
2794 @example
2795 \include "event-listener.ly"
2796 @end example
2797
2798 これは譜毎に @file{FILENAME-STAFFNAME.notes} あるいは
2799 @file{FILENAME-unnamed-staff.notes} というファイルを作成します。@c
2800 複数の名前の無い譜がある場合、
2801 すべての譜のイベントが同じファイルに出力されるということに注意してください。@c
2802 出力は以下のようになります:
2803
2804 @example
2805 0.000   note     57       4   p-c 2 12
2806 0.000   dynamic  f
2807 0.250   note     62       4   p-c 7 12
2808 0.500   note     66       8   p-c 9 12
2809 0.625   note     69       8   p-c 14 12
2810 0.750   rest     4
2811 0.750   breathe
2812 @end example
2813
2814 出力はタブ区切り行で、各行には 2 つの固定フィールドがあり、@c
2815 その後にオプション パラメータが続きます。
2816
2817 @example
2818 @var{time}  @var{type}  @var{...params...}
2819 @end example
2820
2821 この情報は、@c
2822 簡単に Python スクリプト等の他のプログラムに読み込ませることができ、@c
2823 LilyPond で音楽分析や録音再生実験を行おうとする研究者にとってとても有用です。
2824
2825
2826 @knownissues
2827
2828 lilypond 音楽イベントすべてが @file{event-listener.ly} で@c
2829 サポートされるわけではありません。@c
2830 @file{event-listener.ly} は、良く作られた @qq{概念実証} を意図しています。
2831
2832 読み取りたい音楽イベントがサポートされていないのであれば、@c
2833 あなたが作業している lilypond ディレクトリに @file{event-listener.ly} を@c
2834 コピーして、編集することで、望みの情報を出力させることができます。