]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/ja/learning/working.itely
Web-zh: fix menu.
[lilypond.git] / Documentation / ja / learning / working.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
2
3 @ignore
4     Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  For details, see the Contributors'
8     Guide, node Updating translation committishes..
9 @end ignore
10
11 @c \version "2.13.36"
12
13
14 @c Translators: Yoshiki Sawada
15 @c Translation status: post-GDP
16
17
18 @node LilyPond プロジェクトに取り組む
19 @chapter LilyPond プロジェクトに取り組む
20 @translationof Working on LilyPond projects
21
22 このセクションでは一般的な問題のいくつかを解決または回避する方法について説明し@c
23 ます。あなたにプログラミングの経験があるのなら、ここで取り上げる TIPS の多くは@c
24 当たり前のことに見えるかもしれませんが、それでも本章を読むことをお勧めします。
25
26
27 @menu
28 * LilyPond 入力ファイルの記述に対する提案::
29 * うまくいかないとき::
30 * 楽譜とパート::
31 @end menu
32
33
34 @node LilyPond 入力ファイルの記述に対する提案
35 @section LilyPond 入力ファイルの記述に対する提案
36 @translationof Suggestions for writing LilyPond input files
37
38 今やあなたはもっと大きな LilyPond 入力ファイル -- チュートリアルにあるような小@c
39 さな例ではなく、楽曲全体 -- を書き始める準備が整っています。しかしながら、どの@c
40 ように書き進めていくべきなのでしょうか?
41
42 LilyPond があなたの入力ファイルを理解でき、望みの出力を作り出している限り、あ@c
43 なたの入力ファイルがどのようなものであるかは問題になりません。しかしながら、@c
44 LilyPond 入力ファイルを書いているときに考慮すべきことが他にもいくつかあります。
45
46 @itemize
47 @item あなたがミスをしたとしたらどうでしょうか?LilyPond ファイルの構造はエ@c
48 ラーを見つけ出すことをより容易に (あるいはより困難に) します。
49
50 @item あなたがあなたの入力ファイルを誰か他の人と共有したいとしたらどうでしょう@c
51 か?実際には、あなたが数年前のあなた自身の入力ファイルを変更したいとしたらどう@c
52 でしょうか?一読して理解可能な LilyPond 入力ファイルがある一方で、あなたを 1 
53 時間も悩ます入力ファイルもあるかもしれません。
54
55 @item あなたがあなたの LilyPond ファイルを最近のバージョンの LilyPond のために@c
56 アップグレードしたいとしたらどうでしょうか?入力構文は LilyPond の改良に合わせ@c
57 てしばしば変更されます。たいていの変更は @code{convert-ly} で自動的に変換でき@c
58 ますが、いくつかの変更は手動での援助を必要とするかもしれません。LilyPond 入力@c
59 ファイルはより容易に (あるいはより困難に) アップグレードできるように構成するこ@c
60 とができます。
61 @end itemize
62
63 @menu
64 * 一般的な提案::
65 * 既存の音楽を譜刻する::
66 * 大きなプロジェクト::
67 * 変数と関数を用いて入力の手間を省く::
68 * スタイル シート::
69 @end menu
70
71
72 @node 一般的な提案
73 @subsection 一般的な提案
74 @translationof General suggestions
75
76 ここで、あなたが問題を回避したり修正する手助けになる可能性がある提案をいくつか@c
77 挙げます:
78
79 @itemize
80 @item @strong{すべてのファイルに @code{@bs{}version} 番号を含めます}。テンプ@c
81 レートはすべて @code{@bs{}version} 情報を保持しているということに注意してくだ@c
82 さい。常に @code{@bs{}version} を含めること -- ファイルの大小にかかわらず -- 
83 を強く推奨します。個人的な経験から言って、数年前に使っていた LilyPond のバー@c
84 ジョンを思い出そうとすることは大変なことです。@command{convert-ly} は使用した 
85 LilyPond のバージョンを宣言することを必要とします。
86
87 @item @strong{チェックを含めます}: @ruser{Bar and bar number checks}, 
88 @ruser{Octave checks}。時々チェックを入れておけば、ミスをしたときに素早くそ@c
89 れを見つけ出すことができます。@q{時々} とはどれくらいの頻度なのでしょうか?@c
90 それはその音楽の複雑さ次第です。とても簡単な音楽であれば、たぶん 1 回か 2 回で@c
91 す。とても複雑な音楽であれば、おそらく各小節にチェックを入れます。
92
93 @item @strong{テキスト 1 行につき 1 小節にします}。音楽自体や望みの出力が複雑@c
94 である場合、1 行に 1 小節だけを記述すると良い場合が多いです。画面スペースを節@c
95 約するために 1 行に 8 小節も詰め込むことは、入力ファイルを @q{デバッグ} しなけ@c
96 ればならない場合に、そうするだけの価値はありません。
97
98 @item @strong{入力ファイルにコメントをつけます}。コメントとして小節番号 (時々) 
99 や音楽テーマへの参照 (@q{second theme in violins}, @q{fourth variation} 
100 (@q{ヴァイオリンの第 2 テーマ}, @q{第 4 ヴァイオリン}) など) を使用します。@c
101 初めて楽曲を書いているときはコメントをつける必要は無いかもしれません。しかしな@c
102 がら、数年後に何か変更を加えたいと思った場合や、ソースを友人に渡す場合、あなた@c
103 がファイルにコメントをつけていなければ、あなたの意図やファイルがどのように構成@c
104 されているのかを特定することはずっと大変になります。
105
106 @item @strong{中括弧にインデントを入れる}。多くの問題は @code{@{} と @code{@}} 
107 の数が食い違うことによって生じます。
108
109 @item セクションや変数の開始時に@strong{明示的に演奏時間を付け加える}。フレー@c
110 ズの開始時に @code{c4 d e} (@code{c d e} ではなく) と記述しておけば、後になっ@c
111 て音楽を再編成する場合に問題の発生を免れる可能性があります。
112
113 @item 音楽定義から@strong{調整を分離します}。@ref{変数と関数を用いて入力の手間を省く} と @ref{スタイル シート} を参照してください。
114
115 @end itemize
116
117
118 @node 既存の音楽を譜刻する
119 @subsection 既存の音楽を譜刻する
120 @translationof Typesetting existing music
121
122 既存の楽譜からの音楽を入力している (つまり、既存の楽譜の楽曲を譜刻している) の@c
123 なら、
124
125 @itemize
126
127 @item 1 回につき 1 つのシステム (訳者: システムとは譜の集まりのこと。例えば、@c
128 ピアノ譜での 1 システムとは、右手譜 1 小節とそれに対応する左手譜 1 小節) を入@c
129 力し (しかし、それでもテキスト 1 行につき 1 小節だけにします)、それを終えたと@c
130 きに各システムをチェックします。処理をスピード アップさせるために 
131 @code{showLastLength} プロパティや @code{showFirstLength} プロパティを使うこと@c
132 になるかもしれません -- @ruser{Skipping corrected music} を参照してください。
133
134 @item @code{mBreak = @{ @bs{}break @}} を定義して、写している楽譜が改行するた@c
135 びに @code{@bs{}mBreak} を入力ファイルに挿入します。これにより、LilyPond の音@c
136 楽とオリジナルの音楽を比較することがずっと容易になります。入力した楽譜の校正が@c
137 終わったときに、それらの改行すべてを削除するために @code{mBreak = @{ @}} を定@c
138 義することになるかもしれません。これにより、LilyPond は LilyPond が最適と思う@c
139 場所に改行を入れることができるようになります。
140
141 @end itemize
142
143
144 @node 大きなプロジェクト
145 @subsection 大きなプロジェクト
146 @translationof Large projects
147
148 大きなプロジェクトに取り組んでいるとき、LilyPond 入力ファイルの構造をすっきり@c
149 させておくことが不可欠です。
150
151 @itemize
152
153 @item @strong{各ボイスに対して変数を使用して}、定義の中の構造を最小限にしま@c
154 す。@code{@bs{}score} セクションの構造が最も変更される可能性が高い箇所です。一@c
155 方、@code{violin} 定義は LilyPond のバージョンが新しくなっても変更される可能性@c
156 はまずありません。
157
158 @example
159 violin = \relative c'' @{
160 g4 c'8. e16
161 @}
162 ...
163 \score @{
164   \new GrandStaff @{
165     \new Staff @{
166       \violin
167     @}
168   @}
169 @}
170 @end example
171
172 @item @strong{調整を音楽定義から分離します}。このことは前にも触れましたが、大@c
173 きなプロジェクトでは絶対に不可欠なことです。@code{fthenp} の定義を変更する必要@c
174 が生じた場合、変更は 1 回で済み、@code{violin} の内部にはまったく手を触れる必@c
175 要がありません。
176
177 @example
178 fthenp = _\markup@{
179   \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
180 violin = \relative c'' @{
181 g4\fthenp c'8. e16
182 @}
183 @end example
184
185 @end itemize
186
187
188 @node 変数と関数を用いて入力の手間を省く
189 @subsection 変数と関数を用いて入力の手間を省く
190 @translationof Saving typing with variables and functions
191
192 @cindex variables
193 @cindex variables
194
195 これまでに、以下のような記述を見てきました:
196
197 @lilypond[quote,verbatim,ragged-right]
198 hornNotes = \relative c'' { c4 b dis c }
199 \score {
200   {
201     \hornNotes
202   }
203 }
204 @end lilypond
205
206 これは音楽表記を最小化するのに役に立つ可能性があるということに気付くかもしれま@c
207 せん:
208
209 @lilypond[quote,verbatim,ragged-right]
210 fragmentA = \relative c'' { a4 a8. b16 }
211 fragmentB = \relative c'' { a8. gis16 ees4 }
212 violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
213 \score {
214   {
215     \violin
216   }
217 }
218 @end lilypond
219
220 さらに、これらの変数 (変数、マクロ、(ユーザ定義) コマンドなどと呼ばれます) を@c
221 調整のために使うこともできます:
222
223 @lilypond[quote,verbatim,ragged-right]
224 dolce = \markup{ \italic \bold dolce }
225 padText = { \once \override TextScript #'padding = #5.0 }
226 fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
227 violin = \relative c'' {
228   \repeat volta 2 {
229     c4._\dolce b8 a8 g a b |
230     \padText
231     c4.^"hi there!" d8 e' f g d |
232     c,4.\fthenp b8 c4 c-. |
233   }
234 }
235 \score {
236   {
237     \violin
238   }
239 \layout{ragged-right=##t}
240 }
241 @end lilypond
242
243 これらの明らかに変数は入力の手間を省くのに役立っています。例えそれらの変数が 1 
244 回しか使用されないとしても、変数化することを考慮する価値があります -- 複雑さを@c
245 減らします。以前に使用した変数を使っていない例を見てみましょう。それはとても読@c
246 み難く、特に最後の行が読み難いです。
247
248 @example
249 violin = \relative c'' @{
250   \repeat volta 2 @{
251     c4._\markup@{ \italic \bold dolce @} b8 a8 g a b |
252     \once \override TextScript #'padding = #5.0
253     c4.^"hi there!" d8 e' f g d |
254     c,4.\markup@{ \dynamic f \italic \small @{ 2nd @}
255       \hspace #0.1 \dynamic p @} b8 c4 c-. |
256   @}
257 @}
258 @end example
259
260 @c TODO Replace the following with a better example  -td
261 @c Skylining handles this correctly without padText
262
263 これまでに見てきたのは静的な置き換えです -- LilyPond は @code{@bs{}padText} を@c
264 見ると、それを定義した内容 (つまり、@code{padText=} の右側にあるもの) に置き換@c
265 えます。
266
267 LilyPond は非静的な置き換えも処理できます (それらを関数と見なすことができます)。
268
269 @lilypond[quote,verbatim,ragged-right]
270 padText =
271 #(define-music-function (parser location padding) (number?)
272   #{
273     \once \override TextScript #'padding = #$padding
274   #})
275
276 \relative c''' {
277   c4^"piu mosso" b a b
278   \padText #1.8
279   c4^"piu mosso" d e f
280   \padText #2.6
281   c4^"piu mosso" fis a g
282 }
283 @end lilypond
284
285 変数を使うことは、LilyPond 入力構文に変更があった場合の作業を減らす良い方法で@c
286 もあります (@ref{古い入力ファイルをアップデートする} を参照してください)。あなたがあなた@c
287 の入力ファイルすべてに使用する単一の定義 (@code{@bs{}dolce} のような) を持って@c
288 いて、構文が変更された場合、すべての @code{.ly} ファイルを変更する代わりに、@c
289 @code{@bs{}dolce} 定義をアップデートするだけで済みます。
290
291
292 @node スタイル シート
293 @subsection スタイル シート
294 @translationof Style sheets
295
296 LilyPond が作り出す出力にはさまざまな変更を加えることができます (詳細は 
297 @ref{出力を調整する} を参照してください)。しかしながら、調整を加えたい入力@c
298 ファイルがたくさんあるとしたらどうでしょう?また、単に調整を実際の音楽表記から@c
299 分離したいとしたらどうでしょう?これはとても簡単なことです。
300
301 以下の例を見てみましょう。@code{@hash{}()} を持つ部分を理解できなくても心配し@c
302 ないでください。@ref{Scheme を用いた高度な調整} で説明されています。
303
304 @lilypond[quote,verbatim,ragged-right]
305 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
306   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
307 tempoMark = #(define-music-function (parser location markp) (string?)
308 #{
309   \once \override Score . RehearsalMark #'self-alignment-X = #left
310   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
311   \mark \markup { \bold $markp }
312 #})
313
314 \relative c'' {
315   \tempo 4=50
316   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
317   \tempoMark "Poco piu mosso"
318   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
319 }
320 @end lilypond
321
322 この例には出力が重なり合うという問題がいくつかあり、@ref{オブジェクトを移動させる} のテ@c
323 クニックを使ってそれらを修正しています。そこで、さらに @code{mpdolce} 定義と 
324 @code{tempoMark} 定義に関して何かしてみましょう。それらは望みの出力を作り出し@c
325 ていますが、それらを別の楽曲で使いたいとします。単純にそれらを各ファイルの先頭@c
326 部分にカット&ペーストすることもできますが、わずらわしいです。その方法では定義@c
327 は依然として入力ファイルの中にあり、私は個人的にすべての @code{@hash{}()} は何@c
328 か醜いと感じます。それらを他のファイルの中に隠すことにしましょう:
329
330 @example
331 %%% save this to a file called "definitions.ly"
332 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
333   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
334 tempoMark = #(define-music-function (parser location markp) (string?)
335 #@{
336   \once \override Score . RehearsalMark #'self-alignment-X = #left
337   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
338   \mark \markup @{ \bold $markp @}
339 #@})
340 @end example
341
342 今度は音楽ファイルを変更しましょう (このファイルを @file{"music.ly"} として保@c
343 存しましょう)。
344
345 @c  We have to do this awkward example/lilypond-non-verbatim
346 @c  because we can't do the \include stuff in the manual.
347
348 @example
349 \include "definitions.ly"
350
351 \relative c'' @{
352   \tempo 4=50
353   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
354   \once \override Score.RehearsalMark #'padding = #2.0
355   \tempoMark "Poco piu mosso"
356   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
357 @}
358 @end example
359
360 @lilypond[quote,ragged-right]
361 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
362   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
363 tempoMark = #(define-music-function (parser location markp) (string?)
364 #{
365   \once \override Score . RehearsalMark #'self-alignment-X = #left
366   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
367   \mark \markup { \bold $markp }
368 #})
369
370 \relative c'' {
371   \tempo 4=50
372   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
373   \once \override Score.RehearsalMark #'padding = #2.0
374   \tempoMark "Poco piu mosso"
375   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
376 }
377 @end lilypond
378
379 これで前よりも良くなりましたが、2, 3 の変更を行いましょう。グリッサンド (訳者: 
380 第 1 小節の C シャープと A の間) は見え難いので、もっと太く、音符の玉に近づけ@c
381 ましょう。メトロノーム記号を最初の音符の上ではなく、音部記号の上に持ってきま@c
382 しょう。最後に、私の作曲の先生は @q{C} 拍子記号を嫌っているので、@q{4/4} に変@c
383 更した方が良さそうです。
384
385 @file{music.ly} には変更を加えないでください。@file{definitions.ly} を以下のよ@c
386 うに書き換えます:
387
388 @example
389 %%%  definitions.ly
390 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
391   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
392 tempoMark = #(define-music-function (parser location markp) (string?)
393 #@{
394   \once \override Score . RehearsalMark #'self-alignment-X = #left
395   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
396   \mark \markup @{ \bold $markp @}
397 #@})
398
399 \layout@{
400   \context @{ \Score
401     \override MetronomeMark #'extra-offset = #'(-9 . 0)
402     \override MetronomeMark #'padding = #'3
403   @}
404   \context @{ \Staff
405     \override TimeSignature #'style = #'numbered
406   @}
407   \context @{ \Voice
408     \override Glissando #'thickness = #3
409     \override Glissando #'gap = #0.1
410   @}
411 @}
412 @end example
413
414 @lilypond[quote,ragged-right]
415 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
416   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
417 tempoMark = #(define-music-function (parser location markp) (string?)
418 #{
419   \once \override Score . RehearsalMark #'self-alignment-X = #left
420   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
421   \mark \markup { \bold $markp }
422 #})
423
424 \layout{
425   \context { \Score
426     \override MetronomeMark #'extra-offset = #'(-9 . 0)
427     \override MetronomeMark #'padding = #'3
428   }
429   \context { \Staff
430     \override TimeSignature #'style = #'numbered
431   }
432   \context { \Voice
433     \override Glissando #'thickness = #3
434     \override Glissando #'gap = #0.1
435   }
436 }
437
438 \relative c'' {
439   \tempo 4=50
440   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
441   \once \override Score.RehearsalMark #'padding = #2.0
442   \tempoMark "Poco piu mosso"
443   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
444 }
445 @end lilypond
446
447 もっと良くなりました!今度はこれを公表したいとします。私の作曲の先生は @q{C} 
448 拍子記号を嫌っていますが、私は幾分好きです。現在の @code{definitions.ly} を 
449 @code{web-publish.ly} にコピーして、それを変更してみましょう。この音楽はスク@c
450 リーンに表示される PDF を作り出すことを意図したものなので、出力のフォントを全@c
451 体に大きくすることにします。
452
453 @example
454 %%%  definitions.ly
455 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
456   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
457 tempoMark = #(define-music-function (parser location markp) (string?)
458 #@{
459   \once \override Score . RehearsalMark #'self-alignment-X = #left
460   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
461   \mark \markup @{ \bold $markp @}
462 #@})
463
464 #(set-global-staff-size 23)
465 \layout@{
466   \context @{ \Score
467     \override MetronomeMark #'extra-offset = #'(-9 . 0)
468     \override MetronomeMark #'padding = #'3
469   @}
470   \context @{ \Staff
471   @}
472   \context @{ \Voice
473     \override Glissando #'thickness = #3
474     \override Glissando #'gap = #0.1
475   @}
476 @}
477 @end example
478
479 @lilypond[quote,ragged-right]
480 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
481   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
482 tempoMark = #(define-music-function (parser location markp) (string?)
483 #{
484   \once \override Score . RehearsalMark #'self-alignment-X = #left
485   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
486   \mark \markup { \bold $markp }
487 #})
488
489 #(set-global-staff-size 23)
490 \layout{
491   \context { \Score
492     \override MetronomeMark #'extra-offset = #'(-9 . 0)
493     \override MetronomeMark #'padding = #'3
494   }
495   \context { \Voice
496     \override Glissando #'thickness = #3
497     \override Glissando #'gap = #0.1
498   }
499 }
500
501 \relative c'' {
502   \tempo 4=50
503   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
504   \once \override Score.RehearsalMark #'padding = #2.0
505   \tempoMark "Poco piu mosso"
506   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
507 }
508 @end lilypond
509
510 音楽ファイルの中では、単に @code{@bs{}include "definitions.ly"} を 
511 @code{@bs{}include "web-publish.ly"} に置き換えるだけです。もちろん、これを@c
512 もっと便利なようにすることができます。@file{definitions.ly} ファイルには 
513 @code{mpdolce} と @code{tempoMark} の定義だけを持たせて、@file{web-publish.ly} 
514 ファイルには上で載せた @code{@bs{}layout} セクションだけを持たせ、@c
515 @file{university.ly} ファイルには私の先生の好む出力を作り出すための調整だけを@c
516 持たせます。@file{music.ly} の先頭部分は以下のようになります:
517
518 @example
519 \include "definitions.ly"
520
521 %%%  Only uncomment one of these two lines!
522 \include "web-publish.ly"
523 %\include "university.ly"
524 @end example
525
526 このアプローチは、あなたがパーツ一式を作っているだけだとしても役に立つ可能性が@c
527 あります。私は自分のプロジェクトのための半ダースの @q{スタイル シート} ファイ@c
528 ルを使います。私は各音楽ファイルを @code{@bs{}include "../global.ly"} で始め@c
529 て、@file{gloval.ly} には以下の内容を記述しています:
530
531 @example
532 %%%   global.ly
533 \version @w{"@version{}"}
534 #(ly:set-option 'point-and-click #f)
535 \include "../init/init-defs.ly"
536 \include "../init/init-layout.ly"
537 \include "../init/init-headers.ly"
538 \include "../init/init-paper.ly"
539 @end example
540
541
542 @node うまくいかないとき
543 @section うまくいかないとき
544 @translationof When things don't work
545
546 @menu
547 * 古い入力ファイルをアップデートする::
548 * トラブルシューティング (すべてをバラバラにする)::
549 * 最小化例::
550 @end menu
551
552 @node 古い入力ファイルをアップデートする
553 @subsection 古い入力ファイルをアップデートする
554 @translationof Updating old input files
555
556 LilyPond 入力構文はしばしば変更されます。LilyPond 自体の改良に合わせて、構文 
557 (入力言語) も変更されます。これらの変更は入力を読みやすく/書きやすくするために@c
558 行われる場合もありますし、LilyPond の新しい機能のために行われる場合もあります。
559
560 LilyPond は、このアップデートをより容易にするファイル: @code{convert-ly} と一@c
561 緒に公開されます。このプログラムの実行方法についての詳細は @rprogram{convert-ly を使ってファイルを更新する} を参照してください。
562
563 残念なことに、@code{convert-ly} はすべての入力構文の変更を処理できるわけではあ@c
564 りません。単純な探索-置換 (@code{raggedright} が @code{ragged-right} になった@c
565 など) を処理しますが、複雑すぎる変更もあります。@code{convert-ly} が処理できな@c
566 い構文の変更は @rprogram{convert-ly を使ってファイルを更新する} にリストアップされて@c
567 います。
568
569 例えば、LilyPond 2.4 以前では、アクセントと非英語文字 -- 例えば、@c
570 @code{No@bs{}"el} (これは @q{クリスマス} に対応するフランス語となります) -- は 
571 LaTex を使って入力していました。LilyPond 2.6 以降では、特殊文字 @code{ë} を 
572 UTF-8 キャラクタとして直接 LilyPond ファイルに入力するようになりました。@c
573 @code{convert-ly} はすべての LaTex 特殊文字を UTF-8 キャラクタに変更することは@c
574 できません。その場合、あなたが手動で古い LilyPond 入力ファイルをアップデートす@c
575 る必要があります。
576
577
578 @node トラブルシューティング (すべてをバラバラにする)
579 @subsection トラブルシューティング (すべてをバラバラにする)
580 @translationof Troubleshooting (taking it all apart)
581
582 遅かれ早かれ、あなたは LilyPond がコンパイルできないファイルを書くことになりま@c
583 す。LilyPond が返すメッセージはエラーを見つけ出す手助けになるかもしれません@c
584 が、多くの場合、問題の原因を探し出すために調査を行う必要があります。
585
586 この目的のための最も強力なツールは 1 行コメント (@code{%} で記述します) とブ@c
587 ロック コメント (@code{%@{ ... %@}} で記述します) です。問題がどこにあるかわか@c
588 らない場合、入力ファイルの大きな一部分をコメント アウトすることから始めます。@c
589 あるセクションをコメント アウトして、そのファイルを再びコンパイルしてみます。@c
590 コンパイルが通ったのなら、問題は今コメント アウトした部分の中にあります。コン@c
591 パイルが通らなかった場合は、コンパイルが通るようになるまでコメント アウトした@c
592 ままにしておきます。
593
594 極端な場合、最終的に以下のようになるかもしれません:
595
596 @example
597 \score @{
598   <<
599     % \melody
600     % \harmony
601     % \bass
602   >>
603   \layout@{@}
604 @}
605 @end example
606
607 @noindent
608 (言い換えると、何の音楽も持たないファイルです)
609
610 こうなったとしても、あきらめないでください。少しだけコメントを外して -- 例え@c
611 ば、バス パートを -- コンパイルが通るかどうか試してみます。コンパイルが通らな@c
612 かった場合は、バスの音楽をすべてコメント アウトします (しかし、@code{@bs{}score} 
613 の中の @code{@bs{}bass} はコメントを外したままにしておきます)。
614
615 @example
616 bass = \relative c' @{
617 %@{
618   c4 c c c
619   d d d d
620 %@}
621 @}
622 @end example
623
624 そして、問題を起こしている行を見つけ出すまで、@code{bass} パートから少しずつコ@c
625 メントを外していきます。
626
627 もう 1 つの非常に有用なデバッグ テクニックは @ref{最小化例} を構築する@c
628 ことです。
629
630
631 @node 最小化例
632 @subsection 最小化例
633 @translationof Minimal examples
634
635 最小化例は可能な限り小さな例のことです。最小化例は長い例よりも理解することが@c
636 ずっと容易です。最小化例は以下の目的で使用されます:
637
638 @itemize
639 @item バグ レポート
640 @item メーリング リストに援助要請を送る
641 @item @uref{http://lsr.dsi.unimi.it/,LilyPond Snippet Repository} に例を追加する
642 @end itemize
643
644 可能な限り小さな例を構築するための規則はとても単純です: 必要の無いものはすべて@c
645 削除する。ファイルの不要な部分を削除しようとしているとき、実際に削除する代わり@c
646 にコメント アウトを使用するというのはとても良いアイディアです。そうしておけ@c
647 ば、ある行が実際には必要だということがわかった場合に、その行をゼロから入力する@c
648 代わりに、コメントを外すだけで済みます。
649
650 @qq{可能な限り小さく} という規則には 2 つの例外があります:
651
652 @itemize
653 @item @code{\version} 番号を含める。
654 @item 可能であれば、例の先頭で @code{@bs{}paper@{ ragged-right=@hash{}@hash{}t 
655 @}} を使う。
656 @end itemize
657
658 最小化例の要点は読みやすくするということです:
659
660 @itemize
661 @item 複雑な音符、調子、拍子を使うことを避ける -- それらの要素の振る舞いについ@c
662 て何かを示そうとしているのでない限り
663 @item @code{@bs{}override} コマンドを使わない -- それがその例のポイントでない@c
664 限り
665 @end itemize
666
667 @node 楽譜とパート
668 @section 楽譜とパート
669 @translationof Scores and parts
670
671 TODO: this is really old stuff from the really old tutorial.
672 Rewrite, fix, etc.  Or maybe delete entirely.  -gp
673 Include section on tags   -td
674 and then move to section 5. Working ...  -td
675
676 オーケストラ音楽では、すべての音符は 2 回譜刻されます。1 回は演奏家のための@c
677 パート譜で、1 回は指揮者のための総譜で譜刻されます。変数を使うことで二度手間を@c
678 避けることができます。音楽は 1 回、変数に入力されます。その変数の内容は、パー@c
679 ト譜と総譜の両方を生成するために使用されます。
680
681 音符を特別なファイルの中に定義すると便利です。例えば、ファイル 
682 @code{horn-music.ly} は以下のホルン/@/バスーン デュオのパートを保持していると@c
683 します:
684
685 @example
686 hornNotes = \relative c @{
687   \time 2/4
688   r4 f8 a cis4 f e d
689 @}
690 @end example
691
692 @noindent
693 個々のパートは、ファイルの中に以下の記述をすることによって作り出されます:
694
695 @example
696 \include "horn-music.ly"
697 \header @{
698   instrument = "Horn in F"
699 @}
700
701 @{
702  \transpose f c' \hornNotes
703 @}
704 @end example
705
706 以下の行:
707
708 @example
709 \include "horn-music.ly"
710 @end example
711
712 @noindent
713 は、ファイルの中でその行が置かれている場所で、@file{horn-music.ly} の内容に置@c
714 き換わり、@code{hornNotes} はその後に定義されます。コマンド @code{@bs{}transpose 
715 f@tie{}c'} は、引数 @code{@bs{}hornNotes} は 5 度上へ移調すべきであるというこ@c
716 とを示しています。@code{f} の音は譜面に表記された @code{c'} で表され、これは通@c
717 常のフレンチ ホルンを F にチューニングすることに相当します。この移調により出力@c
718 は以下のようになります:
719
720 @lilypond[quote,ragged-right]
721 \transpose f c' \relative c {
722   \time 2/4
723   r4 f8 a cis4 f e d
724 }
725 @end lilypond
726
727 アンサンブルでは、しばしばボイスの 1 つが何小節も演奏されないことがあります。@c
728 これは特別な休符 -- 複小節休符 -- によって示されます。これは大文字の @code{R} 
729 とその後に続く演奏時間 (全音符には @code{1}、半音符には @code{2} などです) で@c
730 入力されます。この演奏時間に掛け算を行うことによって、さらに長い休符を構築する@c
731 ことができます。例えば、以下の休符は 2/4 拍子で 3 小節分の長さになります:
732
733 @example
734 R2*3
735 @end example
736
737 この部分を譜刻するとき、複小節休符を圧縮する必要があります。これは以下のラン-@c
738 タイム変数を設定することによって行います:
739
740 @example
741 \set Score.skipBars = ##t
742 @end example
743
744 @noindent
745 このコマンドは @code{Score} コンテキストの中にあるプロパティ @code{skipBars} 
746 を真 (@code{@hash{}@hash{}t}) にセットします。この休符とオプションを上記の音楽@c
747 の先頭に追加することによって、以下のような結果になります:
748
749 @lilypond[quote,ragged-right]
750 \transpose f c' \relative c {
751   \time 2/4
752   \set Score.skipBars = ##t
753   R2*3
754   r4 f8 a cis4 f e d
755 }
756 @end lilypond
757
758 楽譜はすべての音楽を一緒にすることによって作り出されます。他のボイスはファイル 
759 @file{bassoon-music.ly} の中の @code{bassoonNotes} の中にあると仮定すると、楽@c
760 譜は以下のような記述で作られます:
761
762 @example
763 \include "bassoon-music.ly"
764 \include "horn-music.ly"
765
766 <<
767   \new Staff \hornNotes
768   \new Staff \bassoonNotes
769 >>
770 @end example
771
772 @noindent
773 そして、以下のような楽譜になります:
774
775 @lilypond[quote,ragged-right]
776 \relative c <<
777   \new Staff {
778     \time 2/4 R2*3
779     r4 f8 a cis4 f e d
780   }
781   \new Staff {
782     \clef bass
783     r4 d,8 f | gis4 c | b bes |
784     a8 e f4 | g d | gis f
785   }
786 >>
787 @end lilypond
788
789