1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
4 Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea
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..
14 @c Translators: Yoshiki Sawada
15 @c Translation status: post-GDP
18 @node LilyPond プロジェクトに取り組む
19 @chapter LilyPond プロジェクトに取り組む
20 @translationof Working on LilyPond projects
22 このセクションでは一般的な問題のいくつかを解決または回避する方法について説明し@c
23 ます。あなたにプログラミングの経験があるのなら、ここで取り上げる TIPS の多くは@c
24 当たり前のことに見えるかもしれませんが、それでも本章を読むことをお勧めします。
28 * LilyPond 入力ファイルの記述に対する提案::
34 @node LilyPond 入力ファイルの記述に対する提案
35 @section LilyPond 入力ファイルの記述に対する提案
36 @translationof Suggestions for writing LilyPond input files
38 今やあなたはもっと大きな LilyPond 入力ファイル -- チュートリアルにあるような小@c
39 さな例ではなく、楽曲全体 -- を書き始める準備が整っています。しかしながら、どの@c
42 LilyPond があなたの入力ファイルを理解でき、望みの出力を作り出している限り、あ@c
43 なたの入力ファイルがどのようなものであるかは問題になりません。しかしながら、@c
44 LilyPond 入力ファイルを書いているときに考慮すべきことが他にもいくつかあります。
47 @item あなたがミスをしたとしたらどうでしょうか?LilyPond ファイルの構造はエ@c
48 ラーを見つけ出すことをより容易に (あるいはより困難に) します。
50 @item あなたがあなたの入力ファイルを誰か他の人と共有したいとしたらどうでしょう@c
51 か?実際には、あなたが数年前のあなた自身の入力ファイルを変更したいとしたらどう@c
52 でしょうか?一読して理解可能な LilyPond 入力ファイルがある一方で、あなたを 1
53 時間も悩ます入力ファイルもあるかもしれません。
55 @item あなたがあなたの LilyPond ファイルを最近のバージョンの LilyPond のために@c
56 アップグレードしたいとしたらどうでしょうか?入力構文は LilyPond の改良に合わせ@c
57 てしばしば変更されます。たいていの変更は @code{convert-ly} で自動的に変換でき@c
58 ますが、いくつかの変更は手動での援助を必要とするかもしれません。LilyPond 入力@c
59 ファイルはより容易に (あるいはより困難に) アップグレードできるように構成するこ@c
74 @translationof General suggestions
76 ここで、あなたが問題を回避したり修正する手助けになる可能性がある提案をいくつか@c
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 のバージョンを宣言することを必要とします。
87 @item @strong{チェックを含めます}: @ruser{Bar and bar number checks},
88 @ruser{Octave checks}。時々チェックを入れておけば、ミスをしたときに素早くそ@c
89 れを見つけ出すことができます。@q{時々} とはどれくらいの頻度なのでしょうか?@c
90 それはその音楽の複雑さ次第です。とても簡単な音楽であれば、たぶん 1 回か 2 回で@c
91 す。とても複雑な音楽であれば、おそらく各小節にチェックを入れます。
93 @item @strong{テキスト 1 行につき 1 小節にします}。音楽自体や望みの出力が複雑@c
94 である場合、1 行に 1 小節だけを記述すると良い場合が多いです。画面スペースを節@c
95 約するために 1 行に 8 小節も詰め込むことは、入力ファイルを @q{デバッグ} しなけ@c
96 ればならない場合に、そうするだけの価値はありません。
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 されているのかを特定することはずっと大変になります。
106 @item @strong{中括弧にインデントを入れる}。多くの問題は @code{@{} と @code{@}}
109 @item セクションや変数の開始時に@strong{明示的に演奏時間を付け加える}。フレー@c
110 ズの開始時に @code{c4 d e} (@code{c d e} ではなく) と記述しておけば、後になっ@c
111 て音楽を再編成する場合に問題の発生を免れる可能性があります。
113 @item 音楽定義から@strong{調整を分離します}。@ref{変数と関数を用いて入力の手間を省く} と @ref{スタイル シート} を参照してください。
119 @subsection 既存の音楽を譜刻する
120 @translationof Typesetting existing music
122 既存の楽譜からの音楽を入力している (つまり、既存の楽譜の楽曲を譜刻している) の@c
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} を参照してください。
134 @item @code{mBreak = @{ @bs{}break @}} を定義して、写している楽譜が改行するた@c
135 びに @code{@bs{}mBreak} を入力ファイルに挿入します。これにより、LilyPond の音@c
136 楽とオリジナルの音楽を比較することがずっと容易になります。入力した楽譜の校正が@c
137 終わったときに、それらの改行すべてを削除するために @code{mBreak = @{ @}} を定@c
138 義することになるかもしれません。これにより、LilyPond は LilyPond が最適と思う@c
139 場所に改行を入れることができるようになります。
145 @subsection 大きなプロジェクト
146 @translationof Large projects
148 大きなプロジェクトに取り組んでいるとき、LilyPond 入力ファイルの構造をすっきり@c
153 @item @strong{各ボイスに対して変数を使用して}、定義の中の構造を最小限にしま@c
154 す。@code{@bs{}score} セクションの構造が最も変更される可能性が高い箇所です。一@c
155 方、@code{violin} 定義は LilyPond のバージョンが新しくなっても変更される可能性@c
159 violin = \relative c'' @{
172 @item @strong{調整を音楽定義から分離します}。このことは前にも触れましたが、大@c
173 きなプロジェクトでは絶対に不可欠なことです。@code{fthenp} の定義を変更する必要@c
174 が生じた場合、変更は 1 回で済み、@code{violin} の内部にはまったく手を触れる必@c
179 \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
180 violin = \relative c'' @{
188 @node 変数と関数を用いて入力の手間を省く
189 @subsection 変数と関数を用いて入力の手間を省く
190 @translationof Saving typing with variables and functions
195 これまでに、以下のような記述を見てきました:
197 @lilypond[quote,verbatim,ragged-right]
198 hornNotes = \relative c'' { c4 b dis c }
206 これは音楽表記を最小化するのに役に立つ可能性があるということに気付くかもしれま@c
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 }
220 さらに、これらの変数 (変数、マクロ、(ユーザ定義) コマンドなどと呼ばれます) を@c
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'' {
229 c4._\dolce b8 a8 g a b |
231 c4.^"hi there!" d8 e' f g d |
232 c,4.\fthenp b8 c4 c-. |
239 \layout{ragged-right=##t}
243 これらの明らかに変数は入力の手間を省くのに役立っています。例えそれらの変数が 1
244 回しか使用されないとしても、変数化することを考慮する価値があります -- 複雑さを@c
245 減らします。以前に使用した変数を使っていない例を見てみましょう。それはとても読@c
249 violin = \relative c'' @{
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-. |
260 @c TODO Replace the following with a better example -td
261 @c Skylining handles this correctly without padText
263 これまでに見てきたのは静的な置き換えです -- LilyPond は @code{@bs{}padText} を@c
264 見ると、それを定義した内容 (つまり、@code{padText=} の右側にあるもの) に置き換@c
267 LilyPond は非静的な置き換えも処理できます (それらを関数と見なすことができます)。
269 @lilypond[quote,verbatim,ragged-right]
271 #(define-music-function (parser location padding) (number?)
273 \once \override TextScript #'padding = #$padding
281 c4^"piu mosso" fis a g
285 変数を使うことは、LilyPond 入力構文に変更があった場合の作業を減らす良い方法で@c
286 もあります (@ref{古い入力ファイルをアップデートする} を参照してください)。あなたがあなた@c
287 の入力ファイルすべてに使用する単一の定義 (@code{@bs{}dolce} のような) を持って@c
288 いて、構文が変更された場合、すべての @code{.ly} ファイルを変更する代わりに、@c
289 @code{@bs{}dolce} 定義をアップデートするだけで済みます。
294 @translationof Style sheets
296 LilyPond が作り出す出力にはさまざまな変更を加えることができます (詳細は
297 @ref{出力を調整する} を参照してください)。しかしながら、調整を加えたい入力@c
298 ファイルがたくさんあるとしたらどうでしょう?また、単に調整を実際の音楽表記から@c
299 分離したいとしたらどうでしょう?これはとても簡単なことです。
301 以下の例を見てみましょう。@code{@hash{}()} を持つ部分を理解できなくても心配し@c
302 ないでください。@ref{Scheme を用いた高度な調整} で説明されています。
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?)
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 }
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
322 この例には出力が重なり合うという問題がいくつかあり、@ref{オブジェクトを移動させる} のテ@c
323 クニックを使ってそれらを修正しています。そこで、さらに @code{mpdolce} 定義と
324 @code{tempoMark} 定義に関して何かしてみましょう。それらは望みの出力を作り出し@c
325 ていますが、それらを別の楽曲で使いたいとします。単純にそれらを各ファイルの先頭@c
326 部分にカット&ペーストすることもできますが、わずらわしいです。その方法では定義@c
327 は依然として入力ファイルの中にあり、私は個人的にすべての @code{@hash{}()} は何@c
328 か醜いと感じます。それらを他のファイルの中に隠すことにしましょう:
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?)
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 @}
342 今度は音楽ファイルを変更しましょう (このファイルを @file{"music.ly"} として保@c
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.
349 \include "definitions.ly"
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
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?)
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 }
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
379 これで前よりも良くなりましたが、2, 3 の変更を行いましょう。グリッサンド (訳者:
380 第 1 小節の C シャープと A の間) は見え難いので、もっと太く、音符の玉に近づけ@c
381 ましょう。メトロノーム記号を最初の音符の上ではなく、音部記号の上に持ってきま@c
382 しょう。最後に、私の作曲の先生は @q{C} 拍子記号を嫌っているので、@q{4/4} に変@c
385 @file{music.ly} には変更を加えないでください。@file{definitions.ly} を以下のよ@c
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?)
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 @}
401 \override MetronomeMark #'extra-offset = #'(-9 . 0)
402 \override MetronomeMark #'padding = #'3
405 \override TimeSignature #'style = #'numbered
408 \override Glissando #'thickness = #3
409 \override Glissando #'gap = #0.1
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?)
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 }
426 \override MetronomeMark #'extra-offset = #'(-9 . 0)
427 \override MetronomeMark #'padding = #'3
430 \override TimeSignature #'style = #'numbered
433 \override Glissando #'thickness = #3
434 \override Glissando #'gap = #0.1
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
447 もっと良くなりました!今度はこれを公表したいとします。私の作曲の先生は @q{C}
448 拍子記号を嫌っていますが、私は幾分好きです。現在の @code{definitions.ly} を
449 @code{web-publish.ly} にコピーして、それを変更してみましょう。この音楽はスク@c
450 リーンに表示される PDF を作り出すことを意図したものなので、出力のフォントを全@c
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?)
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 @}
464 #(set-global-staff-size 23)
467 \override MetronomeMark #'extra-offset = #'(-9 . 0)
468 \override MetronomeMark #'padding = #'3
473 \override Glissando #'thickness = #3
474 \override Glissando #'gap = #0.1
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?)
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 }
489 #(set-global-staff-size 23)
492 \override MetronomeMark #'extra-offset = #'(-9 . 0)
493 \override MetronomeMark #'padding = #'3
496 \override Glissando #'thickness = #3
497 \override Glissando #'gap = #0.1
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
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} の先頭部分は以下のようになります:
519 \include "definitions.ly"
521 %%% Only uncomment one of these two lines!
522 \include "web-publish.ly"
523 %\include "university.ly"
526 このアプローチは、あなたがパーツ一式を作っているだけだとしても役に立つ可能性が@c
527 あります。私は自分のプロジェクトのための半ダースの @q{スタイル シート} ファイ@c
528 ルを使います。私は各音楽ファイルを @code{@bs{}include "../global.ly"} で始め@c
529 て、@file{gloval.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"
544 @translationof When things don't work
547 * 古い入力ファイルをアップデートする::
548 * トラブルシューティング (すべてをバラバラにする)::
552 @node 古い入力ファイルをアップデートする
553 @subsection 古い入力ファイルをアップデートする
554 @translationof Updating old input files
556 LilyPond 入力構文はしばしば変更されます。LilyPond 自体の改良に合わせて、構文
557 (入力言語) も変更されます。これらの変更は入力を読みやすく/書きやすくするために@c
558 行われる場合もありますし、LilyPond の新しい機能のために行われる場合もあります。
560 LilyPond は、このアップデートをより容易にするファイル: @code{convert-ly} と一@c
561 緒に公開されます。このプログラムの実行方法についての詳細は @rprogram{convert-ly を使ってファイルを更新する} を参照してください。
563 残念なことに、@code{convert-ly} はすべての入力構文の変更を処理できるわけではあ@c
564 りません。単純な探索-置換 (@code{raggedright} が @code{ragged-right} になった@c
565 など) を処理しますが、複雑すぎる変更もあります。@code{convert-ly} が処理できな@c
566 い構文の変更は @rprogram{convert-ly を使ってファイルを更新する} にリストアップされて@c
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
578 @node トラブルシューティング (すべてをバラバラにする)
579 @subsection トラブルシューティング (すべてをバラバラにする)
580 @translationof Troubleshooting (taking it all apart)
582 遅かれ早かれ、あなたは LilyPond がコンパイルできないファイルを書くことになりま@c
583 す。LilyPond が返すメッセージはエラーを見つけ出す手助けになるかもしれません@c
584 が、多くの場合、問題の原因を探し出すために調査を行う必要があります。
586 この目的のための最も強力なツールは 1 行コメント (@code{%} で記述します) とブ@c
587 ロック コメント (@code{%@{ ... %@}} で記述します) です。問題がどこにあるかわか@c
588 らない場合、入力ファイルの大きな一部分をコメント アウトすることから始めます。@c
589 あるセクションをコメント アウトして、そのファイルを再びコンパイルしてみます。@c
590 コンパイルが通ったのなら、問題は今コメント アウトした部分の中にあります。コン@c
591 パイルが通らなかった場合は、コンパイルが通るようになるまでコメント アウトした@c
594 極端な場合、最終的に以下のようになるかもしれません:
608 (言い換えると、何の音楽も持たないファイルです)
610 こうなったとしても、あきらめないでください。少しだけコメントを外して -- 例え@c
611 ば、バス パートを -- コンパイルが通るかどうか試してみます。コンパイルが通らな@c
612 かった場合は、バスの音楽をすべてコメント アウトします (しかし、@code{@bs{}score}
613 の中の @code{@bs{}bass} はコメントを外したままにしておきます)。
616 bass = \relative c' @{
624 そして、問題を起こしている行を見つけ出すまで、@code{bass} パートから少しずつコ@c
627 もう 1 つの非常に有用なデバッグ テクニックは @ref{最小化例} を構築する@c
633 @translationof Minimal examples
635 最小化例は可能な限り小さな例のことです。最小化例は長い例よりも理解することが@c
636 ずっと容易です。最小化例は以下の目的で使用されます:
640 @item メーリング リストに援助要請を送る
641 @item @uref{http://lsr.dsi.unimi.it/,LilyPond Snippet Repository} に例を追加する
644 可能な限り小さな例を構築するための規則はとても単純です: 必要の無いものはすべて@c
645 削除する。ファイルの不要な部分を削除しようとしているとき、実際に削除する代わり@c
646 にコメント アウトを使用するというのはとても良いアイディアです。そうしておけ@c
647 ば、ある行が実際には必要だということがわかった場合に、その行をゼロから入力する@c
650 @qq{可能な限り小さく} という規則には 2 つの例外があります:
653 @item @code{\version} 番号を含める。
654 @item 可能であれば、例の先頭で @code{@bs{}paper@{ ragged-right=@hash{}@hash{}t
658 最小化例の要点は読みやすくするということです:
661 @item 複雑な音符、調子、拍子を使うことを避ける -- それらの要素の振る舞いについ@c
663 @item @code{@bs{}override} コマンドを使わない -- それがその例のポイントでない@c
669 @translationof Scores and parts
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
676 オーケストラ音楽では、すべての音符は 2 回譜刻されます。1 回は演奏家のための@c
677 パート譜で、1 回は指揮者のための総譜で譜刻されます。変数を使うことで二度手間を@c
678 避けることができます。音楽は 1 回、変数に入力されます。その変数の内容は、パー@c
679 ト譜と総譜の両方を生成するために使用されます。
681 音符を特別なファイルの中に定義すると便利です。例えば、ファイル
682 @code{horn-music.ly} は以下のホルン/@/バスーン デュオのパートを保持していると@c
686 hornNotes = \relative c @{
693 個々のパートは、ファイルの中に以下の記述をすることによって作り出されます:
696 \include "horn-music.ly"
698 instrument = "Horn in F"
702 \transpose f c' \hornNotes
709 \include "horn-music.ly"
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
720 @lilypond[quote,ragged-right]
721 \transpose f c' \relative c {
727 アンサンブルでは、しばしばボイスの 1 つが何小節も演奏されないことがあります。@c
728 これは特別な休符 -- 複小節休符 -- によって示されます。これは大文字の @code{R}
729 とその後に続く演奏時間 (全音符には @code{1}、半音符には @code{2} などです) で@c
730 入力されます。この演奏時間に掛け算を行うことによって、さらに長い休符を構築する@c
731 ことができます。例えば、以下の休符は 2/4 拍子で 3 小節分の長さになります:
737 この部分を譜刻するとき、複小節休符を圧縮する必要があります。これは以下のラン-@c
738 タイム変数を設定することによって行います:
741 \set Score.skipBars = ##t
745 このコマンドは @code{Score} コンテキストの中にあるプロパティ @code{skipBars}
746 を真 (@code{@hash{}@hash{}t}) にセットします。この休符とオプションを上記の音楽@c
747 の先頭に追加することによって、以下のような結果になります:
749 @lilypond[quote,ragged-right]
750 \transpose f c' \relative c {
752 \set Score.skipBars = ##t
758 楽譜はすべての音楽を一緒にすることによって作り出されます。他のボイスはファイル
759 @file{bassoon-music.ly} の中の @code{bassoonNotes} の中にあると仮定すると、楽@c
763 \include "bassoon-music.ly"
764 \include "horn-music.ly"
767 \new Staff \hornNotes
768 \new Staff \bassoonNotes
775 @lilypond[quote,ragged-right]
783 r4 d,8 f | gis4 c | b bes |
784 a8 e f4 | g d | gis f