1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
2 @c This file is part of lilypond-learning.tely
4 Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. See TRANSLATION for details.
13 @c Translators: Yoshiki Sawada
14 @c Translation status: post-GDP
17 @node Working on LilyPond projects
18 @chapter Working on LilyPond projects
20 このセクションでは一般的な問題のいくつかを解決または回避する方法について説明し@c
21 ます。あなたにプログラミングの経験があるのなら、ここで取り上げる TIPS の多くは@c
22 当たり前のことに見えるかもしれませんが、それでも本章を読むことをお勧めします。
26 * Suggestions for writing LilyPond input files::
27 * When things don't work::
32 @node Suggestions for writing LilyPond input files
33 @section Suggestions for writing LilyPond input files
35 今やあなたはもっと大きな LilyPond 入力ファイル -- チュートリアルにあるような小@c
36 さな例ではなく、楽曲全体 -- を書き始める準備が整っています。しかしながら、どの@c
39 LilyPond があなたの入力ファイルを理解でき、望みの出力を作り出している限り、あ@c
40 なたの入力ファイルがどのようなものであるかは問題になりません。しかしながら、@c
41 LilyPond 入力ファイルを書いているときに考慮すべきことが他にもいくつかあります。
44 @item あなたがミスをしたとしたらどうでしょうか?LilyPond ファイルの構造はエ@c
45 ラーを見つけ出すことをより容易に (あるいはより困難に) します。
47 @item あなたがあなたの入力ファイルを誰か他の人と共有したいとしたらどうでしょう@c
48 か?実際には、あなたが数年前のあなた自身の入力ファイルを変更したいとしたらどう@c
49 でしょうか?一読して理解可能な LilyPond 入力ファイルがある一方で、あなたを 1
50 時間も悩ます入力ファイルもあるかもしれません。
52 @item あなたがあなたの LilyPond ファイルを最近のバージョンの LilyPond のために@c
53 アップグレードしたいとしたらどうでしょうか?入力構文は LilyPond の改良に合わせ@c
54 てしばしば変更されます。たいていの変更は @code{convert-ly} で自動的に変換でき@c
55 ますが、いくつかの変更は手動での援助を必要とするかもしれません。LilyPond 入力@c
56 ファイルはより容易に (あるいはより困難に) アップグレードできるように構成するこ@c
61 * General suggestions::
62 * Typesetting existing music::
64 * Saving typing with variables and functions::
69 @node General suggestions
70 @subsection General suggestions
72 ここで、あなたが問題を回避したり修正する手助けになる可能性がある提案をいくつか@c
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 のバージョンを宣言することを必要とします。
83 @item @strong{チェックを含めます}: @ruser{Bar and bar number checks},
84 @ruser{Octave checks}。時々チェックを入れておけば、ミスをしたときに素早くそ@c
85 れを見つけ出すことができます。@q{時々} とはどれくらいの頻度なのでしょうか?@c
86 それはその音楽の複雑さ次第です。とても簡単な音楽であれば、たぶん 1 回か 2 回で@c
87 す。とても複雑な音楽であれば、おそらく各小節にチェックを入れます。
89 @item @strong{テキスト 1 行につき 1 小節にします}。音楽自体や望みの出力が複雑@c
90 である場合、1 行に 1 小節だけを記述すると良い場合が多いです。画面スペースを節@c
91 約するために 1 行に 8 小節も詰め込むことは、入力ファイルを @q{デバッグ} しなけ@c
92 ればならない場合に、そうするだけの価値はありません。
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 されているのかを特定することはずっと大変になります。
102 @item @strong{中括弧にインデントを入れる}。多くの問題は @code{@{} と @code{@}}
105 @item セクションや変数の開始時に@strong{明示的に演奏時間を付け加える}。フレー@c
106 ズの開始時に @code{c4 d e} (@code{c d e} ではなく) と記述しておけば、後になっ@c
107 て音楽を再編成する場合に問題の発生を免れる可能性があります。
109 @item 音楽定義から@strong{調整を分離します}。@ref{Saving typing with variables
110 and functions} と @ref{Style sheets} を参照してください。
115 @node Typesetting existing music
116 @subsection Typesetting existing music
118 既存の楽譜からの音楽を入力している (つまり、既存の楽譜の楽曲を譜刻している) の@c
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} を参照してください。
130 @item @code{mBreak = @{ @bs{}break @}} を定義して、写している楽譜が改行するた@c
131 びに @code{@bs{}mBreak} を入力ファイルに挿入します。これにより、LilyPond の音@c
132 楽とオリジナルの音楽を比較することがずっと容易になります。入力した楽譜の校正が@c
133 終わったときに、それらの改行すべてを削除するために @code{mBreak = @{ @}} を定@c
134 義することになるかもしれません。これにより、LilyPond は LilyPond が最適と思う@c
135 場所に改行を入れることができるようになります。
141 @subsection Large projects
143 大きなプロジェクトに取り組んでいるとき、LilyPond 入力ファイルの構造をすっきり@c
148 @item @strong{各ボイスに対して変数を使用して}、定義の中の構造を最小限にしま@c
149 す。@code{@bs{}score} セクションの構造が最も変更される可能性が高い箇所です。一@c
150 方、@code{violin} 定義は LilyPond のバージョンが新しくなっても変更される可能性@c
154 violin = \relative c'' @{
167 @item @strong{調整を音楽定義から分離します}。このことは前にも触れましたが、大@c
168 きなプロジェクトでは絶対に不可欠なことです。@code{fthenp} の定義を変更する必要@c
169 が生じた場合、変更は 1 回で済み、@code{violin} の内部にはまったく手を触れる必@c
174 \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
175 violin = \relative c'' @{
183 @node Saving typing with variables and functions
184 @subsection Saving typing with variables and functions
189 これまでに、以下のような記述を見てきました:
191 @lilypond[quote,verbatim,ragged-right]
192 hornNotes = \relative c'' { c4 b dis c }
200 これは音楽表記を最小化するのに役に立つ可能性があるということに気付くかもしれま@c
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 }
214 さらに、これらの変数 (変数、マクロ、(ユーザ定義) コマンドなどと呼ばれます) を@c
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'' {
223 c4._\dolce b8 a8 g a b |
225 c4.^"hi there!" d8 e' f g d |
226 c,4.\fthenp b8 c4 c-. |
233 \layout{ragged-right=##t}
237 これらの明らかに変数は入力の手間を省くのに役立っています。例えそれらの変数が 1
238 回しか使用されないとしても、変数化することを考慮する価値があります -- 複雑さを@c
239 減らします。以前に使用した変数を使っていない例を見てみましょう。それはとても読@c
243 violin = \relative c'' @{
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-. |
254 @c TODO Replace the following with a better example -td
255 @c Skylining handles this correctly without padText
257 これまでに見てきたのは静的な置き換えです -- LilyPond は @code{@bs{}padText} を@c
258 見ると、それを定義した内容 (つまり、@code{padText=} の右側にあるもの) に置き換@c
261 LilyPond は非静的な置き換えも処理できます (それらを関数と見なすことができます)。
263 @lilypond[quote,verbatim,ragged-right]
265 #(define-music-function (parser location padding) (number?)
267 \once \override TextScript #'padding = #$padding
275 c4^"piu mosso" fis a g
279 変数を使うことは、LilyPond 入力構文に変更があった場合の作業を減らす良い方法で@c
280 もあります (@ref{Updating old input files} を参照してください)。あなたがあなた@c
281 の入力ファイルすべてに使用する単一の定義 (@code{@bs{}dolce} のような) を持って@c
282 いて、構文が変更された場合、すべての @code{.ly} ファイルを変更する代わりに、@c
283 @code{@bs{}dolce} 定義をアップデートするだけで済みます。
287 @subsection Style sheets
289 LilyPond が作り出す出力にはさまざまな変更を加えることができます (詳細は
290 @ref{Tweaking output} を参照してください)。しかしながら、調整を加えたい入力@c
291 ファイルがたくさんあるとしたらどうでしょう?また、単に調整を実際の音楽表記から@c
292 分離したいとしたらどうでしょう?これはとても簡単なことです。
294 以下の例を見てみましょう。@code{@hash{}()} を持つ部分を理解できなくても心配し@c
295 ないでください。@ref{Advanced tweaks with Scheme} で説明されています。
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?)
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 }
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
315 この例には出力が重なり合うという問題がいくつかあり、@ref{Moving objects} のテ@c
316 クニックを使ってそれらを修正しています。そこで、さらに @code{mpdolce} 定義と
317 @code{tempoMark} 定義に関して何かしてみましょう。それらは望みの出力を作り出し@c
318 ていますが、それらを別の楽曲で使いたいとします。単純にそれらを各ファイルの先頭@c
319 部分にカット&ペーストすることもできますが、わずらわしいです。その方法では定義@c
320 は依然として入力ファイルの中にあり、私は個人的にすべての @code{@hash{}()} は何@c
321 か醜いと感じます。それらを他のファイルの中に隠すことにしましょう:
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?)
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 @}
335 今度は音楽ファイルを変更しましょう (このファイルを @file{"music.ly"} として保@c
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.
342 \include "definitions.ly"
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
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?)
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 }
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
372 これで前よりも良くなりましたが、2, 3 の変更を行いましょう。グリッサンド (訳者:
373 第 1 小節の C シャープと A の間) は見え難いので、もっと太く、音符の玉に近づけ@c
374 ましょう。メトロノーム記号を最初の音符の上ではなく、音部記号の上に持ってきま@c
375 しょう。最後に、私の作曲の先生は @q{C} 拍子記号を嫌っているので、@q{4/4} に変@c
378 @file{music.ly} には変更を加えないでください。@file{definitions.ly} を以下のよ@c
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?)
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 @}
394 \override MetronomeMark #'extra-offset = #'(-9 . 0)
395 \override MetronomeMark #'padding = #'3
398 \override TimeSignature #'style = #'numbered
401 \override Glissando #'thickness = #3
402 \override Glissando #'gap = #0.1
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?)
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 }
419 \override MetronomeMark #'extra-offset = #'(-9 . 0)
420 \override MetronomeMark #'padding = #'3
423 \override TimeSignature #'style = #'numbered
426 \override Glissando #'thickness = #3
427 \override Glissando #'gap = #0.1
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
440 もっと良くなりました!今度はこれを公表したいとします。私の作曲の先生は @q{C}
441 拍子記号を嫌っていますが、私は幾分好きです。現在の @code{definitions.ly} を
442 @code{web-publish.ly} にコピーして、それを変更してみましょう。この音楽はスク@c
443 リーンに表示される PDF を作り出すことを意図したものなので、出力のフォントを全@c
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?)
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 @}
457 #(set-global-staff-size 23)
460 \override MetronomeMark #'extra-offset = #'(-9 . 0)
461 \override MetronomeMark #'padding = #'3
466 \override Glissando #'thickness = #3
467 \override Glissando #'gap = #0.1
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?)
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 }
482 #(set-global-staff-size 23)
485 \override MetronomeMark #'extra-offset = #'(-9 . 0)
486 \override MetronomeMark #'padding = #'3
489 \override Glissando #'thickness = #3
490 \override Glissando #'gap = #0.1
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
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} の先頭部分は以下のようになります:
512 \include "definitions.ly"
514 %%% Only uncomment one of these two lines!
515 \include "web-publish.ly"
516 %\include "university.ly"
519 このアプローチは、あなたがパーツ一式を作っているだけだとしても役に立つ可能性が@c
520 あります。私は自分のプロジェクトのための半ダースの @q{スタイル シート} ファイ@c
521 ルを使います。私は各音楽ファイルを @code{@bs{}include "../global.ly"} で始め@c
522 て、@file{gloval.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"
535 @node When things don't work
536 @section When things don't work
539 * Updating old input files::
540 * Troubleshooting (taking it all apart)::
544 @node Updating old input files
545 @subsection Updating old input files
547 LilyPond 入力構文はしばしば変更されます。LilyPond 自体の改良に合わせて、構文
548 (入力言語) も変更されます。これらの変更は入力を読みやすく/書きやすくするために@c
549 行われる場合もありますし、LilyPond の新しい機能のために行われる場合もあります。
551 LilyPond は、このアップデートをより容易にするファイル: @code{convert-ly} と一@c
552 緒に公開されます。このプログラムの実行方法についての詳細は @rprogram{Updating
553 files with convert-ly} を参照してください。
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
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
570 @node Troubleshooting (taking it all apart)
571 @subsection Troubleshooting (taking it all apart)
573 遅かれ早かれ、あなたは LilyPond がコンパイルできないファイルを書くことになりま@c
574 す。LilyPond が返すメッセージはエラーを見つけ出す手助けになるかもしれません@c
575 が、多くの場合、問題の原因を探し出すために調査を行う必要があります。
577 この目的のための最も強力なツールは 1 行コメント (@code{%} で記述します) とブ@c
578 ロック コメント (@code{%@{ ... %@}} で記述します) です。問題がどこにあるかわか@c
579 らない場合、入力ファイルの大きな一部分をコメント アウトすることから始めます。@c
580 あるセクションをコメント アウトして、そのファイルを再びコンパイルしてみます。@c
581 コンパイルが通ったのなら、問題は今コメント アウトした部分の中にあります。コン@c
582 パイルが通らなかった場合は、コンパイルが通るようになるまでコメント アウトした@c
585 極端な場合、最終的に以下のようになるかもしれません:
599 (言い換えると、何の音楽も持たないファイルです)
601 こうなったとしても、あきらめないでください。少しだけコメントを外して -- 例え@c
602 ば、バス パートを -- コンパイルが通るかどうか試してみます。コンパイルが通らな@c
603 かった場合は、バスの音楽をすべてコメント アウトします (しかし、@code{@bs{}score}
604 の中の @code{@bs{}bass} はコメントを外したままにしておきます)。
607 bass = \relative c' @{
615 そして、問題を起こしている行を見つけ出すまで、@code{bass} パートから少しずつコ@c
618 もう 1 つの非常に有用なデバッグ テクニックは @ref{Minimal examples} を構築する@c
622 @node Minimal examples
623 @subsection Minimal examples
625 最小化例は可能な限り小さな例のことです。最小化例は長い例よりも理解することが@c
626 ずっと容易です。最小化例は以下の目的で使用されます:
630 @item メーリング リストに援助要請を送る
631 @item @uref{http://lsr.dsi.unimi.it/,LilyPond Snippet Repository} に例を追加する
634 可能な限り小さな例を構築するための規則はとても単純です: 必要の無いものはすべて@c
635 削除する。ファイルの不要な部分を削除しようとしているとき、実際に削除する代わり@c
636 にコメント アウトを使用するというのはとても良いアイディアです。そうしておけ@c
637 ば、ある行が実際には必要だということがわかった場合に、その行をゼロから入力する@c
640 @qq{可能な限り小さく} という規則には 2 つの例外があります:
643 @item @code{\version} 番号を含める。
644 @item 可能であれば、例の先頭で @code{@bs{}paper@{ ragged-right=@hash{}@hash{}t
648 最小化例の要点は読みやすくするということです:
651 @item 複雑な音符、調子、拍子を使うことを避ける -- それらの要素の振る舞いについ@c
653 @item @code{@bs{}override} コマンドを使わない -- それがその例のポイントでない@c
657 @node Scores and parts
658 @section Scores and parts
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
665 オーケストラ音楽では、すべての音符は 2 回譜刻されます。1 回は演奏家のための@c
666 パート譜で、1 回は指揮者のための総譜で譜刻されます。変数を使うことで二度手間を@c
667 避けることができます。音楽は 1 回、変数に入力されます。その変数の内容は、パー@c
668 ト譜と総譜の両方を生成するために使用されます。
670 音符を特別なファイルの中に定義すると便利です。例えば、ファイル
671 @code{horn-music.ly} は以下のホルン/@/バスーン デュオのパートを保持していると@c
675 hornNotes = \relative c @{
682 個々のパートは、ファイルの中に以下の記述をすることによって作り出されます:
685 \include "horn-music.ly"
687 instrument = "Horn in F"
691 \transpose f c' \hornNotes
698 \include "horn-music.ly"
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
709 @lilypond[quote,ragged-right]
710 \transpose f c' \relative c {
716 アンサンブルでは、しばしばボイスの 1 つが何小節も演奏されないことがあります。@c
717 これは特別な休符 -- 複小節休符 -- によって示されます。これは大文字の @code{R}
718 とその後に続く演奏時間 (全音符には @code{1}、半音符には @code{2} などです) で@c
719 入力されます。この演奏時間に掛け算を行うことによって、さらに長い休符を構築する@c
720 ことができます。例えば、以下の休符は 2/4 拍子で 3 小節分の長さになります:
726 この部分を譜刻するとき、複小節休符を圧縮する必要があります。これは以下のラン-@c
727 タイム変数を設定することによって行います:
730 \set Score.skipBars = ##t
734 このコマンドは @code{Score} コンテキストの中にあるプロパティ @code{skipBars}
735 を真 (@code{@hash{}@hash{}t}) にセットします。この休符とオプションを上記の音楽@c
736 の先頭に追加することによって、以下のような結果になります:
738 @lilypond[quote,ragged-right]
739 \transpose f c' \relative c {
741 \set Score.skipBars = ##t
747 楽譜はすべての音楽を一緒にすることによって作り出されます。他のボイスはファイル
748 @file{bassoon-music.ly} の中の @code{bassoonNotes} の中にあると仮定すると、楽@c
752 \include "bassoon-music.ly"
753 \include "horn-music.ly"
756 \new Staff \hornNotes
757 \new Staff \bassoonNotes
764 @lilypond[quote,ragged-right]
772 r4 d,8 f | gis4 c | b bes |
773 a8 e f4 | g d | gis f