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