1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
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 LilyPond プロジェクトに取り組む
18 @chapter LilyPond プロジェクトに取り組む
19 @translationof Working on LilyPond projects
21 このセクションでは一般的な問題のいくつかを@c
22 解決または回避する方法について説明します。@c
23 あなたにプログラミングの経験があるのなら、@c
24 ここで取り上げる TIPS の多くは当たり前のことに見えるかもしれませんが、@c
35 @translationof When things don't work
40 * トラブルシューティング (すべてをバラバラにする)::
45 @node 古い入力ファイルをアップデートする
46 @subsection 古い入力ファイルをアップデートする
47 @translationof Updating old input files
50 @cindex updating old input files (ふるい入力ファイルをアップデートする)
52 LilyPond 入力構文はしばしば変更されます。@c
53 LilyPond 自体の改良に合わせて、構文 (入力言語) も変更されます。@c
55 入力を読みやすく/書きやすくするために行われる場合もありますし、@c
56 LilyPond の新しい機能のために行われる場合もあります。
58 LilyPond は、このアップデートをより容易にするファイル
59 -- @code{convert-ly} -- と一緒に公開されます。@c
61 @rprogram{convert-ly を使ってファイルを更新する} を参照してください。
63 残念なことに、@code{convert-ly} はすべての入力構文の変更を@c
66 (@code{raggedright} が @code{ragged-right} になったなど)
69 @code{convert-ly} が処理できない構文の変更は
70 @rprogram{convert-ly を使ってファイルを更新する} にリストアップされています。
72 例えば、LilyPond 2.4 以前では、アクセントと非英語文字
73 -- 例えば、@code{No@bs{}"el}
74 (これは @q{クリスマス} に対応するフランス語となります) -- は
77 特殊文字 @code{ë} を UTF-8 キャラクタとして@c
78 直接 LilyPond ファイルに入力するようになりました。@c
79 @code{convert-ly} はすべての LaTex 特殊文字を
80 UTF-8 キャラクタに変更することはできません。@c
81 その場合、あなたが手動で古い LilyPond 入力ファイルを@c
87 @translationof Common errors
89 以下で記述するエラーがしばしば起こりますが、@c
92 一旦それらのエラーを経験して理解すれば、@c
99 * 見かけ上 ../ly/init.ly に発生するエラー::
100 * エラー メッセージ Unbound variable %::
101 * エラー メッセージ FT_Get_Glyph_Name::
105 @unnumberedsubsubsec 音楽がページからはみ出す
106 @translationof Music runs off the page
108 右の余白にはみ出した音楽や、過度に密集した音楽の原因は@c
109 ほとんどすべて音符の演奏時間を不適切に入力して、@c
110 小節の最後の音符が小節線を越えたためです。@c
111 小節の最後の音符が自動的に挿入される小節線のところで終わっていなくても@c
113 なぜなら、その音符は単に次の小節に持ち越すと見なされるからです。@c
114 しかしながら、そのような持ち越しの小節が長く続くと、@c
115 音楽は密集したり、ページからはみ出す可能性があります。@c
116 なぜなら、自動改行を挿入できるのは完全な小節
117 -- つまり、すべての音符がその小節の終端までに終わっている小節 --
120 @warning{不適切な演奏時間は自動改行を抑制し、@c
121 その行の音楽は密集したり、ページからはみ出します。}
123 小節チェックを使うと不適切な演奏時間を簡単に見つけ出すことができます
124 -- @ruser{Bar and bar number checks} を参照してください。
125 @c -- @ruser{小節と小節番号チェック} を参照してください。
127 長く続く持ち越しの小節を持とうとするならば、@c
128 改行したいところに不可視の小節線を挿入する必要があります。@c
129 詳細は @ruser{Bar lines} を参照してください。
130 @c 詳細は @ruser{小節線} を参照してください。
134 @unnumberedsubsubsec 余計な譜が出現する
135 @translationof An extra staff appears
137 コンテキストが @code{\new} で明示的に作成されてはいない場合、@c
138 すでに存在しているコンテキストには適用できないコマンドが発生すると@c
139 沈黙のうちにコンテキストが作成されます。@c
140 簡単な楽譜ではコンテキストの自動作成機能は有用であり、@c
141 この LilyPond マニュアルの中の例の大半がこの機能を利用しています。@c
143 時々このコンテキスト自動作成機能が予期せぬ譜や楽譜を発生させます。@c
144 例えば、以下のコードはその後に続く譜の中にある符頭をすべて赤くすると@c
146 実際のところ、その結果は 2 つの譜となり、@c
147 下側の譜の中の符頭はデフォルトの黒のままです。
149 @lilypond[quote,verbatim,relative=2]
150 \override Staff.NoteHead #'color = #red
156 @code{Staff} コンテキストは存在しなかったためです。@c
157 そのため、@code{Staff} コンテキストが 1 つ暗黙的に作成され、@c
158 オーバライドはそのコンテキストに適用されます。@c
159 それから、@code{\new Staff} コマンドがもう 1 つ別の譜を作成し、@c
161 すべての符頭を赤くするための正しいコードは以下のようになります:
163 @lilypond[quote,verbatim,relative=2]
165 \override Staff.NoteHead #'color = #red
171 @code{\relative} コマンドが @code{\repeat} コマンドの中にある場合、@c
172 2 つの譜が生成され、2 番目の譜は 1 番目の譜からずれます。@c
174 @code{\repeat} コマンドは 2 つの @code{\relative} ブロックを生成し、@c
175 それぞれのブロックは暗黙的に @code{Staff} ブロックと @code{\Voice} ブロックを@c
178 @lilypond[quote,verbatim]
179 \repeat unfold 2 \relative { c d e f }
184 @code{\repeat} コマンドと @code{j\relative} コマンドの位置を入れ換えます:
186 @lilypond[quote,verbatim]
188 \repeat unfold 2 { c d e f }
193 @node 見かけ上 ../ly/init.ly に発生するエラー
194 @unnumberedsubsubsec 見かけ上 @code{../ly/init.ly} に発生するエラー
195 @translationof Apparent error in ../ly/init.ly
198 @code{../ly/init.ly} の中に構文エラーがあるという内容の@c
199 さまざまな原因が不明瞭なエラー メッセージが表示される可能性があります。@c
200 例えば、入力ファイルの中で括弧やクォートが対になっていない場合に、@c
203 最も一般的なエラーは @code{score} ブロックの最後に@c
204 波括弧 (@code{@}}) が無いというエラーです。@c
206 @code{score} ブロックが正しく終わっていることをチェックしてください。@c
207 入力ファイルの正しい構造は @rlearning{LilyPond 入力ファイルの仕組み} で@c
209 角括弧と波括弧の対を自動的にハイライトするエディタを使用すると@c
213 歌詞ブロックの最後の音節と閉じ波括弧 (@code{@}}) の間にスペースが@c
216 閉じ波括弧は音節の一部になってしまいます。@c
217 常に @emph{すべての} 中括弧の前後にスペースを置くことをお勧めします。@c
219 -- @ruser{Lyrics explained} を参照してください。
220 @c -- @ruser{歌詞の説明} を参照してください。
223 クォート (@code{"}) を閉じることを忘れた場合にも発生します。@c
225 付随するエラー メッセージがエラーを起こした行の行番号を提示します。@c
226 対になっていないクォートは通常 1 行あるいは 2 行上にあります。
229 @node エラー メッセージ Unbound variable %
230 @unnumberedsubsubsec エラー メッセージ Unbound variable %
231 @translationof Error message Unbound variable %
233 @emph{Scheme} コメントではなく @emph{LilyPond} コメントを@c
237 @qq{GUILE signalled an error ...} とともに@c
238 このエラー メッセージがコンソール出力やログ ファイルの最後に出現します。
240 LilyPond コメントはパーセント記号 (@code{%}) で始まりますが、@c
241 これを Scheme ルーチン内で使ってはいけません。@c
242 Scheme コメントは セミコロン (@code{;}) で始まります。
245 @node エラー メッセージ FT_Get_Glyph_Name
246 @unnumberedsubsubsec エラー メッセージ FT_Get_Glyph_Name
247 @translationof Error message FT_Get_Glyph_Name
249 入力ファイルが UTF-8 エンコーディングで保存されていない非 ASCII 文字を@c
251 このエラー メッセージがコンソール出力やログ ファイルに出現します。@c
252 詳細は @ruser{Text encoding} を参照してください。
253 @c 詳細は @ruser{テキスト エンコーディング} を参照してください。
256 @node トラブルシューティング (すべてをバラバラにする)
257 @subsection トラブルシューティング (すべてをバラバラにする)
258 @translationof Troubleshooting (taking it all apart)
260 遅かれ早かれ、あなたは LilyPond がコンパイルできないファイルを@c
262 LilyPond が返すメッセージはエラーを見つけ出す@c
263 手助けになるかもしれませんが、多くの場合、@c
264 問題の原因を探し出すために調査を行う必要があります。
266 この目的のための最も強力なツールは 1 行コメント (@code{%} で記述します) と@c
267 ブロック コメント (@code{%@{ ... %@}} で記述します) です。@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
299 bass = \relative c' @{
307 そして、問題を起こしている行を見つけ出すまで、@c
308 @code{bass} パートから少しずつコメントを外していきます。
310 もう 1 つの非常に有用なデバッグ テクニックは
311 @c FIXME FIXME FIXME を構築することです。
312 @ref{最小化例} を構築することです。
317 @translationof Minimal examples
319 最小化例は可能な限り小さな例のことです。@c
320 最小化例は長い例よりも理解することがずっと容易です。@c
325 @item メーリング リストに援助要請を送る
326 @item @uref{http://lsr.dsi.unimi.it/,LilyPond Snippet Repository} に例を追加する
329 可能な限り小さな例を構築するための規則はとても単純です:
331 ファイルの不要な部分を削除しようとしているとき、@c
332 実際に削除する代わりにコメント アウトを使用するというのは@c
334 そうしておけば、ある行が実際には必要だということがわかった場合に、@c
335 その行をゼロから入力する代わりに、コメントを外すだけで済みます。
337 @qq{可能な限り小さく} という規則には 2 つの例外があります:
340 @item @code{\version} 番号を含める。
342 例の先頭で @code{@bs{}paper@{ ragged-right=##t @}} を使う。
345 最小化例の要点は読みやすくするということです:
348 @item 複雑な音符、調子、拍子を使うことを避ける
349 -- それらの要素の振る舞いについて何かを示そうとしているのでない限り
350 @item @code{@bs{}override} コマンドを使わない
355 @node Make と Makefile
356 @section Make と Makefile
357 @translationof Make and Makefiles
362 LilyPond を実行できるほとんどすべてのプラットフォームが
363 @code{make} というソフトウェアをサポートします。@c
364 このソフトウェアは @code{Makefile} という名前の特殊なファイルを読み込みます。@c
365 ファイル @code{Makefile} は、@c
367 あるファイルから別のファイルを作り出すために@c
368 オペレーティング システムに渡す必要があるコマンドを定義します。@c
369 例えば、@code{Makefile} は LilyPond を実行して
370 @code{ballad.ly} から @code{ballad.pdf} と @code{ballad.midi} を@c
373 自身の便利さのためかソース ファイルにアクセスしてくれる他の人のために、@c
374 自身のプロジェクト用に @code{Makefile} を作成することが良い場合があります。@c
376 多くのインクルード ファイルと複数の出力オプション
377 (例えば、フル スコア、パート スコア、指揮譜、ピアノ譜など) を持つ
379 ビルドするために複雑なコマンドを必要とするプロジェクト
380 (@code{lilypond-book} プロジェクトなど)
382 @code{Makefile} の複雑さと自由度は、必要性と作者のスキルに応じて、@c
385 GNU/Linux ディストリビューションと MacOS X にインストールされていて、@c
388 @code{make} の使い方についてのすべての詳細は
389 @strong{GNU Make マニュアル} を参照してください。@c
390 これから示すのは @code{make} でできることのほんの一例です。
392 @code{Makefile} の中に規則を定義するためのコマンドは、@c
394 例えば、さまざまな種類がある Linux と MacOS は @code{bash} を使いますが、@c
395 Windows は @code{cmd} を使います。@c
396 MacOS X では、コマンド ライン インタプリタを使用するためにシステムを@c
397 コンフィグレーションする必要があるということに注意してください。@c
398 ここで、@code{Makefile} の例をいくつか
399 Linux/MacOS 用と Windows 用の両方のバージョンで示します。
401 最初の例は、4 楽章のオーケストラのためのもので、@c
419 | |-- symphony-cello.ly
420 | |-- symphony-horn.ly
421 | |-- symphony-oboes.ly
422 | |-- symphony-viola.ly
423 | |-- symphony-violinOne.ly
424 | `-- symphony-violinTwo.ly
434 @code{Scores} ディレクトリと @code{Parts} ディレクトリの中にある
436 @code{Notes} ディレクトリの中にある @code{.ily} ファイルから取得します:
439 %%% top of file "symphony-cello.ly"
440 \include ../definitions.ily
441 \include ../Notes/cello.ily
444 この @code{Makefile} はターゲットとして
445 @code{score} (フル スコアの楽曲全体)、@c
446 @code{movements} (フル スコアの個々の楽章)、@c
447 それに @code{parts} (演奏者のための個々のパート) を持ちます。@c
448 さらに、web や email で配布するのに適したソース ファイルの tarball
449 (訳者: 複数のファイルをコマンド @code{tar} で 1 つのファイルにまとめたもの)
450 を作成するターゲット @code{archive} もあります。@c
451 ここでは GNU/Linux や MacOS X 用の @code{Makefile} を示します。@c
452 これをプロジェクトのトップ ディレクトリに
453 @code{Makefile} という名前で保存する必要があります:
455 @warning{ターゲットやパターン ルールが定義されたとき、@c
456 そのあとの行はスペースではなく Tab で始まる必要があります。}
459 # the name stem of the output files
460 # 出力ファイル名の語幹: symphonyI.pdf, symphonyIII.ly など
462 # determine how many processors are present
464 CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
465 # The command to run lilypond
467 LILY_CMD = lilypond -ddelete-intermediate-files \
468 -dno-point-and-click -djob-count=$(CPU_CORES)
470 # The suffixes used in this Makefile.
471 # この Makefile で使用される拡張子
472 .SUFFIXES: .ly .ily .pdf .midi
474 # Input and output files are searched in the directories listed in
475 # the VPATH variable. All of them are subdirectories of the current
476 # directory (given by the GNU make variable `CURDIR').
477 # 入力ファイルと出力ファイルのサーチは VPATH 変数でリストアップされている
478 # ディレクトリの中で行われます。それらのディレクトリはすべて (GNU make 変数
479 # `CURDIR' によって与えられる) カレント ディレクトリのサブディレクトリです。
486 # LY 入力ファイルから PDF ファイルと MIDI ファイルを作成するための
487 # パターン ルール。.pdf 出力ファイルは `PDF' サブディレクトリの中に
488 # 配置され、.midi ファイルは `MIDI' サブディレクトリの中に配置されます。
490 $(LILY_CMD) $<; \ # this line begins with a tab
491 if test -f "$*.pdf"; then \
494 if test -f "$*.midi"; then \
495 mv "$*.midi" MIDI/; \
506 # The dependencies of the movements.
507 # ターゲット movements の依存関係
508 $(piece)I.pdf: $(piece)I.ly $(notes)
509 $(piece)II.pdf: $(piece)II.ly $(notes)
510 $(piece)III.pdf: $(piece)III.ly $(notes)
511 $(piece)IV.pdf: $(piece)IV.ly $(notes)
513 # The dependencies of the full score.
515 $(piece).pdf: $(piece).ly $(notes)
517 # The dependencies of the parts.
519 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
520 $(piece)-horn.pdf: $(piece)-horn.ly horn.ily
521 $(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
522 $(piece)-viola.pdf: $(piece)-viola.ly viola.ily
523 $(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
524 $(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
526 # Type `make score' to generate the full score of all four
527 # movements as one file.
528 # 4 つすべての楽章のフル スコアを 1 つのファイルとして生成するには
529 # `make score' とタイプします。
533 # Type `make parts' to generate all parts.
534 # Type `make foo.pdf' to generate the part for instrument `foo'.
535 # Example: `make symphony-cello.pdf'.
536 # すべてのパートを生成するには `make parts' とタイプします。
537 # 楽器 `foo' のためのパートを生成するには `make foo.pdf' とタイプします。
538 # 例: `make symphony-cello.pdf'
540 parts: $(piece)-cello.pdf \
541 $(piece)-violinOne.pdf \
542 $(piece)-violinTwo.pdf \
547 # Type `make movements' to generate files for the
548 # four movements separately.
549 # 4 つの楽章を別個のファイルとして生成するには `make movements' とタイプします。
551 movements: $(piece)I.pdf \
556 all: score parts movements
559 tar -cvvf stamitz.tar \ # this line begins with a tab
560 --exclude=*pdf --exclude=*~ \
561 --exclude=*midi --exclude=*.tar \
566 Windows プラットフォームには特別な面倒さがあります。@c
567 Windows 用の GNU Make をダウンロードしてインストールした後、@c
568 システム環境変数に正しいパスを設定して、@c
569 DOS シェルが Make プログラムを見つけられるようにする必要があります。@c
571 "マイ コンピュータ" を右クリックして、@code{プロパティ} を選択し、@c
572 それから @code{詳細設定} を選択します。@c
573 それから @code{環境変数} をクリックして、@c
574 @code{システム環境変数} パネルの中にある @code{Path} をハイライトしてから
576 GNU Make の実行ファイルへのパスを追加します。@c
578 (訳者: GNU Make のインストールのされ方によって異なります):
581 C:\Program Files\GnuWin32\bin
584 Linux/MacOS X とは異なるシェル コマンドを扱い、@c
585 いくつかのデフォルト システム ディレクトリの中に存在する@c
587 @code{Makefile} 自体を変更する必要があります。@c
588 Windows は @code{tar} コマンドを持たないため、@c
589 @code{archive} ターゲットは除去されます。@c
590 また、Windows が持つ MIDI ファイルのデフォルト拡張子は異なります。
596 LILY_CMD = lilypond -ddelete-intermediate-files \
597 -dno-point-and-click \
598 -djob-count=$(NUMBER_OF_PROCESSORS)
600 #get the 8.3 name of CURDIR (workaround for spaces in PATH)
601 workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
604 .SUFFIXES: .ly .ily .pdf .mid
613 $(LILY_CMD) $< # this line begins with a tab
614 if exist "$*.pdf" move /Y "$*.pdf" PDF/ # begin with tab
615 if exist "$*.mid" move /Y "$*.mid" MIDI/ # begin with tab
627 $(piece)I.pdf: $(piece)I.ly $(notes)
628 $(piece)II.pdf: $(piece)II.ly $(notes)
629 $(piece)III.pdf: $(piece)III.ly $(notes)
630 $(piece)IV.pdf: $(piece)IV.ly $(notes)
632 $(piece).pdf: $(piece).ly $(notes)
634 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
635 $(piece)-horn.pdf: $(piece)-horn.ly horn.ily
636 $(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
637 $(piece)-viola.pdf: $(piece)-viola.ly viola.ily
638 $(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
639 $(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
645 parts: $(piece)-cello.pdf \
646 $(piece)-violinOne.pdf \
647 $(piece)-violinTwo.pdf \
653 movements: $(piece)I.pdf \
658 all: score parts movements
662 次の @code{Makefile} は、@c
663 LaTeX で処理する @command{lilypond-book} ドキュメント用です。@c
666 リンクを更新するために @command{latex} コマンドを 2 回実行する必要があります。@c
667 .pdf 出力ファイルは @code{out} ディレクトリに保存され、@c
668 HTML 出力ファイルは @code{htmlout} ディレクトリに保存されます。
677 LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
678 LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
679 PDF=cd $(OUTDIR) && pdflatex $(FILE)
680 HTML=cd $(WEBDIR) && latex2html $(FILE)
681 INDEX=cd $(OUTDIR) && makeindex $(FILE)
682 PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
687 $(LILYBOOK_PDF) # begin with tab
688 $(PDF) # begin with tab
689 $(INDEX) # begin with tab
690 $(PDF) # begin with tab
691 $(PREVIEW) # begin with tab
694 $(LILYBOOK_HTML) # begin with tab
695 $(HTML) # begin with tab
696 cp -R $(WEBDIR)/$(FILE)/ ./ # begin with tab
697 $(BROWSER) $(FILE)/$(FILE).html & # begin with tab
700 cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf # begin with tab
703 rm -rf $(OUTDIR) # begin with tab
706 rm -rf $(WEBDIR) # begin with tab
709 tar -cvvf myproject.tar \ # begin this line with tab
711 --exclude=htmlout/* \
712 --exclude=myproject/* \
719 TODO: make this thing work on Windows
721 この @code{Makefile} は Windows では機能しません。@c
722 Windows ユーザの代替手段として、@c
723 ビルド コマンドを保持する簡単なバッチ ファイルを作成する方法があります。@c
724 これは @code{Makefile} のように依存関係を保持できませんが、@c
725 少なくともビルド処理を単一のコマンドに縮小します。@c
727 @command{build.bat} あるいは @command{build.cmd} として保存してください。@c
728 このバッチ ファイルは DOS プロンプトから実行することができ、@c
729 単にそのアイコンをダブル クリックすることでも実行することができます。
732 lilypond-book --output=out --pdf myproject.lytex
738 copy out\myproject.pdf MyProject.pdf
745 @c @rprogram{Setup for MacOS X},
746 @rprogram{コマンド ラインの使用方法},
747 @rprogram{lilypond-book}