| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Working with input files
| 3.3.1 LilyPond ファイルをインクルードする | ||
| 3.3.2 1 つのソースから異なる版を生成する | ||
| 3.3.3 特殊文字 |
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Including LilyPond files
大きなプロジェクトは別々のファイルに分割することができます。他のファイルを参照するには、以下のようにします:
\include "otherfile.ly" |
\include "otherfile.ly" という行は、‘otherfile.ly’ の内容をカレント ファイルの \include
がある場所に貼り付けるのと等価です。例えば、大きなプロジェクトでは、個々の楽器パートを別々のファイルで記述し、個々の楽器ファイルをまとめる “総譜” ファイルを作成することができます。通常、インクルードされるファイルはいくつかの変数を定義し、それらの変数は総譜ファイルの中で使用されます。インクルードされるファイルの中でタグ付きセクションにマークを付けて、それを楽譜の他の場所で使うことができます
– @ref{Different editions from one source} を参照してください。
カレントのワーキング ディレクトリの中にあるファイルは
\include コマンドに後にファイル名を指定するだけで参照することができます。他の場所にあるファイルはフル パス参照か相対パス参照
(ディレクトリ区切りとして、UNIX ではスラッシュ / を使用しますが、DOS/Windows ではバックスラッシュ \ を使用します) によって参照することができます。例えば、‘stuff.ly’ がカレントのワーキング ディレクトリよりも
1 つ上のディレクトリの中にある場合、以下のようにインクルードします:
\include "../stuff.ly" |
あるいは、インクルードされるオーケストラのすべてのパート ファイルが、カレント ディレクトリ内部の ‘parts’ というサブディレクトリの中に配置されている場合、以下のようにインクルードします:
\include "parts/VI.ly" \include "parts/VII.ly" … etc |
インクルードされるファイルも \include 文を持つことができます。それら第 2 レベルの \include 文はそのファイルがメイン ファイルに組み込まれるまで解釈されません。そのため、第 2 レベルの \include 文で指定するファイル名はすべてメイン ファイルを保持しているディレクトリからの相対参照で指定しなければなりません
– インクルード ファイルを保持しているディレクトリからではありません。しかしながら、この振る舞いは、オプション ‘-drelative-includes’ をコマンド ラインで渡すことによって
(あるいは、メイン入力ファイルの先頭に
#(ly:set-option 'relative-includes #t) を付け加えることによって)
グローバルに変更することができます。
relative-includes をセットした時、各 \include コマンドのパスはそのコマンドを保持しているファイルからの相対参照になります。この振る舞いを使用することが推奨されていて、lilypond の将来のバージョンではこの振る舞いがデフォルトになります。
relative-includes をファイル内の正しい位置で #t あるいは
#f にセットすることで、メイン ディレクトリからの相対位置にあるファイルや、その他のディレクトリからの相対位置にあるファイルを同時に
\include することができます。例えば、様々なファイルから使われるようなライブラリ libA のエントリ ポイントが、サブ ファイルを \include している場合、これらの \include 文の前に
#(ly:set-option #relative-includes #t)
を配置し、メインの .ly ファイルに読み込まれる時に、パスが正しく解釈されるようにします。このようになります:
libA/ libA.ly A1.ly A2.ly … |
エントリ ポイントとなるファイル libA.ly には以下の内容を含んでいます:
#(ly:set-option 'relative-includes #t) \include "A1.ly" \include "A2.ly" … % 通常の設定に戻します #(ly:set-option 'relative-includes #f) |
あとは以下の構文で、好きな ‘.ly’ ファイルからライブラリ全体を読み込むことができます:
\include "~/libA/libA.ly" |
さらに複雑なファイル構造も、設定を適切な場所で変更することによって扱うことができます。
コマンド ラインから LilyPond を呼び出すときにオプションとして指定したサーチ パスに含まれるディレクトリからファイルをインクルードすることもできます。サーチ パスを指定した場合、インクルードされるファイルはファイル名だけで指定されます。例えば、サーチ パスで指定する ‘parts’ というサブディレクトリの中にあるファイルをインクルードする ‘main.ly’ をコンパイルするには、‘main.ly’ を保持しているディレクトリに cd して、以下を入力します:
lilypond --include=parts main.ly |
‘main.ly’ の中には以下を記述しておきます:
\include "VI.ly" \include "VII.ly" … etc |
いくつもの楽譜でインクルードされるファイルは
LilyPond ディレクトリ ‘../ly’ の中に置くことになるかもしれません
(このディレクトリが存在する場所はインストールの仕方に依存します
–
(learning)Other sources of information section ‘Other sources of information’ in Learning Manual を参照してください)。このディレクトリの中にあるファイルは、\include 文でファイル名を指定するだけでインクルードすることができます。この方法で ‘english.ly’ のような言語依存のファイルをインクルードしています。
LilyPond は、実行開始時に、デフォルトでいくつかのファイルをインクルードします。このインクルードはユーザには明らかにされませんが、コマンド ラインから lilypond --verbose を実行することによってインクルードされるファイルを明らかにすることができます。--verbose オプションは、他の多くの情報とともに、LilyPond が使用するパスとファイルのリストを表示します。また、デフォルトでインクルードされるファイルのうち、より重要なファイルについて
(learning)Other sources of information section ‘Other sources of information’ in Learning Manual
で議論されています。これらのファイルを編集することができますが、これらのファイルに加えられた変更は新しいバージョンの LilyPond をインストールすると失われます。
\include を使用している簡単な例がいくつか
(learning)Scores and parts section ‘Scores and parts’ in Learning Manual で示されています。
学習マニュアル: (learning)Other sources of information section ‘Other sources of information’ in Learning Manual, (learning)Scores and parts section ‘Scores and parts’ in Learning Manual
インクルードされるファイルに LilyPond のインストール ファイルと同じ名前が与えられている場合、LilyPond のインストール ファイルが優先されます。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Different editions from one source
同じ音楽ソースから異なるバージョンの楽譜を容易に生成できるようにするために、いくつかの方法が用意されています。長い音楽や注記のセクションをさまざまなやり方で組み合わせる場合には、おそらく変数が最も役に立つでしょう。差し替え用の短い音楽セクションの中から 1 つを選択する場合にはタグが役に立ち、楽曲の一部をいろいろな箇所で組み合わせることもできます。
どのような方法をとるにしても、楽譜構造から音楽表記を分離しておくと、音楽表記に手を触れずに楽譜構造を変更することが簡単に行えます。
| 変数を使用する | ||
| タグを使用する | ||
| グローバル設定を使用する |
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Using variables
音楽のセクションが変数の中で定義されている場合、そのセクションを楽譜の異なる部分で再利用することができます – (learning)Organizing pieces with variables section ‘Organizing pieces with variables’ in Learning Manual を参照してください。例えば、アカペラ のボーカル譜はリハーサル目的ですべてのパートをまとめたピアノ譜を持つことがよくあります。これは声楽全般で言えることです。その場合、音楽を入力する必要があるのは 1 回だけです。2 つの変数からの音楽を 1 つの譜に組み込むことができます – @ref{Automatic part combining} を参照してください。ここに例を挙げます:
sopranoMusic = \relative { a'4 b c b8( a) } altoMusic = \relative { e'4 e e f } tenorMusic = \relative { c'4 b e d8( c) } bassMusic = \relative { a4 gis a d, } allLyrics = \lyricmode { King of glo -- ry } << \new Staff = "Soprano" \sopranoMusic \new Lyrics \allLyrics \new Staff = "Alto" \altoMusic \new Lyrics \allLyrics \new Staff = "Tenor" { \clef "treble_8" \tenorMusic } \new Lyrics \allLyrics \new Staff = "Bass" { \clef "bass" \bassMusic } \new Lyrics \allLyrics \new PianoStaff << \new Staff = "RH" { \partCombine \sopranoMusic \altoMusic } \new Staff = "LH" { \clef "bass" \partCombine \tenorMusic \bassMusic } >> >>
音楽表記には変更を加えずに、楽譜構造の文を変えるだけで、ボーカル パートだけあるいはピアノ パートだけの楽譜を作り出すことができます。
長い楽譜では、変数定義をそれぞれ別々のファイルの中に置いて、それらのファイルをインクルードすることになるかもしれません – @ref{Including LilyPond files} を参照してください。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Using tags
\tag #'partA コマンドは音楽表記に
partA という名前を付けます。この方法でタグを付けられた表記は、後で \keepWithTag #'name と
\removeWithTag #'name のどちらかを用いて、名前によって選択あるいは排除することができます。タグの付いた音楽にそのようなフィルタを適用した結果は以下のようになります:
| フィルタ | 結果 |
|---|---|
\keepWithTag #'name あるいは
\keepWithTag #'(name1 name2…) が前に付くタグ付きの音楽 | タグの付いていない音楽と、与えられたタグ名のいずれかに当てはまる音楽がインクルードされます。他のタグ名を持つタグ付き音楽は排除されます。 |
\removeWithTag #'name あるいは
\removeWithTag #'(name1 name2…) が前に付くタグ付きの音楽 | タグの付いていない音楽と、与えられたタグ名のどれにも当てはまらない音楽がインクルードされます。与えられたタグ名のいずれかに当てはまる音楽は排除されます。 |
\keepWithTag と \removeWithTag のどちらも前に付かないタグ付きの音楽 | タグの付いた音楽とタグの付いていない音楽すべてがインクルードされます。 |
\tag、\keepWithTag それに \removeWithTag コマンドの引数はシンボルやシンボルのリスト (例えば #'score or #'(violinI violinII)
と、音楽表記の順であるべきです。シンボルが LilyPond において正しい識別子
(アルファベットのみから成り、数字、アンダースコア、ダッシュは含まない) であり、音符名と混同しない場合である限り、#' を省略することができ、シンボルのリストはドットで区切る記法を用いることができます。例えば、\tag #'(violinI violinII) は \tag violinI.violinII と書くことができます。\keepWithTag や \removeWithTag でも同様です。タグコマンドは音楽関数なので、\book または \score
ブロックのような、音楽表記ではないオブジェクトをフィルターするのに使うことはできません。
以下の例では、楽曲を 2 つのバージョンで示しています。1 つはトリルを通常の記譜法で示していて、もう 1 つはトリルを明示的に展開しています:
music = \relative { g'8. c32 d \tag #'trills { d8.\trill } \tag #'expand {\repeat unfold 3 { e32 d } } c32 d } \score { \keepWithTag #'trills \music } \score { \keepWithTag #'expand \music }
\keepWithTag を使う代わりに、音楽セクションを排除する方が楽な場合もあります:
music = \relative { g'8. c32 d \tag #'trills {d8.\trill } \tag #'expand {\repeat unfold 3 {e32 d} } c32 d } \score { \removeWithTag #'expand \music } \score { \removeWithTag #'trills \music }
タグ フィルタリングはアーティキュレーション、テキストなどにも適用することができます。フィルタリングを行うにはアーティキュレーションの前に
-\tag #'your-tag |
を置きます。例えば、以下は条件付の運指指示を持つ音符と条件付注記を持つ音符を定義しています:
c1-\tag #'finger ^4 c1-\tag #'warn ^"Watch!" |
複数の \tag エントリで、または複数のタグを一つのシンボルのリストにすることで、表記に複数のタグを付けることもできます:
music = \relative c'' { \tag #'a \tag #'both { a4 a a a } \tag #'(b both) { b4 b b b } } << \keepWithTag #'a \music \keepWithTag #'b \music \keepWithTag #'both \music >>
単一の音楽表記に複数の \removeWithTag フィルタを適用することによって、いくつかの異なる名前のタグが付いたセクションを排除することができます。または、\removeWitTag にタグのリストを与える表記を用いることもできます:
music = \relative c'' { \tag #'A { a4 a a a } \tag #'B { b4 b b b } \tag #'C { c4 c c c } \tag #'D { d4 d d d } } \new Voice { \removeWithTag #'B \removeWithTag #'C \music \removeWithTag #'(B C) \music }
単一の音楽表記に 2 つ以上の \keepWithTag フィルタを適用すると、タグ付きセクションが すべて 排除されてしまいます。なぜなら、最初のフィルタがそのタグ以外を持つセクションを排除し、2 番目のフィルタが更にそのセクションを排除するからです。\keepWithTag コマンドを、複数のタグのリストを引数に与えて使うことで、そのリストに無いタグを持つセクションのみを削除することができます。
music = \relative c'' { \tag #'violinI { a4 a a a } \tag #'violinII { b4 b b b } \tag #'viola { c4 c c c } \tag #'cello { d4 d d d } } \new Staff { \keepWithTag #'(violinI violinII) \music }
上の例では、violinI と violinII の \tag を表示しますが、viola や cello は表示しません。
While \keepWithTag is convenient when dealing with one set
of alternatives, the removal of music tagged with unrelated tags
is problematic when using them for more than one purpose.
\keepWithTag は、1 つだけの入れ替えのセットを扱う場合には便利ですが、関係のないタグが付けられた音楽を削除してしまうことは、タグを複数の目的で使用したい場合に問題となります。そのような場合では、タグの‘グループ’を宣言することができます。
\tagGroup #'(violinI violinII viola cello) |
こうすることで、4 つの異なるタグが一つの‘タグ グループ’になります。それぞれのタグは、複数の‘タグ グループ’のメンバとなることはできません。
\keepWithTag #'violinI … |
これで、violinI のタグ グループに含まれるタグから、該当するタグのみが表示され、その他のタグは削除されます。(訳注: 指定されたタグ
グループに含まれないタグは表示されたままになります。)
music = \relative { \tagGroup #'(violinI violinII viola cello) \tag #'violinI { c''4^"violinI" c c c } \tag #'violinII { a2 a } \tag #'viola { e8 e e2. } \tag #'cello { d'2 d4 d } R1^"untagged" } \new Voice { \keepWithTag #'violinI \music }
既存の音楽表記のある特定の場所にいくつか音を組み込みたいことがあります。\pushToTag と \appendToTag を使って、既存の音楽構造の elements の前または後に素材を追加することができます。すべての音楽構造が elements を持つわけではありませんが、連続するか同時進行する音楽構造はまず間違いなく elements を持ちます:
music = { \tag #'here { \tag #'here <<c''>> } } { \pushToTag #'here c' \pushToTag #'here e' \pushToTag #'here g' \music \appendToTag #'here c' \appendToTag #'here e' \appendToTag #'here g' \music }
どちらのコマンドもタグ、組み込む素材、それにタグ付けされた音楽表記を 取り、タグが出現するたびに素材を組み込みます。
学習マニュアル: (learning)Organizing pieces with variables section ‘Organizing pieces with variables’ in Learning Manual
記譜法リファレンス: @ref{Automatic part combining}, @ref{Including LilyPond files}
\keepWithTag や \removeWithTag でフィルタリングされた音楽表記に \relative を用いると、オクターブ関係が変化してしまいます。これは、フィルタリングされた音符のみが \relative で解釈されるためです。\keepWithTag や \removeWithTag よりも先にまず \relative を適用することで、全ての音符が解釈されるようになるため、危険を回避することができます。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Using global settings
別のファイルからグローバル設定をインクルードすることができます:
lilypond -dinclude-settings=MY_SETTINGS.ly MY_SCORE.ly |
ページ サイズ、フォント、書体などのような設定のグループを別々のファイルに保存することができます。こうすることにより、適当な設定ファイルを指定するだけで、同じ楽譜から異なる版を作り出すことができます。
このテクニックはスタイル シートでも使えます。 (learning)Style sheets section ‘Style sheets’ in Learning Manual を参照してください。
学習マニュアル: (learning)Organizing pieces with variables section ‘Organizing pieces with variables’ in Learning Manual, (learning)Style sheets section ‘Style sheets’ in Learning Manual
記譜法リファレンス: @ref{Including LilyPond files}
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Special characters
| テキスト エンコーディング | ||
| Unicode | ||
| ASCII エイリアス |
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Text encoding
LilyPond は Unicode 協会と ISO/IEC 10646 によって定義された文字レパートリを使用します。この文字レパートリは、ほとんどすべての現代言語と他の多くの言語で使用される文字セットに対して、固有の名前とコード位置を定義しています。Unicode はいくつかの異なるエンコーディングを用いて実装することができます。LilyPond は UTF-8 エンコーディング (UTF は Unicode Transformation Format を意味します) を使用します – UTF-8 はすべての共通ラテン文字を 1 バイトで表し、他の文字を可変バイト長形式 (最大 4 ビット) で表します。
文字の実際の見た目は利用可能なある特定のフォントの中にあるグリフ (図柄) によって決定されます – フォントはグリフを指す Unicode コードのサブセット (部分集合) の写像を定義しています。LilyPond は多言語テキストを、Pango ライブラリを用いて、レイアウトして描画します。
LilyPond は入力のエンコーディング変換をまったく行いません。これは非 ASCII 文字を含むすべてのテキスト – タイトル、歌詞テキストあるいは演奏指示 – を UTF-8 でエンコードして入力する必要があるということを意味します。そのようなテキストを入力する最も容易な方法は Unicode を認識するエディタを用いて、ファイルを UTF-8 で保存することです。人気のある現代的なエディタのほとんどが UTF-8 をサポートします – 例えば、vim, Emacs, jEdit, Gedit です。NT より後の MS Windows システムはすべてネイティブ キャラクタ エンコーディングとして Unicode を使用します。そのため、Notepad でさえ UTF-8 フォーマットのファイルを編集して保存することができます。Windows 用のもっと機能的なエディタに BabelPad があります。
非 ASCII 文字を保持している LilyPond 入力ファイルが UTF-8 フォーマットで保存されていない場合、エラー メッセージ
FT_Get_Glyph_Name () error: invalid argument |
が表示されます。
ここでキリル文字、ヘブライ文字、ポルトガル語のテキストを表示する例を挙げます:
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Unicode
単一の文字 – その文字に対する Unicode コード ポイントを知っているが、使用しているエディタではその文字を使用できない – を入力するには、\markup ブロック内部で \char ##xhhhh あるいは
\char ##dddd を使用します
– ここで hhhh はその文字に対する 16 進コードであり、dddd はそれに対応する 10 進数値です。先頭の 0 は省略可能ですが、16 進表記では 4 文字で指定する方法が一般的です。(\char の後に UTF-8 エンコーディングのコード ポイントを使うべきではありません。なぜなら、UTF-8 エンコーディングはバイト数を表すための余分なビットを保持しているからです。)
任意の文字に対する 16 進のコード ポイントを調べるための、Unicode コード表と文字名インデックスは Unicode コンソーシアム Web サイト
http://www.unicode.org/ にあります。
例えば、\char ##x03BE と \char #958 はどちらも
Unicode U+03BE の文字を入力します
– この文字は Unicode 名 “Greek Small Letter Xi”
(ギリシャ小文字クシー) です。
この方法で任意の Unicode コード ポイントを入力することができます。すべての特殊文字がこの方法で入力されている場合、入力ファイルを UTF-8 フォーマットで保存する必要はありません。もちろん、入力された文字を保持しているフォントがすべてインストールされていて、LilyPond で利用可能になっている必要があります。
以下の例は UTF-8 コード化された文字を 4 箇所 – リハーサル記号の中、アーティキュレーション テキストとして、歌詞の中、楽譜の下にある独立したテキストの中 – で使用しています:
\score { \relative { c''1 \mark \markup { \char ##x03EE } c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } } } \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } } } \markup { "Copyright 2008--2020" \char ##x00A9 }
著作権についての注意書きの中で著作権記号を入力するには、以下のようにします:
\header {
copyright = \markup { \char ##x00A9 "2008" }
}
|
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof ASCII aliases
特殊文字の ASCII エイリアスのリストを含めることができます:
\paper { #(include-special-characters) } \markup "&flqq; – &OE;uvre incomplète… &frqq;" \score { \new Staff { \repeat unfold 9 a'4 } \addlyrics { This is al -- so wor -- kin'~in ly -- rics: –_&OE;… } } \markup \column { "特殊文字への置換を無効にすることができます:" "– &OE; …" \override #'(replacement-alist . ()) "– &OE; …" }
また、エイリアスを作ることもできます。グローバルに作るか:
\paper { #(add-text-replacements! '(("100" . "hundred") ("dpi" . "dots per inch"))) } \markup "A 100 dpi."
ローカルで作ります:
\markup \replace #'(("100" . "hundred") ("dpi" . "dots per inch")) "A 100 dpi."
記譜法リファレンス: @ref{List of special characters}
インストールされているファイル: ‘ly/text-replacements.ly’
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] |
This document was generated by gub on 7 月 13, 2020 using texi2html 1.82.
他の言語: English, català, deutsch, español, français, italiano
About automatic language selection.