1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
4 Translation of GIT committish: fabcd22c8f88ea9a87241597f1e48c0a9adbfc6e
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: 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
69 @item @strong{すべてのファイルに @code{@bs{}version} 番号を含めます}。@c
70 テンプレートはすべて @code{@bs{}version} 情報を保持しているということに@c
72 常に @code{@bs{}version} を含めること -- ファイルの大小にかかわらず --
74 個人的な経験から言って、数年前に使っていた LilyPond のバージョンを@c
76 @command{convert-ly} は使用した LilyPond のバージョンを宣言することを@c
79 @item @strong{チェックを含めます}:
80 @ruser{小節と小節番号のチェック}, @ruser{オクターブ チェック}。@c
81 時々チェックを入れておけば、ミスをしたときに素早くそれを@c
83 @q{時々} とはどれくらいの頻度なのでしょうか?@c
85 とても簡単な音楽であれば、たぶん 1 回か 2 回です。@c
86 とても複雑な音楽であれば、おそらく各小節にチェックを入れます。
88 @item @strong{テキスト 1 行につき 1 小節にします}。@c
89 音楽自体や望みの出力が複雑である場合、1 行に 1 小節だけを記述すると@c
91 画面スペースを節約するために 1 行に 8 小節も詰め込むことは、@c
92 入力ファイルを @q{デバッグ} しなければならない場合に、@c
95 @item @strong{入力ファイルにコメントをつけます}。@c
96 コメントとして小節番号 (時々) や音楽テーマへの参照
97 (@q{second theme in violins}, @q{fourth variation}
98 (@q{ヴァイオリンの第 2 テーマ}, @q{第 4 ヴァイオリン})
100 初めて楽曲を書いているときはコメントをつける必要は無いかもしれません。@c
101 しかしながら、数年後に何か変更を加えたいと思った場合や、@c
102 ソースを友人に渡す場合、あなたがファイルにコメントをつけていなければ、@c
103 あなたの意図やファイルがどのように構成されているのかを特定することは@c
106 @item @strong{波括弧にインデントを入れる}。@c
107 多くの問題は @code{@{} と @code{@}} の数が食い違うことによって生じます。
109 @item セクションや変数の開始時に@strong{明示的に演奏時間を付け加える}。@c
110 フレーズの開始時に @code{c4 d e} (@code{c d e} ではなく) と記述しておけば、@c
111 後になって音楽を再編成する場合に問題の発生を免れる可能性があります。
113 @item 音楽定義から@strong{調整を分離します}。@c
114 @rlearning{変数と関数を用いて入力の手間を省く} と
115 @rlearning{スタイル シート} を参照してください。
122 @translationof Typesetting existing music
125 (つまり、既存の楽譜の楽曲を譜刻している) のなら、
129 @item 1 回につき 1 つのシステム
130 (訳者: システムとは譜の集まりのこと。例えば、ピアノ譜での 1 システムとは、@c
131 右手譜 1 小節とそれに対応する左手譜 1 小節)
132 を入力し (しかし、それでもテキスト 1 行につき 1 小節だけにします)、@c
133 それを終えたときに各システムをチェックします。@c
134 処理をスピード アップさせるために @code{showLastLength} プロパティや
135 @code{showFirstLength} プロパティを使うことになるかもしれません --
136 @ruser{Skipping corrected music} を参照してください。
138 @item @code{mBreak = @{ @bs{}break @}} を定義して、写している楽譜が@c
139 改行するたびに @code{@bs{}mBreak} を入力ファイルに挿入します。@c
140 これにより、LilyPond の音楽とオリジナルの音楽を比較することが@c
142 入力した楽譜の校正が終わったときに、それらの改行すべてを削除するために
143 @code{mBreak = @{ @}} を定義することになるかもしれません。@c
144 これにより、LilyPond は LilyPond が最適と思う場所に@c
147 @item 移調楽器のパートは変数に入力します。@c
148 移調楽器の音符は以下で囲むことを推奨します:
151 \transpose c natural-pitch @{...@}
155 (@code{natural-pitch} はその楽器のオープン ピッチです)
156 これにより、変数の中の音楽は C で効率的に記述することができます。@c
157 変数を使用していれば、必要なときに移調しなおすこともできます
158 (例えば、楽譜をコンサート ピッチで譜刻したり、@c
159 トロンボーン パートをト音記号からヘ音記号に変換したり、など)。@c
160 音楽をすべて変数の中に首尾一貫したピッチで記述しておけば、@c
164 -- つまり、他に使用する調が楽器のナチュラル ピッチだけ:
165 B-フラット トランペットなら bes、@c
166 A-フラット クラリネットなら aes --
167 であるとしても、音楽を変数に格納しておくべきです。@c
174 @translationof Large projects
176 大きなプロジェクトに取り組んでいるとき、@c
177 LilyPond 入力ファイルの構造をすっきりさせておくことが不可欠です。
181 @item @strong{各ボイスに対して変数を使用して}、@c
183 @code{@bs{}score} セクションの構造が最も変更される可能性が高い箇所です。@c
184 一方、@code{violin} 定義は LilyPond のバージョンが新しくなっても@c
188 violin = \relative c'' @{
201 @item @strong{調整を音楽定義から分離します}。@c
202 このことは前にも触れましたが、大きなプロジェクトでは絶対に不可欠なことです。@c
203 @code{fthenp} の定義を変更する必要が生じた場合、変更は 1 回で済み、@c
204 @code{violin} の内部にはまったく手を触れる必要がありません。
208 \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
209 violin = \relative c'' @{
219 @translationof Troubleshooting
221 遅かれ早かれ、あなたは LilyPond がコンパイルできないファイルを@c
223 LilyPond が返すメッセージはエラーを見つけ出す@c
224 手助けになるかもしれませんが、多くの場合、@c
225 問題の原因を探し出すために調査を行う必要があります。
227 この目的のための最も強力なツールは 1 行コメント (@code{%} で記述します) と@c
228 ブロック コメント (@code{%@{ ... %@}} で記述します) です。@c
230 入力ファイルの大きな一部分をコメント アウトすることから始めます。@c
231 あるセクションをコメント アウトして、そのファイルを再びコンパイルしてみます。@c
232 コンパイルが通ったのなら、問題は今コメント アウトした部分の中にあります。@c
233 コンパイルが通らなかった場合は、コンパイルが通るようになるまで@c
236 極端な場合、最終的に以下のようになるかもしれません:
250 (言い換えると、何の音楽も持たないファイルです)
252 こうなったとしても、あきらめないでください。@c
253 少しだけコメントを外して -- 例えば、バス パートを --
254 コンパイルが通るかどうか試してみます。@c
255 コンパイルが通らなかった場合は、バスの音楽をすべてコメント アウトします
256 (しかし、@code{@bs{}score} の中の @code{@bs{}bass} はコメントを@c
260 bass = \relative c' @{
268 そして、問題を起こしている行を見つけ出すまで、@c
269 @code{bass} パートから少しずつコメントを外していきます。
271 もう 1 つの非常に有用なデバッグ テクニックは
272 @rweb{Tiny examples} を構築することです。
275 @node Make と Makefile
276 @section Make と Makefile
277 @translationof Make and Makefiles
279 LilyPond を実行できるほとんどすべてのプラットフォームが
280 @code{make} というソフトウェアをサポートします。@c
281 このソフトウェアは @code{Makefile} という名前の特殊なファイルを読み込みます。@c
282 ファイル @code{Makefile} は、@c
284 あるファイルから別のファイルを作り出すために@c
285 オペレーティング システムに渡す必要があるコマンドを定義します。@c
286 例えば、@code{Makefile} は LilyPond を実行して
287 @code{ballad.ly} から @code{ballad.pdf} と @code{ballad.midi} を@c
290 自身の便利さのためかソース ファイルにアクセスしてくれる他の人のために、@c
291 自身のプロジェクト用に @code{Makefile} を作成することが良い場合があります。@c
293 多くのインクルード ファイルと複数の出力オプション
294 (例えば、フル スコア、パート スコア、指揮譜、ピアノ譜など) を持つ
296 ビルドするために複雑なコマンドを必要とするプロジェクト
297 (@code{lilypond-book} プロジェクトなど)
299 @code{Makefile} の複雑さと自由度は、必要性と作者のスキルに応じて、@c
302 GNU/Linux ディストリビューションと MacOS X にインストールされていて、@c
305 @code{make} の使い方についてのすべての詳細は
306 @strong{GNU Make マニュアル} を参照してください。@c
307 これから示すのは @code{make} でできることのほんの一例です。
309 @code{Makefile} の中に規則を定義するためのコマンドは、@c
311 例えば、さまざまな種類がある GNU/Linux と MacOS は @code{bash} を@c
312 使いますが、Windows は @code{cmd} を使います。@c
313 MacOS X では、コマンド ライン インタプリタを使用するためにシステムを@c
314 コンフィグレーションする必要があるということに注意してください。@c
315 ここで、@code{Makefile} の例をいくつか
316 GNU/Linux/MacOS 用と Windows 用の両方のバージョンで示します。
318 最初の例は、4 楽章のオーケストラのためのもので、@c
336 | |-- symphony-cello.ly
337 | |-- symphony-horn.ly
338 | |-- symphony-oboes.ly
339 | |-- symphony-viola.ly
340 | |-- symphony-violinOne.ly
341 | `-- symphony-violinTwo.ly
351 @code{Scores} ディレクトリと @code{Parts} ディレクトリの中にある
353 @code{Notes} ディレクトリの中にある @code{.ily} ファイルから取得します:
356 %%% top of file "symphony-cello.ly"
357 \include ../symphonyDefs.ily
358 \include ../Notes/cello.ily
361 この @code{Makefile} はターゲットとして
362 @code{score} (フル スコアの楽曲全体)、@c
363 @code{movements} (フル スコアの個々の楽章)、@c
364 それに @code{parts} (演奏者のための個々のパート) を持ちます。@c
365 さらに、web や email で配布するのに適したソース ファイルの tarball
366 (訳者: 複数のファイルをコマンド @code{tar} で 1 つのファイルにまとめたもの)
367 を作成するターゲット @code{archive} もあります。@c
368 ここでは GNU/Linux や MacOS X 用の @code{Makefile} を示します。@c
369 これをプロジェクトのトップ ディレクトリに
370 @code{Makefile} という名前で保存する必要があります:
372 @warning{ターゲットやパターン ルールが定義されたとき、@c
373 そのあとの行はスペースではなく Tab で始まる必要があります。}
379 CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
381 LILY_CMD = lilypond -ddelete-intermediate-files \
382 -dno-point-and-click -djob-count=$(CPU_CORES)
384 # この Makefile で使用される拡張子
385 .SUFFIXES: .ly .ily .pdf .midi
387 # 入力ファイルと出力ファイルのサーチは VPATH 変数でリストアップされている
388 # ディレクトリの中で行われます。それらのディレクトリはすべて (GNU make 変数
389 # `CURDIR' によって与えられる) カレント ディレクトリのサブディレクトリです。
396 # LY 入力ファイルから PDF ファイルと MIDI ファイルを作成するための
397 # パターン ルール。.pdf 出力ファイルは `PDF' サブディレクトリの中に
398 # 配置され、.midi ファイルは `MIDI' サブディレクトリの中に配置されます。
400 $(LILY_CMD) $<; \ # this line begins with a tab
401 if test -f "$*.pdf"; then \
404 if test -f "$*.midi"; then \
405 mv "$*.midi" MIDI/; \
417 $(piece)I.pdf: $(piece)I.ly $(notes)
418 $(piece)II.pdf: $(piece)II.ly $(notes)
419 $(piece)III.pdf: $(piece)III.ly $(notes)
420 $(piece)IV.pdf: $(piece)IV.ly $(notes)
423 $(piece).pdf: $(piece).ly $(notes)
426 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
427 $(piece)-horn.pdf: $(piece)-horn.ly horn.ily
428 $(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
429 $(piece)-viola.pdf: $(piece)-viola.ly viola.ily
430 $(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
431 $(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
433 # 4 つすべての楽章のフル スコアを 1 つのファイルとして生成するには
434 # `make score' とタイプします。
438 # すべてのパートを生成するには `make parts' とタイプします。
439 # 楽器 `foo' のためのパートを生成するには `make foo.pdf' とタイプします。
440 # 例: `make symphony-cello.pdf'
442 parts: $(piece)-cello.pdf \
443 $(piece)-violinOne.pdf \
444 $(piece)-violinTwo.pdf \
449 # 4 つの楽章を別個のファイルとして生成するには `make movements' とタイプします。
451 movements: $(piece)I.pdf \
456 all: score parts movements
459 tar -cvvf stamitz.tar \ # this line begins with a tab
460 --exclude=*pdf --exclude=*~ \
461 --exclude=*midi --exclude=*.tar \
466 Windows プラットフォームには特別な面倒さがあります。@c
467 Windows 用の GNU Make をダウンロードしてインストールした後、@c
468 システム環境変数に正しいパスを設定して、@c
469 DOS シェルが Make プログラムを見つけられるようにする必要があります。@c
471 "マイ コンピュータ" を右クリックして、@code{プロパティ} を選択し、@c
472 それから @code{詳細設定} を選択します。@c
473 それから @code{環境変数} をクリックして、@c
474 @code{システム環境変数} パネルの中にある @code{Path} をハイライトしてから
476 GNU Make の実行ファイルへのパスを追加します。@c
478 (訳者: GNU Make のインストールのされ方によって異なります):
481 C:\Program Files\GnuWin32\bin
484 Linux/MacOS X とは異なるシェル コマンドを扱い、@c
485 いくつかのデフォルト システム ディレクトリの中に存在する@c
487 @code{Makefile} 自体を変更する必要があります。@c
488 Windows は @code{tar} コマンドを持たないため、@c
489 @code{archive} ターゲットは除去されます。@c
490 また、Windows が持つ MIDI ファイルのデフォルト拡張子は異なります。
496 LILY_CMD = lilypond -ddelete-intermediate-files \
497 -dno-point-and-click \
498 -djob-count=$(NUMBER_OF_PROCESSORS)
500 #get the 8.3 name of CURDIR (workaround for spaces in PATH)
501 workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
504 .SUFFIXES: .ly .ily .pdf .mid
513 $(LILY_CMD) $< # this line begins with a tab
514 if exist "$*.pdf" move /Y "$*.pdf" PDF/ # begin with tab
515 if exist "$*.mid" move /Y "$*.mid" MIDI/ # begin with tab
527 $(piece)I.pdf: $(piece)I.ly $(notes)
528 $(piece)II.pdf: $(piece)II.ly $(notes)
529 $(piece)III.pdf: $(piece)III.ly $(notes)
530 $(piece)IV.pdf: $(piece)IV.ly $(notes)
532 $(piece).pdf: $(piece).ly $(notes)
534 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
535 $(piece)-horn.pdf: $(piece)-horn.ly horn.ily
536 $(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
537 $(piece)-viola.pdf: $(piece)-viola.ly viola.ily
538 $(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
539 $(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
545 parts: $(piece)-cello.pdf \
546 $(piece)-violinOne.pdf \
547 $(piece)-violinTwo.pdf \
553 movements: $(piece)I.pdf \
558 all: score parts movements
562 次の @code{Makefile} は、@c
563 LaTeX で処理する @command{lilypond-book} ドキュメント用です。@c
566 リンクを更新するために @command{latex} コマンドを 2 回実行する必要があります。@c
567 .pdf 出力ファイルは @code{out} ディレクトリに保存され、@c
568 HTML 出力ファイルは @code{htmlout} ディレクトリに保存されます。
577 LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
578 LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
579 PDF=cd $(OUTDIR) && pdflatex $(FILE)
580 HTML=cd $(WEBDIR) && latex2html $(FILE)
581 INDEX=cd $(OUTDIR) && makeindex $(FILE)
582 PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
587 $(LILYBOOK_PDF) # begin with tab
588 $(PDF) # begin with tab
589 $(INDEX) # begin with tab
590 $(PDF) # begin with tab
591 $(PREVIEW) # begin with tab
594 $(LILYBOOK_HTML) # begin with tab
595 $(HTML) # begin with tab
596 cp -R $(WEBDIR)/$(FILE)/ ./ # begin with tab
597 $(BROWSER) $(FILE)/$(FILE).html & # begin with tab
600 cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf # begin with tab
603 rm -rf $(OUTDIR) # begin with tab
606 rm -rf $(WEBDIR) # begin with tab
609 tar -cvvf myproject.tar \ # begin this line with tab
611 --exclude=htmlout/* \
612 --exclude=myproject/* \
619 TODO: make this thing work on Windows
621 この @code{Makefile} は Windows では機能しません。@c
622 Windows ユーザの代替手段として、@c
623 ビルド コマンドを保持する簡単なバッチ ファイルを作成する方法があります。@c
624 これは @code{Makefile} のように依存関係を保持できませんが、@c
625 少なくともビルド処理を単一のコマンドに縮小します。@c
627 @command{build.bat} あるいは @command{build.cmd} として保存してください。@c
628 このバッチ ファイルは DOS プロンプトから実行することができ、@c
629 単にそのアイコンをダブル クリックすることでも実行することができます。
632 lilypond-book --output=out --pdf myproject.lytex
638 copy out\myproject.pdf MyProject.pdf
644 @rprogram{コマンド ラインの使用方法},
645 @rprogram{lilypond-book}