GNU LilyPond – アプリケーション使用方法: 1.4 一般的なエラー

## 1.4 一般的なエラー

以下で説明するエラーがしばしば発生しますが、その原因は明白でなかったり、見つけにくかったりします。目を通しておくと、それらのエラーに対処しやすくなります。

### 楽譜がページからはみ出る

楽譜がページの右マージンを越えてはみ出る、あるいは過度に密集するのは、ほぼ間違いなく音符の演奏時間に誤りがあり、小節の最後の音符が小節線を越えてしまうためです。ある小節の最後の音符が自動的に挿入される小節線の所で終わらなくても無効ではありません。なぜなら、その音符は次の小節に持ち越されるためです。しかしながら、そのような持ち越しが発生する小節が長く続くと、楽譜は密集して表示されたり、ページからはみ出たりします。ページからはみ出るのは、自動改行を挿入できるのは正しく終了する小節 (その小節のすべての音符が小節の中で終了しています) の後ろだけだからです。

Note: 誤った演奏時間は改行を抑制し、結果として楽譜が過度に密集したり、c ページからはみ出たりする可能性が生じます。

小節チェックを使用していれば、誤った演奏時間を簡単に見つけることができます。 小節と小節番号のチェック を参照してください。

あなたがそのような音符が持ち越される小節を続けることを意図しているのであれば、改行させたい場所に不可視の小節線を挿入する必要があります。詳細は 小節線 を参照してください。

### 余計な譜が表示される

コンテキストが `\new` や `\context` で明示的に作成されていない場合、既存のコンテキストには適用できないコマンドに遭遇した時点で暗黙的に作成されます。単純な楽譜では、コンテキストの自動作成は有用であり、LilyPond マニュアルのほとんどの例はこの手法を用いています。しかしながら、コンテキストの暗黙的な作成はしばしば予期しない譜や楽譜を発生させてしまいます。例えば、以下のコードは後に続く譜の中にあるすべての符頭を赤にすることを意図していますが、結果は 2 つの譜が表示され、下の譜の符頭の色はデフォルトの黒のままとなります。

>     \override Staff.NoteHead.color = #red
>     \new Staff { a' }

これは、(符頭色の) オーバライドが処理される時に `Staff` コンテキストが存在していないため、`Staff` コンテキストが暗黙的に作成され、そのコンテキストにオーバライドが適用されるからです。その後に `\new Staff` コマンドによりもう 1 つ別の `Staff` コンテキストが作成され、そこに音符が配置されます。すべての符頭を赤にする正しいコードは以下のようになります:

>     \new Staff {
>       \override Staff.NoteHead.color = #red
>       a'
>     }

### エラー メッセージ Unbound variable %

このエラー メッセージは、Scheme 形式ではなく LilyPond 形式のコメントを含む Scheme ルーチンが呼び出されるたびに、コンソール出力またはログ ファイルの最後に表示されます。

LilyPond 形式のコメントはパーセント記号 (`%`) で始まり、Scheme ルーチンの中で使うことはできません。Scheme 形式のコメントはセミコロン (`;`) で始まります。

### エラー メッセージ FT_Get_Glyph_Name

入力ファイルが非 ASCII キャラクタを保持していて、UTF-8 エンコードで保存されていない場合、このエラー メッセージがコンソール出力やログ ファイルに表示されます。詳細は、 テキスト エンコーディング を参照してください。

### 警告 staff affinities should only decrease

この警告は、譜刻された出力の中に譜が無い場合に表示されます。例えば、リード譜に `ChordName` コンテキストと `Lyrics` コンテキストしか無い場合です。この警告は、入力の始めに以下を挿入することで譜として振舞うコンテキストを作ることで回避できます:

>     \override VerticalAxisGroup.staff-affinity = ##f

詳細は システム内部の可変な垂直方向のスペース の “譜ではない行のスペース” を参照してください。

### エラー メッセージ unexpected `\new`

`\score` ブロックは 1 つの 音楽表記を含む必要があります。 `\new Staff` や `\new StaffGroup`、その他 `\new` で生成される同様のコンテキストが波括弧 `{ … }` や二重の山括弧 `<< … >>` で囲まれずに複数存在する場合に、エラー メッセージが出力されます。以下のようにです:

>     \score {
>       % Invalid! Generates error: syntax error, unexpected \new
>       \new Staff { … }
>       \new Staff { … }
>     }

エラーを避けるためには、全ての `\new` 文を波括弧あるいは二重の山括弧で囲んでください。

波括弧は連続的に `\new` 文を導入します:

>     \score {
>       {
>         \new Staff { a' a' a' a' }
>         \new Staff { g' g' g' g' }
>       }
>     }

しかし、二重の山括弧を用いるべき場面の方が多いでしょう。譜は並行に (つまり、同時に) 導入されます:

>     \score {
>       <<
>         \new Staff { a' a' a' a' }
>         \new Staff { g' g' g' g' }
>       >>
>     }

### 警告 this voice needs a `\voiceXx` or `\shiftXx` setting

2 つの異なるボイスが同じ向きの符幹を持ち、それらが同じタイミングで出現する時、ボイスにシフトが指定されていない場合に ‘`warning: this voice needs a \voiceXx or \shiftXx setting`’ という警告メッセージが LilyPond ファイルをコンパイルする際に出力されます。この警告は符幹が見えない場合 (例えば、全音符) にも、同じピッチにある短い方の音符の符幹が同じ向きにある場合、出力されます。

符幹の向きは、`\voiceOne` などによって指定されない限り、譜の中での音符の位置に依存します。このとき、警告は符幹が同じ向きになってしまった場合 – つまり、複数のボイスが譜の上半分または下半分に固まってしまった場合 – にのみ出力されます。

`\voiceOne` などを用いることによって、符幹の向きとシフトを指定したボイスで音符を配置した場合、これらの警告を回避することができます。

より大きいボイス番号を持つ音符 (例えば `\voiceThree` など) は、音符列の衝突を避けるために自動的に移動します。符幹のある音符に対しては移動が目に見えますが、全音符は実際に符頭が衝突しない限り、あるいはボイスが自然な順番に配置されていない場合 (例えば `\voiceThree` が `\voiceOne` よりも高い位置にある場合) ではない限り、移動しているように見えません。

#### 参照

ボイスを明示的にインスタンス化する, 実際の音楽からの例, 単一譜の多声, 衝突の解決

#### LilyPond — 使用方法 v2.24.4 (安定版).