@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
@ignore
- Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
+ Translation of GIT committish: fabcd22c8f88ea9a87241597f1e48c0a9adbfc6e
When revising a translation, copy the HEAD committish of the
- version that you are working on. See TRANSLATION for details.
+ version that you are working on. For details, see the Contributors'
+ Guide, node Updating translation committishes..
@end ignore
-@c \version "2.12.0"
+@c \version "2.19.21"
@c Translators: Yoshiki Sawada
@c Translation status: post-GDP
@node LilyPond 入力ファイルの記述に対する提案
@chapter LilyPond 入力ファイルの記述に対する提案
-@translationof Suggestions for writing LilyPond input files
+@translationof Suggestions for writing files
今やあなたはもっと大きな LilyPond 入力ファイル -- チュートリアルにあるような@c
小さな例ではなく、楽曲全体 -- を書き始める準備が整っています。@c
入力構文は LilyPond の改良に合わせてしばしば変更されます。@c
たいていの変更は @code{convert-ly} で自動的に変換できますが、@c
いくつかの変更は手動での援助を必要とするかもしれません。@c
-LilyPond 入力ファイルはより容易に (あるいはより困難に)
-アップグレードできるように構成することができます。
+LilyPond 入力ファイルはより容易に (あるいはより困難に)
+更新できるように構成することができます。
+
@end itemize
@menu
* 一般的な提案::
* 既存の音楽を譜刻する::
* 大きなプロジェクト::
+* トラブルシュート::
+* Make と Makefile::
@end menu
@item @strong{すべてのファイルに @code{@bs{}version} 番号を含めます}。@c
テンプレートはすべて @code{@bs{}version} 情報を保持しているということに@c
注意してください。@c
-常に @code{@bs{}version} を含めること -- ファイルの大小にかかわらず --
+常に @code{@bs{}version} を含めること -- ファイルの大小にかかわらず --
を強く推奨します。@c
個人的な経験から言って、数年前に使っていた LilyPond のバージョンを@c
思い出そうとすることは大変なことです。@c
@command{convert-ly} は使用した LilyPond のバージョンを宣言することを@c
必要とします。
-@item @strong{チェックを含めます}: @ruser{Bar and bar number checks},
-@ruser{Octave checks}。@c
+@item @strong{チェックを含めます}:
+@ruser{小節と小節番号のチェック}, @ruser{オクターブ チェック}。@c
時々チェックを入れておけば、ミスをしたときに素早くそれを@c
見つけ出すことができます。@c
@q{時々} とはどれくらいの頻度なのでしょうか?@c
そうするだけの価値はありません。
@item @strong{入力ファイルにコメントをつけます}。@c
-コメントとして小節番号 (時々) や音楽テーマへの参照
-(@q{second theme in violins}, @q{fourth variation}
-(@q{ヴァイオリンの第 2 テーマ}, @q{第 4 ヴァイオリン})
+コメントとして小節番号 (時々) や音楽テーマへの参照
+(@q{second theme in violins}, @q{fourth variation}
+(@q{ヴァイオリンの第 2 テーマ}, @q{第 4 ヴァイオリン})
など) を使用します。@c
初めて楽曲を書いているときはコメントをつける必要は無いかもしれません。@c
しかしながら、数年後に何か変更を加えたいと思った場合や、@c
後になって音楽を再編成する場合に問題の発生を免れる可能性があります。
@item 音楽定義から@strong{調整を分離します}。@c
-@rlearning{変数と関数を用いて入力の手間を省く} と
+@rlearning{変数と関数を用いて入力の手間を省く} と
@rlearning{スタイル シート} を参照してください。
@end itemize
@section 既存の音楽を譜刻する
@translationof Typesetting existing music
-既存の楽譜からの音楽を入力している
+既存の楽譜からの音楽を入力している
(つまり、既存の楽譜の楽曲を譜刻している) のなら、
@itemize
-@item 1 回につき 1 つのシステム
+@item 1 回につき 1 つのシステム
(訳者: システムとは譜の集まりのこと。例えば、ピアノ譜での 1 システムとは、@c
-右手譜 1 小節とそれに対応する左手譜 1 小節)
+右手譜 1 小節とそれに対応する左手譜 1 小節)
を入力し (しかし、それでもテキスト 1 行につき 1 小節だけにします)、@c
それを終えたときに各システムをチェックします。@c
-処理をスピード アップさせるために @code{showLastLength} プロパティや
-@code{showFirstLength} プロパティを使うことになるかもしれません --
+処理をスピード アップさせるために @code{showLastLength} プロパティや
+@code{showFirstLength} プロパティを使うことになるかもしれません --
@ruser{Skipping corrected music} を参照してください。
@item @code{mBreak = @{ @bs{}break @}} を定義して、写している楽譜が@c
改行するたびに @code{@bs{}mBreak} を入力ファイルに挿入します。@c
これにより、LilyPond の音楽とオリジナルの音楽を比較することが@c
ずっと容易になります。@c
-入力した楽譜の校正が終わったときに、それらの改行すべてを削除するために
+入力した楽譜の校正が終わったときに、それらの改行すべてを削除するために
@code{mBreak = @{ @}} を定義することになるかもしれません。@c
これにより、LilyPond は LilyPond が最適と思う場所に@c
改行を入れることができるようになります。
@example
\transpose c natural-pitch @{...@}
@end example
-(@code{natural-pitch} はその楽器のオープン ピッチです)
+
+@noindent
+(@code{natural-pitch} はその楽器のオープン ピッチです)
これにより、変数の中の音楽は C で効率的に記述することができます。@c
-変数を使用していれば、必要なときに移調しなおすこともできます
+変数を使用していれば、必要なときに移調しなおすこともできます
(例えば、楽譜をコンサート ピッチで譜刻したり、@c
トロンボーン パートをト音記号からヘ音記号に変換したり、など)。@c
音楽をすべて変数の中に首尾一貫したピッチで記述しておけば、@c
変更される可能性はまずありません。
@example
-violin = \relative c'' @{
-g4 c'8. e16
+violin = \relative @{
+g'4 c'8. e16
@}
...
\score @{
@example
fthenp = _\markup@{
\dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
-violin = \relative c'' @{
-g4\fthenp c'8. e16
+violin = \relative @{
+g'4\fthenp c'8. e16
@}
@end example
@end itemize
+
+
+@node トラブルシュート
+@section トラブルシュート
+@translationof Troubleshooting
+
+遅かれ早かれ、あなたは LilyPond がコンパイルできないファイルを@c
+書くことになります。@c
+LilyPond が返すメッセージはエラーを見つけ出す@c
+手助けになるかもしれませんが、多くの場合、@c
+問題の原因を探し出すために調査を行う必要があります。
+
+この目的のための最も強力なツールは 1 行コメント (@code{%} で記述します) と@c
+ブロック コメント (@code{%@{ ... %@}} で記述します) です。@c
+問題がどこにあるかわからない場合、@c
+入力ファイルの大きな一部分をコメント アウトすることから始めます。@c
+あるセクションをコメント アウトして、そのファイルを再びコンパイルしてみます。@c
+コンパイルが通ったのなら、問題は今コメント アウトした部分の中にあります。@c
+コンパイルが通らなかった場合は、コンパイルが通るようになるまで@c
+コメント アウトしたままにしておきます。
+
+極端な場合、最終的に以下のようになるかもしれません:
+
+@example
+\score @{
+ <<
+ % \melody
+ % \harmony
+ % \bass
+ >>
+ \layout@{@}
+@}
+@end example
+
+@noindent
+(言い換えると、何の音楽も持たないファイルです)
+
+こうなったとしても、あきらめないでください。@c
+少しだけコメントを外して -- 例えば、バス パートを --
+コンパイルが通るかどうか試してみます。@c
+コンパイルが通らなかった場合は、バスの音楽をすべてコメント アウトします
+(しかし、@code{@bs{}score} の中の @code{@bs{}bass} はコメントを@c
+外したままにしておきます)。
+
+@example
+bass = \relative @{
+%@{
+ c'4 c c c
+ d d d d
+%@}
+@}
+@end example
+
+そして、問題を起こしている行を見つけ出すまで、@c
+@code{bass} パートから少しずつコメントを外していきます。
+
+もう 1 つの非常に有用なデバッグ テクニックは
+@rweb{Tiny examples} を構築することです。
+
+
+@node Make と Makefile
+@section Make と Makefile
+@translationof Make and Makefiles
+
+LilyPond を実行できるほとんどすべてのプラットフォームが
+@code{make} というソフトウェアをサポートします。@c
+このソフトウェアは @code{Makefile} という名前の特殊なファイルを読み込みます。@c
+ファイル @code{Makefile} は、@c
+ファイルの依存関係と、@c
+あるファイルから別のファイルを作り出すために@c
+オペレーティング システムに渡す必要があるコマンドを定義します。@c
+例えば、@code{Makefile} は LilyPond を実行して
+@code{ballad.ly} から @code{ballad.pdf} と @code{ballad.midi} を@c
+作り出す方法を記述します。
+
+自身の便利さのためかソース ファイルにアクセスしてくれる他の人のために、@c
+自身のプロジェクト用に @code{Makefile} を作成することが良い場合があります。@c
+これが当てはまるのは、@c
+多くのインクルード ファイルと複数の出力オプション
+(例えば、フル スコア、パート スコア、指揮譜、ピアノ譜など) を持つ
+非常に大きなプロジェクト、あるいは、@c
+ビルドするために複雑なコマンドを必要とするプロジェクト
+(@code{lilypond-book} プロジェクトなど)
+です。@c
+@code{Makefile} の複雑さと自由度は、必要性と作者のスキルに応じて、@c
+さまざまです。@c
+プログラム GNU Make は
+GNU/Linux ディストリビューションと MacOS X にインストールされていて、@c
+Windows でも利用可能です。
+
+@code{make} の使い方についてのすべての詳細は
+@strong{GNU Make マニュアル} を参照してください。@c
+これから示すのは @code{make} でできることのほんの一例です。
+
+@code{Makefile} の中に規則を定義するためのコマンドは、@c
+プラットフォームによって異なります。@c
+例えば、さまざまな種類がある GNU/Linux と MacOS は @code{bash} を@c
+使いますが、Windows は @code{cmd} を使います。@c
+MacOS X では、コマンド ライン インタプリタを使用するためにシステムを@c
+コンフィグレーションする必要があるということに注意してください。@c
+ここで、@code{Makefile} の例をいくつか
+GNU/Linux/MacOS 用と Windows 用の両方のバージョンで示します。
+
+最初の例は、4 楽章のオーケストラのためのもので、@c
+以下のようなディレクトリ構造を持ちます:
+
+@example
+Symphony/
+|-- MIDI/
+|-- Makefile
+|-- Notes/
+| |-- cello.ily
+| |-- figures.ily
+| |-- horn.ily
+| |-- oboe.ily
+| |-- trioString.ily
+| |-- viola.ily
+| |-- violinOne.ily
+| `-- violinTwo.ily
+|-- PDF/
+|-- Parts/
+| |-- symphony-cello.ly
+| |-- symphony-horn.ly
+| |-- symphony-oboes.ly
+| |-- symphony-viola.ly
+| |-- symphony-violinOne.ly
+| `-- symphony-violinTwo.ly
+|-- Scores/
+| |-- symphony.ly
+| |-- symphonyI.ly
+| |-- symphonyII.ly
+| |-- symphonyIII.ly
+| `-- symphonyIV.ly
+`-- symphonyDefs.ily
+@end example
+
+@code{Scores} ディレクトリと @code{Parts} ディレクトリの中にある
+@code{.ly} ファイルは音符を
+@code{Notes} ディレクトリの中にある @code{.ily} ファイルから取得します:
+
+@example
+%%% top of file "symphony-cello.ly"
+\include ../symphonyDefs.ily
+\include ../Notes/cello.ily
+@end example
+
+この @code{Makefile} はターゲットとして
+@code{score} (フル スコアの楽曲全体)、@c
+@code{movements} (フル スコアの個々の楽章)、@c
+それに @code{parts} (演奏者のための個々のパート) を持ちます。@c
+さらに、web や email で配布するのに適したソース ファイルの tarball
+(訳者: 複数のファイルをコマンド @code{tar} で 1 つのファイルにまとめたもの)
+を作成するターゲット @code{archive} もあります。@c
+ここでは GNU/Linux や MacOS X 用の @code{Makefile} を示します。@c
+これをプロジェクトのトップ ディレクトリに
+@code{Makefile} という名前で保存する必要があります:
+
+@warning{ターゲットやパターン ルールが定義されたとき、@c
+そのあとの行はスペースではなく Tab で始まる必要があります。}
+
+@example
+# 出力ファイル名
+piece = symphony
+# いくつプロセッサがあるかを決定します
+CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
+# lilypond を実行するコマンド
+LILY_CMD = lilypond -ddelete-intermediate-files \
+ -dno-point-and-click -djob-count=$(CPU_CORES)
+
+# この Makefile で使用される拡張子
+.SUFFIXES: .ly .ily .pdf .midi
+
+# 入力ファイルと出力ファイルのサーチは VPATH 変数でリストアップされている
+# ディレクトリの中で行われます。それらのディレクトリはすべて (GNU make 変数
+# `CURDIR' によって与えられる) カレント ディレクトリのサブディレクトリです。
+VPATH = \
+ $(CURDIR)/Scores \
+ $(CURDIR)/PDF \
+ $(CURDIR)/Parts \
+ $(CURDIR)/Notes
+
+# LY 入力ファイルから PDF ファイルと MIDI ファイルを作成するための
+# パターン ルール。.pdf 出力ファイルは `PDF' サブディレクトリの中に
+# 配置され、.midi ファイルは `MIDI' サブディレクトリの中に配置されます。
+%.pdf %.midi: %.ly
+ $(LILY_CMD) $<; \ # this line begins with a tab
+ if test -f "$*.pdf"; then \
+ mv "$*.pdf" PDF/; \
+ fi; \
+ if test -f "$*.midi"; then \
+ mv "$*.midi" MIDI/; \
+ fi
+
+notes = \
+ cello.ily \
+ horn.ily \
+ oboe.ily \
+ viola.ily \
+ violinOne.ily \
+ violinTwo.ily
+
+# 楽章の依存関係
+$(piece)I.pdf: $(piece)I.ly $(notes)
+$(piece)II.pdf: $(piece)II.ly $(notes)
+$(piece)III.pdf: $(piece)III.ly $(notes)
+$(piece)IV.pdf: $(piece)IV.ly $(notes)
+
+# 総譜の依存関係
+$(piece).pdf: $(piece).ly $(notes)
+
+# パート譜の依存関係
+$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
+$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
+$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
+$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
+$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
+$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
+
+# 4 つすべての楽章のフル スコアを 1 つのファイルとして生成するには
+# `make score' とタイプします。
+.PHONY: score
+score: $(piece).pdf
+
+# すべてのパートを生成するには `make parts' とタイプします。
+# 楽器 `foo' のためのパートを生成するには `make foo.pdf' とタイプします。
+# 例: `make symphony-cello.pdf'
+.PHONY: parts
+parts: $(piece)-cello.pdf \
+ $(piece)-violinOne.pdf \
+ $(piece)-violinTwo.pdf \
+ $(piece)-viola.pdf \
+ $(piece)-oboes.pdf \
+ $(piece)-horn.pdf
+
+# 4 つの楽章を別個のファイルとして生成するには `make movements' とタイプします。
+.PHONY: movements
+movements: $(piece)I.pdf \
+ $(piece)II.pdf \
+ $(piece)III.pdf \
+ $(piece)IV.pdf
+
+all: score parts movements
+
+archive:
+ tar -cvvf stamitz.tar \ # this line begins with a tab
+ --exclude=*pdf --exclude=*~ \
+ --exclude=*midi --exclude=*.tar \
+ ../Stamitz/*
+@end example
+
+
+Windows プラットフォームには特別な面倒さがあります。@c
+Windows 用の GNU Make をダウンロードしてインストールした後、@c
+システム環境変数に正しいパスを設定して、@c
+DOS シェルが Make プログラムを見つけられるようにする必要があります。@c
+これを行うには、@c
+"マイ コンピュータ" を右クリックして、@code{プロパティ} を選択し、@c
+それから @code{詳細設定} を選択します。@c
+それから @code{環境変数} をクリックして、@c
+@code{システム環境変数} パネルの中にある @code{Path} をハイライトしてから
+@code{編集} をクリックして、@c
+GNU Make の実行ファイルへのパスを追加します。@c
+そのパスは以下のようになります
+(訳者: GNU Make のインストールのされ方によって異なります):
+
+@example
+C:\Program Files\GnuWin32\bin
+@end example
+
+Linux/MacOS X とは異なるシェル コマンドを扱い、@c
+いくつかのデフォルト システム ディレクトリの中に存在する@c
+ファイル空間を扱うために、@c
+@code{Makefile} 自体を変更する必要があります。@c
+Windows は @code{tar} コマンドを持たないため、@c
+@code{archive} ターゲットは除去されます。@c
+また、Windows が持つ MIDI ファイルのデフォルト拡張子は異なります。
+
+@example
+## WINDOWS VERSION
+##
+piece = symphony
+LILY_CMD = lilypond -ddelete-intermediate-files \
+ -dno-point-and-click \
+ -djob-count=$(NUMBER_OF_PROCESSORS)
+
+#get the 8.3 name of CURDIR (workaround for spaces in PATH)
+workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
+ do @@echo %%~sb)
+
+.SUFFIXES: .ly .ily .pdf .mid
+
+VPATH = \
+ $(workdir)/Scores \
+ $(workdir)/PDF \
+ $(workdir)/Parts \
+ $(workdir)/Notes
+
+%.pdf %.mid: %.ly
+ $(LILY_CMD) $< # this line begins with a tab
+ if exist "$*.pdf" move /Y "$*.pdf" PDF/ # begin with tab
+ if exist "$*.mid" move /Y "$*.mid" MIDI/ # begin with tab
+
+notes = \
+ cello.ily \
+ figures.ily \
+ horn.ily \
+ oboe.ily \
+ trioString.ily \
+ viola.ily \
+ violinOne.ily \
+ violinTwo.ily
+
+$(piece)I.pdf: $(piece)I.ly $(notes)
+$(piece)II.pdf: $(piece)II.ly $(notes)
+$(piece)III.pdf: $(piece)III.ly $(notes)
+$(piece)IV.pdf: $(piece)IV.ly $(notes)
+
+$(piece).pdf: $(piece).ly $(notes)
+
+$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
+$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
+$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
+$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
+$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
+$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
+
+.PHONY: score
+score: $(piece).pdf
+
+.PHONY: parts
+parts: $(piece)-cello.pdf \
+ $(piece)-violinOne.pdf \
+ $(piece)-violinTwo.pdf \
+ $(piece)-viola.pdf \
+ $(piece)-oboes.pdf \
+ $(piece)-horn.pdf
+
+.PHONY: movements
+movements: $(piece)I.pdf \
+ $(piece)II.pdf \
+ $(piece)III.pdf \
+ $(piece)IV.pdf
+
+all: score parts movements
+@end example
+
+
+次の @code{Makefile} は、@c
+LaTeX で処理する @command{lilypond-book} ドキュメント用です。@c
+このドキュメントは目次を持ちます。@c
+目次を作成するには、@c
+リンクを更新するために @command{latex} コマンドを 2 回実行する必要があります。@c
+.pdf 出力ファイルは @code{out} ディレクトリに保存され、@c
+HTML 出力ファイルは @code{htmlout} ディレクトリに保存されます。
+
+@example
+SHELL=/bin/sh
+FILE=myproject
+OUTDIR=out
+WEBDIR=htmlout
+VIEWER=acroread
+BROWSER=firefox
+LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
+LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
+PDF=cd $(OUTDIR) && pdflatex $(FILE)
+HTML=cd $(WEBDIR) && latex2html $(FILE)
+INDEX=cd $(OUTDIR) && makeindex $(FILE)
+PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
+
+all: pdf web keep
+
+pdf:
+ $(LILYBOOK_PDF) # begin with tab
+ $(PDF) # begin with tab
+ $(INDEX) # begin with tab
+ $(PDF) # begin with tab
+ $(PREVIEW) # begin with tab
+
+web:
+ $(LILYBOOK_HTML) # begin with tab
+ $(HTML) # begin with tab
+ cp -R $(WEBDIR)/$(FILE)/ ./ # begin with tab
+ $(BROWSER) $(FILE)/$(FILE).html & # begin with tab
+
+keep: pdf
+ cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf # begin with tab
+
+clean:
+ rm -rf $(OUTDIR) # begin with tab
+
+web-clean:
+ rm -rf $(WEBDIR) # begin with tab
+
+archive:
+ tar -cvvf myproject.tar \ # begin this line with tab
+ --exclude=out/* \
+ --exclude=htmlout/* \
+ --exclude=myproject/* \
+ --exclude=*midi \
+ --exclude=*pdf \
+ --exclude=*~ \
+ ../MyProject/*
+@end example
+
+TODO: make this thing work on Windows
+
+この @code{Makefile} は Windows では機能しません。@c
+Windows ユーザの代替手段として、@c
+ビルド コマンドを保持する簡単なバッチ ファイルを作成する方法があります。@c
+これは @code{Makefile} のように依存関係を保持できませんが、@c
+少なくともビルド処理を単一のコマンドに縮小します。@c
+以下のコードを
+@command{build.bat} あるいは @command{build.cmd} として保存してください。@c
+このバッチ ファイルは DOS プロンプトから実行することができ、@c
+単にそのアイコンをダブル クリックすることでも実行することができます。
+
+@example
+lilypond-book --output=out --pdf myproject.lytex
+cd out
+pdflatex myproject
+makeindex myproject
+pdflatex myproject
+cd ..
+copy out\myproject.pdf MyProject.pdf
+@end example
+
+
+@seealso
+アプリケーションの使用方法:
+@rprogram{コマンド ラインの使用方法},
+@rprogram{lilypond-book}