1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
4 Translation of GIT committish: 5fb3f8cf17ce7b57d22584429d736f188e4827d7
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..
13 @c Translators: Tomohiro Tatejima, Yoshiki Sawada
14 @c Translation status: post-GDP
17 @node LilyPond 入力ファイルの記述に対する提案
18 @chapter LilyPond 入力ファイルの記述に対する提案
19 @translationof Suggestions for writing files
21 今やあなたはもっと大きな LilyPond 入力ファイル -- チュートリアルにあるような@c
22 小さな例ではなく、楽曲全体 -- を書き始める準備が整っています。@c
23 しかしながら、どのように書き進めていくべきなのでしょうか?
25 LilyPond があなたの入力ファイルを理解でき、望みの出力を作り出している限り、@c
26 あなたの入力ファイルがどのようなものであるかは問題になりません。@c
27 しかしながら、LilyPond 入力ファイルを書いているときに考慮すべきことが@c
31 @item あなたがミスをしたとしたらどうでしょうか?@c
32 LilyPond ファイルの構造はエラーを見つけ出すことを@c
33 より容易に (あるいはより困難に) します。
35 @item あなたがあなたの入力ファイルを誰か他の人と共有したいとしたら@c
37 実際には、あなたが数年前のあなた自身の入力ファイルを変更したいとしたら@c
39 一読して理解可能な LilyPond 入力ファイルがある一方で、@c
40 あなたを 1 時間も悩ます入力ファイルもあるかもしれません。
42 @item あなたがあなたの LilyPond ファイルを最近のバージョンの LilyPond のために@c
43 アップグレードしたいとしたらどうでしょうか?@c
44 入力構文は LilyPond の改良に合わせてしばしば変更されます。@c
45 たいていの変更は @code{convert-ly} で自動的に変換できますが、@c
46 いくつかの変更は手動での援助を必要とするかもしれません。@c
47 LilyPond 入力ファイルはより容易に (あるいはより困難に)
63 @translationof General suggestions
65 ここで、譜刻の際に起こる、最もよくある問題を回避 (あるいは修正) する@c
70 どんなに小さいファイルでも、@strong{すべての入力ファイルに必ず
71 @code{@bs{}version} 番号を含めるべきです}。@c
72 これは、LilyPond のどのバージョンでファイルが作られたかを覚えておかなくて@c
73 良くなりますし、@ref{convert-ly を使ってファイルを更新する} の際に特に@c
74 関わってきます (convert-ly は @code{\version} が含まれている必要があります)。@c
75 あるいは他のユーザに入力ファイルを送る際 (例えばメーリング リストで助けを@c
77 テンプレートはすべて @code{@bs{}version} 情報を保持しているということに@c
81 @strong{入力ファイル 1 行につき、1 小節の音楽を書きます}。 これは@c
82 入力ファイルに関するあらゆる問題のデバッグを簡単にします。
85 @strong{@ruser{小節と小節番号のチェック}と@ruser{オクターブ チェック}を含めます。}@c
86 入力ファイルにこのような@q{チェック}を含めておくことで、@c
88 チェックをどのぐらいの頻度で追加するかは、その音楽の複雑さ次第です。@c
89 簡単な音楽であれば、戦略上重要なポイントにいくつか追加するだけで十分でしょう。@c
90 しかし、多くの声部や譜を持つようなもっと複雑な音楽であれば、おそらく各小節に@c
94 @strong{入力ファイルにコメントをつけます}。@c
96 (@q{ヴァイオリンの第 2 テーマ}, @q{第 4 変奏})
97 など) や、単純に小節番号を追加することは、@c
98 入力ファイルの中の場所を特定するのを簡単にします。特に後で何かを変更しなければ@c
99 ならない場合や、LilyPond 入力ファイルを他の人に渡す際には特に役立ちます。
102 @strong{セクションの開始時に明示的に演奏時間を付け加えます}。@c
103 例えば、ただ @code{c d e f} と書く代わりに @code{c4 d e f} と書くことで、@c
107 @strong{波括弧と並列表記にインデントを施します}。問題はしばしば、@c
108 どちらかの括弧が@q{足りない}ことが原因です。波括弧の@q{始まり}と@q{終わり}
109 (あるいは @code{<<} と @code{>>}) に明確なインデントを追加することで、@c
110 このような問題を避けやすくなります。例えば以下の入力:
130 は以下の入力より括弧の対応を追いかけやすいです:
133 \new Staff @{ \relative @{ r4 g'8 g c4 c8 d | e4 r8
135 << @{ f8 c c @} \new Staff @{ f8 f c @} >> r4 | @} @}
139 @code{\layout} ブロックにオーバライドを追加することによって、@c
140 @strong{音楽とスタイルを分割します}:
144 @var{@dots{}music@dots{}}
146 \override TabStaff.Stemstencil = ##f
151 このオーバライドは新しいコンテキストを生成しませんが、@c
152 コンテキストが生成された際に適用されます。@c
153 @rlearning{変数と関数を用いて入力の手間を省く}や@c
154 @rlearning{スタイル シート}も参照してください。
161 @translationof Typesetting existing music
164 (つまり、既存の楽譜の楽曲を譜刻している) のなら、
168 @item 1 回につき 1 つのシステム
169 (訳者: システムとは譜の集まりのこと。例えば、ピアノ譜での 1 システムとは、@c
170 右手譜 1 小節とそれに対応する左手譜 1 小節)
171 を入力し (しかし、それでもテキスト 1 行につき 1 小節だけにします)、@c
172 それを終えたときに各システムをチェックします。@c
173 処理をスピード アップさせるために @code{showLastLength} プロパティや
174 @code{showFirstLength} プロパティを使うことになるかもしれません --
175 @ruser{Skipping corrected music} を参照してください。
177 @item @code{mBreak = @{ @bs{}break @}} を定義して、写している楽譜が@c
178 改行するたびに @code{@bs{}mBreak} を入力ファイルに挿入します。@c
179 これにより、LilyPond の音楽とオリジナルの音楽を比較することが@c
181 入力した楽譜の校正が終わったときに、それらの改行すべてを削除するために
182 @code{mBreak = @{ @}} を定義することになるかもしれません。@c
183 これにより、LilyPond は LilyPond が最適と思う場所に@c
186 @item 移調楽器のパートは変数に入力します。@c
187 移調楽器の音符は以下で囲むことを推奨します:
190 \transpose c natural-pitch @{@dots{}@}
194 (@code{natural-pitch} はその楽器のオープン ピッチです)
195 これにより、変数の中の音楽は C で効率的に記述することができます。@c
196 変数を使用していれば、必要なときに移調しなおすこともできます
197 (例えば、楽譜をコンサート ピッチで譜刻したり、@c
198 トロンボーン パートをト音記号からヘ音記号に変換したり、など)。@c
199 音楽をすべて変数の中に首尾一貫したピッチで記述しておけば、@c
203 -- つまり、他に使用する調が楽器のナチュラル ピッチだけ:
204 B-フラット トランペットなら bes、@c
205 A-フラット クラリネットなら aes --
206 であるとしても、音楽を変数に格納しておくべきです。@c
213 @translationof Large projects
215 大きなプロジェクトに取り組んでいるとき、@c
216 LilyPond 入力ファイルの構造をすっきりさせておくことが不可欠です。
220 @item @strong{各ボイスに対して変数を使用して}、@c
222 @code{@bs{}score} セクションの構造が最も変更される可能性が高い箇所です。@c
223 一方、@code{violin} 定義は LilyPond のバージョンが新しくなっても@c
227 violin = \relative @{
240 @item @strong{調整を音楽定義から分離します}。@c
241 このことは前にも触れましたが、大きなプロジェクトでは絶対に不可欠なことです。@c
242 @code{fthenp} の定義を変更する必要が生じた場合、変更は 1 回で済み、@c
243 @code{violin} の内部にはまったく手を触れる必要がありません。
247 \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
248 violin = \relative @{
258 @translationof Troubleshooting
260 遅かれ早かれ、あなたは LilyPond がコンパイルできないファイルを@c
262 LilyPond が返すメッセージはエラーを見つけ出す@c
263 手助けになるかもしれませんが、多くの場合、@c
264 問題の原因を探し出すために調査を行う必要があります。
266 この目的のための最も強力なツールは 1 行コメント (@code{%} で記述します) と@c
267 ブロック コメント (@code{%@{@dots{}%@}} で記述します) です。@c
269 入力ファイルの大きな一部分をコメント アウトすることから始めます。@c
270 あるセクションをコメント アウトして、そのファイルを再びコンパイルしてみます。@c
271 コンパイルが通ったのなら、問題は今コメント アウトした部分の中にあります。@c
272 コンパイルが通らなかった場合は、コンパイルが通るようになるまで@c
275 極端な場合、最終的に以下のようになるかもしれません:
289 (言い換えると、何の音楽も持たないファイルです)
291 こうなったとしても、あきらめないでください。@c
292 少しだけコメントを外して -- 例えば、バス パートを --
293 コンパイルが通るかどうか試してみます。@c
294 コンパイルが通らなかった場合は、バスの音楽をすべてコメント アウトします
295 (しかし、@code{@bs{}score} の中の @code{@bs{}bass} はコメントを@c
307 そして、問題を起こしている行を見つけ出すまで、@c
308 @code{bass} パートから少しずつコメントを外していきます。
310 もう 1 つの非常に有用なデバッグ テクニックは
311 @rweb{Tiny examples} を構築することです。
314 @node Make と Makefile
315 @section Make と Makefile
316 @translationof Make and Makefiles
321 LilyPond を実行できるほとんどすべてのプラットフォームが
322 @code{make} というソフトウェアをサポートします。@c
323 このソフトウェアは @code{Makefile} という名前の特殊なファイルを読み込みます。@c
324 ファイル @code{Makefile} は、@c
326 あるファイルから別のファイルを作り出すために@c
327 オペレーティング システムに渡す必要があるコマンドを定義します。@c
328 例えば、@code{Makefile} は LilyPond を実行して
329 @code{ballad.ly} から @code{ballad.pdf} と @code{ballad.midi} を@c
332 自身の便利さのためかソース ファイルにアクセスしてくれる他の人のために、@c
333 自身のプロジェクト用に @code{Makefile} を作成することが良い場合があります。@c
335 多くのインクルード ファイルと複数の出力オプション
336 (例えば、フル スコア、パート スコア、指揮譜、ピアノ譜など) を持つ
338 ビルドするために複雑なコマンドを必要とするプロジェクト
339 (@code{lilypond-book} プロジェクトなど)
341 @code{Makefile} の複雑さと自由度は、必要性と作者のスキルに応じて、@c
344 GNU/Linux ディストリビューションと MacOS X にインストールされていて、@c
347 @code{make} の使い方についてのすべての詳細は
348 @strong{GNU Make マニュアル} を参照してください。@c
349 これから示すのは @code{make} でできることのほんの一例です。
351 @code{Makefile} の中に規則を定義するためのコマンドは、@c
353 例えば、さまざまな種類がある GNU/Linux と MacOS は @code{bash} を@c
354 使いますが、Windows は @code{cmd} を使います。@c
355 MacOS X では、コマンド ライン インタプリタを使用するためにシステムを@c
356 コンフィグレーションする必要があるということに注意してください。@c
357 ここで、@code{Makefile} の例をいくつか
358 GNU/Linux/MacOS 用と Windows 用の両方のバージョンで示します。
360 最初の例は、4 楽章のオーケストラのためのもので、@c
378 | |-- symphony-cello.ly
379 | |-- symphony-horn.ly
380 | |-- symphony-oboes.ly
381 | |-- symphony-viola.ly
382 | |-- symphony-violinOne.ly
383 | `-- symphony-violinTwo.ly
393 @code{Scores} ディレクトリと @code{Parts} ディレクトリの中にある
395 @code{Notes} ディレクトリの中にある @code{.ily} ファイルから取得します:
398 %%% top of file "symphony-cello.ly"
399 \include ../symphonyDefs.ily
400 \include ../Notes/cello.ily
403 この @code{Makefile} はターゲットとして
404 @code{score} (フル スコアの楽曲全体)、@c
405 @code{movements} (フル スコアの個々の楽章)、@c
406 それに @code{parts} (演奏者のための個々のパート) を持ちます。@c
407 さらに、web や email で配布するのに適したソース ファイルの tarball
408 (訳者: 複数のファイルをコマンド @code{tar} で 1 つのファイルにまとめたもの)
409 を作成するターゲット @code{archive} もあります。@c
410 ここでは GNU/Linux や MacOS X 用の @code{Makefile} を示します。@c
411 これをプロジェクトのトップ ディレクトリに
412 @code{Makefile} という名前で保存する必要があります:
414 @warning{ターゲットやパターン ルールが定義されたとき、@c
415 そのあとの行はスペースではなく Tab で始まる必要があります。}
421 CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
423 LILY_CMD = lilypond -ddelete-intermediate-files \
424 -dno-point-and-click -djob-count=$(CPU_CORES)
426 # この Makefile で使用される拡張子
427 .SUFFIXES: .ly .ily .pdf .midi
429 # 入力ファイルと出力ファイルのサーチは VPATH 変数でリストアップされている
430 # ディレクトリの中で行われます。それらのディレクトリはすべて (GNU make 変数
431 # `CURDIR' によって与えられる) カレント ディレクトリのサブディレクトリです。
438 # LY 入力ファイルから PDF ファイルと MIDI ファイルを作成するための
439 # パターン ルール。.pdf 出力ファイルは `PDF' サブディレクトリの中に
440 # 配置され、.midi ファイルは `MIDI' サブディレクトリの中に配置されます。
442 $(LILY_CMD) $<; \ # this line begins with a tab
443 if test -f "$*.pdf"; then \
446 if test -f "$*.midi"; then \
447 mv "$*.midi" MIDI/; \
459 $(piece)I.pdf: $(piece)I.ly $(notes)
460 $(piece)II.pdf: $(piece)II.ly $(notes)
461 $(piece)III.pdf: $(piece)III.ly $(notes)
462 $(piece)IV.pdf: $(piece)IV.ly $(notes)
465 $(piece).pdf: $(piece).ly $(notes)
468 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
469 $(piece)-horn.pdf: $(piece)-horn.ly horn.ily
470 $(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
471 $(piece)-viola.pdf: $(piece)-viola.ly viola.ily
472 $(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
473 $(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
475 # 4 つすべての楽章のフル スコアを 1 つのファイルとして生成するには
476 # `make score' とタイプします。
480 # すべてのパートを生成するには `make parts' とタイプします。
481 # 楽器 `foo' のためのパートを生成するには `make foo.pdf' とタイプします。
482 # 例: `make symphony-cello.pdf'
484 parts: $(piece)-cello.pdf \
485 $(piece)-violinOne.pdf \
486 $(piece)-violinTwo.pdf \
491 # 4 つの楽章を別個のファイルとして生成するには `make movements' とタイプします。
493 movements: $(piece)I.pdf \
498 all: score parts movements
501 tar -cvvf stamitz.tar \ # this line begins with a tab
502 --exclude=*pdf --exclude=*~ \
503 --exclude=*midi --exclude=*.tar \
508 Windows プラットフォームには特別な面倒さがあります。@c
509 Windows 用の GNU Make をダウンロードしてインストールした後、@c
510 システム環境変数に正しいパスを設定して、@c
511 DOS シェルが Make プログラムを見つけられるようにする必要があります。@c
513 "マイ コンピュータ" を右クリックして、@code{プロパティ} を選択し、@c
514 それから @code{詳細設定} を選択します。@c
515 それから @code{環境変数} をクリックして、@c
516 @code{システム環境変数} パネルの中にある @code{Path} をハイライトしてから
518 GNU Make の実行ファイルへのパスを追加します。@c
520 (訳者: GNU Make のインストールのされ方によって異なります):
523 C:\Program Files\GnuWin32\bin
526 Linux/MacOS X とは異なるシェル コマンドを扱い、@c
527 いくつかのデフォルト システム ディレクトリの中に存在する@c
529 @code{Makefile} 自体を変更する必要があります。@c
530 Windows は @code{tar} コマンドを持たないため、@c
531 @code{archive} ターゲットは除去されます。@c
532 また、Windows が持つ MIDI ファイルのデフォルト拡張子は異なります。
538 LILY_CMD = lilypond -ddelete-intermediate-files \
539 -dno-point-and-click \
540 -djob-count=$(NUMBER_OF_PROCESSORS)
542 #get the 8.3 name of CURDIR (workaround for spaces in PATH)
543 workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
546 .SUFFIXES: .ly .ily .pdf .mid
555 $(LILY_CMD) $< # this line begins with a tab
556 if exist "$*.pdf" move /Y "$*.pdf" PDF/ # begin with tab
557 if exist "$*.mid" move /Y "$*.mid" MIDI/ # begin with tab
569 $(piece)I.pdf: $(piece)I.ly $(notes)
570 $(piece)II.pdf: $(piece)II.ly $(notes)
571 $(piece)III.pdf: $(piece)III.ly $(notes)
572 $(piece)IV.pdf: $(piece)IV.ly $(notes)
574 $(piece).pdf: $(piece).ly $(notes)
576 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
577 $(piece)-horn.pdf: $(piece)-horn.ly horn.ily
578 $(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
579 $(piece)-viola.pdf: $(piece)-viola.ly viola.ily
580 $(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
581 $(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
587 parts: $(piece)-cello.pdf \
588 $(piece)-violinOne.pdf \
589 $(piece)-violinTwo.pdf \
595 movements: $(piece)I.pdf \
600 all: score parts movements
604 次の @code{Makefile} は、@c
605 LaTeX で処理する @command{lilypond-book} ドキュメント用です。@c
608 リンクを更新するために @command{latex} コマンドを 2 回実行する必要があります。@c
609 .pdf 出力ファイルは @code{out} ディレクトリに保存され、@c
610 HTML 出力ファイルは @code{htmlout} ディレクトリに保存されます。
619 LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
620 LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
621 PDF=cd $(OUTDIR) && pdflatex $(FILE)
622 HTML=cd $(WEBDIR) && latex2html $(FILE)
623 INDEX=cd $(OUTDIR) && makeindex $(FILE)
624 PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
629 $(LILYBOOK_PDF) # begin with tab
630 $(PDF) # begin with tab
631 $(INDEX) # begin with tab
632 $(PDF) # begin with tab
633 $(PREVIEW) # begin with tab
636 $(LILYBOOK_HTML) # begin with tab
637 $(HTML) # begin with tab
638 cp -R $(WEBDIR)/$(FILE)/ ./ # begin with tab
639 $(BROWSER) $(FILE)/$(FILE).html & # begin with tab
642 cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf # begin with tab
645 rm -rf $(OUTDIR) # begin with tab
648 rm -rf $(WEBDIR) # begin with tab
651 tar -cvvf myproject.tar \ # begin this line with tab
653 --exclude=htmlout/* \
654 --exclude=myproject/* \
661 TODO: make this thing work on Windows
663 この @code{Makefile} は Windows では機能しません。@c
664 Windows ユーザの代替手段として、@c
665 ビルド コマンドを保持する簡単なバッチ ファイルを作成する方法があります。@c
666 これは @code{Makefile} のように依存関係を保持できませんが、@c
667 少なくともビルド処理を単一のコマンドに縮小します。@c
669 @command{build.bat} あるいは @command{build.cmd} として保存してください。@c
670 このバッチ ファイルは DOS プロンプトから実行することができ、@c
671 単にそのアイコンをダブル クリックすることでも実行することができます。
674 lilypond-book --output=out --pdf myproject.lytex
680 copy out\myproject.pdf MyProject.pdf
686 @rprogram{コマンド ラインの使用方法},
687 @rprogram{lilypond-book}