LilyPond snippets: Keyboards

# Keyboards

Keyboard and other multi-staff instruments

## アコーディオンのディスカント記号

現在では専用のマークアップ コマンドが定義されているため、この方法を用いる必要はありません。記譜法リファレンスの ’キーボードと他の複数譜の楽器’ にある ’ディスカント記号’ を参照してください。しかし、これは記号を組み合わせる例として有用です: `\markup` で追加される記号の位置は、`\translate-scaled` を用いて調整されます。`\translate` ではなく `\translate-scaled` が使われているのは、位置が記号全体の `font-size` に対して相対的になるようにするためです。

    discant = \markup {
      \musicglyph "accordion.discant"
    }
    dot = \markup {
      \musicglyph "accordion.dot"
    }

    \layout { ragged-right = ##t }

    % 16 voets register
    accBasson = ^\markup {
      \combine
      \discant
      \translate-scaled #'(0 . 0.5) \dot
    }

    % een korig 8 en 16 voets register
    accBandon = ^\markup {
      \combine
        \discant
        \combine
          \translate-scaled #'(0 . 0.5) \dot
          \translate-scaled #'(0 . 1.5) \dot
    }

    accVCello = ^\markup {
      \combine
        \discant
        \combine
          \translate-scaled #'(0 . 0.5) \dot
          \combine
            \translate-scaled #'(0 . 1.5) \dot
            \translate-scaled #'(1 . 1.5) \dot
    }

    % 4-8-16 voets register
    accHarmon = ^\markup {
      \combine
        \discant
        \combine
          \translate-scaled #'(0 . 0.5) \dot
          \combine
            \translate-scaled #'(0 . 1.5) \dot
            \translate-scaled #'(0 . 2.5) \dot
    }

    accTrombon = ^\markup {
      \combine
        \discant
        \combine
          \translate-scaled #'(0 . 0.5) \dot
          \combine
            \translate-scaled #'(0 . 1.5) \dot
            \combine
              \translate-scaled #'(1 . 1.5) \dot
              \translate-scaled #'(-1 . 1.5) \dot
    }

    % eenkorig 4 en 16 voets register
    accOrgan = ^\markup {
      \combine
        \discant
        \combine
          \translate-scaled #'(0 . 0.5) \dot
          \translate-scaled #'(0 . 2.5) \dot
    }

    accMaster = ^\markup {
      \combine
        \discant
        \combine
          \translate-scaled #'(0 . 0.5) \dot
          \combine
            \translate-scaled #'(0 . 1.5) \dot
            \combine
              \translate-scaled #'(1 . 1.5) \dot
              \combine
                \translate-scaled #'(-1 . 1.5) \dot
                \translate-scaled #'(0 . 2.5) \dot
    }

    accAccord = ^\markup {
      \combine
        \discant
        \combine
          \translate-scaled #'(0 . 1.5) \dot
          \combine
            \translate-scaled #'(1 . 1.5) \dot
            \combine
              \translate-scaled #'(-1 . 1.5) \dot
              \translate-scaled #'(0 . 2.5) \dot
    }

    accMusette = ^\markup {
      \combine
        \discant
        \combine
          \translate-scaled #'(0 . 1.5) \dot
          \combine
            \translate-scaled #'(1 . 1.5) \dot
            \translate-scaled #'(-1 . 1.5) \dot
    }

    accCeleste = ^\markup {
      \combine
        \discant
        \combine
          \translate-scaled #'(0 . 1.5) \dot
          \translate-scaled #'(-1 . 1.5) \dot
    }

    accOboe = ^\markup {
      \combine
        \discant
        \combine
          \translate-scaled #'(0 . 1.5) \dot
          \translate-scaled #'(0 . 2.5) \dot
    }

    accClarin = ^\markup {
      \combine
        \discant
        \translate-scaled #'(0 . 1.5) \dot
    }

    accPiccolo = ^\markup {
        \combine
           \discant
           \translate-scaled #'(0 . 2.5) \dot
    }

    accViolin = ^\markup {
      \combine
        \discant
        \combine
          \translate-scaled #'(0 . 1.5) \dot
          \combine
            \translate-scaled #'(1 . 1.5) \dot
            \translate-scaled #'(0 . 2.5) \dot
    }

    \relative c'' {
      c4 d\accBasson e f
      c4 d\accBandon e f
      c4 d\accVCello e f
      c4 d\accHarmon e f
      c4 d\accTrombon e f
      \break
      c4 d\accOrgan e f
      c4 d\accMaster e f
      c4 d\accAccord e f
      c4 d\accMusette e f
      c4 d\accCeleste e f
      \break
      c4 d\accOboe e f
      c4 d\accClarin e f
      c4 d\accPiccolo e f
      c4 d\accViolin e f
    }

## アコーディオンの音色切り替え記号

アコーディオンの音色切り替え記号は、`\markup` としても、(音色の切り替えは音と音の間に行われるため) 単独の音楽イベントとしても用いることができます。バスの音色は過度には一般化されていません。使用できるコマンドは、記譜法リファレンスの ’キーボードと他の複数譜の楽器’ にある ’ディスカント記号’ を参照してください。

    #(use-modules (lily accreg))

    \new PianoStaff
    <<
      \new Staff \relative {
        \clef treble
        \discant "10"
        r8 s32 f'[ bes f] s e[ a e] s d[ g d] s16 e32[ a]
        <<
          { r16 <f bes> r <e a> r <d g> }
          \\
          { d r a r bes r }
        >> |
        <cis e a>1
      }

      \new Staff \relative {
        \clef treble
        \freeBass "1"
        r8 d'32 s16. c32 s16. bes32 s16. a32[ cis] s16
        \clef bass \stdBass "Master"
        <<
          { r16 <f, bes d>^"b" r <e a c>^"am" r <d g bes>^"gm" |
          <e a cis>1^"a" }
          \\
          { d8_"D" c_"C" bes_"B" | a1_"A" }
        >>
      }
    >>

## サステイン ペダル記号のテキストを変更する

ペダル ダウンやペダル アップに使われるテキストは、`Staff.pedalSustainStrings` で変更できます。このスニペットに表示されているものがグリフの全てであり、これ以外の文字は使用することができません。

    sustainNotes = { c4\sustainOn d e\sustainOff\sustainOn f\sustainOff }

    \relative c' {
      \sustainNotes
      \set Staff.pedalSustainStrings = #'("P" "P-" "-")
      \sustainNotes
      \set Staff.pedalSustainStrings = #'("d" "de" "e")
      \sustainNotes
      \set Staff.pedalSustainStrings = #'("M" "M-" "-")
      \sustainNotes
      \set Staff.pedalSustainStrings = #'("Ped" "*Ped" "*")
      \sustainNotes
    }

## クラスタ

クラスタは、範囲内の音符が同時に演奏されることを示す手段です。

    fragment = \relative c' {
      c4 f <e d'>4
      <g a>8 <e a> a4 c2 <d b>4
      e2 c
    }

    <<
      \new Staff \fragment
      \new Staff \makeClusters \fragment
    >>

## 和音内の運指記号の位置をコントロールする

運指番号の位置を精密にコントロールすることができます。位置の設定が適用されるためには、単一の音符であっても和音構造 <> を用いる必要があります。

    \relative c' {
      \set fingeringOrientations = #'(left)
      <c-1 e-3 a-5>4
      \set fingeringOrientations = #'(down)
      <c-1 e-3 a-5>4
      \set fingeringOrientations = #'(down right up)
      <c-1 e-3 a-5>4
      \set fingeringOrientations = #'(up)
      <c-1 e-3 a-5>4
      \set fingeringOrientations = #'(left)
      <c-1>2
      \set fingeringOrientations = #'(down)
      <e-3>2
      \set stringNumberOrientations = #'(up left down)
      <f\3 a\2 c\1>1
      \set strokeFingerOrientations = #'(down right up)
      <c\rightHandFinger #1 e\rightHandFinger #2 c'\rightHandFinger #4 >
    }

## ボイスをまたがるスラーを作成する

異なるボイスを繋ぐスラーを作成しなければならない場合があります。

解決法は、`\hideNotes` を用いて片方のボイスに不可視の音符を追加することです。

この例は、Bach の Partita for Violin No. 2 (BWV 1004) の 235 小節目です。

    \relative c' {
      <<
        {
          d16( a') s a s a[ s a] s a[ s a]
        }
        \\
        {
          \slurUp
          bes,16[ s e](
          \hideNotes a)
          \unHideNotes f[(
          \hideNotes a)
          \unHideNotes fis](
          \hideNotes a)
          \unHideNotes g[(
          \hideNotes a)
          \unHideNotes gis](
          \hideNotes a)
        }
      >>
    }

## 譜をまたがる和音 – 連桁との問題を解決する

譜をまたがる和音を作成する際に、連桁の衝突に関する問題が起きないように上の譜の符幹を下向きに伸ばした方が良い場合があります。次の例で下の譜の符幹を伸ばそうとした場合、`\override Staff.Beam.collision-voice-only = ##t` を用いて、譜を越えた衝突を検出しないように、連桁の自動衝突解決の設定を変更する必要があります。

    \new PianoStaff <<
      \new Staff = up
        \relative c' {
          <<
            { r4
              \override Stem.cross-staff = ##t
              \override Stem.length = #19 % this is in half-spaces,
                  % so it makes stems 9.5 staffspaces long
              \override Stem.Y-offset = #-6 % stems are normally lengthened
                  % upwards, so here we must lower the stem by the amount
                  % equal to the lengthening - in this case (19 - 7) / 2
                  % (7 is default stem length)
              e e e }
            { s4
              \change Staff = "bottom"
              \override NoteColumn.ignore-collision = ##t
              c, c c
            }
          >>
        }
      \new Staff = bottom
        \relative c' {
          \clef bass
          \voiceOne
          g8 a g a g a g a
        }
    >>

## 譜をまたがるトレモロ

`\repeat tremolo` は、和音のトレモロに対してはちょうど 2 つの引数を取らなければならないため、譜をまたがる和音のトレモロは 同じ括弧内に音を配置し、`\change Staff` コマンドで譜を変更する必要があります。

    \new PianoStaff <<
      \new Staff = "up" \relative c'' {
        \key a \major
        \time 3/8
        s4.
      }
      \new Staff = "down" \relative c'' {
        \key a \major
        \time 3/8
        \voiceOne
        \repeat tremolo 6 {
          <a e'>32
          {
            \change Staff = "up"
            \voiceTwo
            <cis a' dis>32
          }
        }
      }
    >>

## ペダル記号のブラケットを微調整する

ペダル記号のブラケットの見た目は様々に調整することができます。

    \paper { ragged-right = ##f }
    \relative c'' {
      c2\sostenutoOn c
      c2\sostenutoOff c
      \once \override Staff.PianoPedalBracket.shorten-pair = #'(-7 . -2)
      c2\sostenutoOn c
      c2\sostenutoOff c
      \once \override Staff.PianoPedalBracket.edge-height = #'(0 . 3)
      c2\sostenutoOn c
      c2\sostenutoOff c
    }

## ブラケット型のアルペジオで譜をまたぐ和音を表示する

ブラケット型のアルペジオは、異なる譜にまたがる和音が同じ手で演奏されることを示します。これを表示するためには、`PianoStaff` が譜をまたぐアルペジオを使用できるように設定し、`PianoStaff` コンテキストでアルペジオの形をブラケットに設定します。

(Debussy, Les collines d’Anacapri, m. 65)

    \new PianoStaff <<
      \set PianoStaff.connectArpeggios = ##t
      \override PianoStaff.Arpeggio.stencil =
        #ly:arpeggio::brew-chord-bracket
      \new Staff {
        \relative c' {
          \key b \major
          \time 6/8
          b8-.(\arpeggio fis'-.\> cis-.
            e-. gis-. b-.)\!\fermata^\laissezVibrer \bar "||"
        }
      }
      \new Staff {
        \relative c' {
          \clef bass
          \key b \major
          <<
            {
              <a e cis>2.\arpeggio
            }
            \\
            {
              <a, e a,>2.
            }
          >>
        }
      }
    >>

## ジャズ コンボのテンプレート

これはジャズ アンサンブルのための非常に高度なテンプレートです。全ての楽器が `\key c \major` で記述されています。これはコンサート ピッチでの調を示しており、`\transpose` セクション内では自動的に移調されます。

    \header {
      title = "Song"
      subtitle = "(tune)"
      composer = "Me"
      meter = "moderato"
      piece = "Swing"
      tagline = \markup {
        \column {
          "LilyPond example file by Amelie Zapf,"
          "Berlin 07/07/2003"
        }
      }
    }
    % To make the example display in the documentation
    \paper {
      paper-width = 130
    }
    %#(set-global-staff-size 16)
    \include "english.ly"

    %%%%%%%%%%%% Some macros %%%%%%%%%%%%%%%%%%%

    sl = {
      \override NoteHead.style = #'slash
      \hide Stem
    }
    nsl = {
      \revert NoteHead.style
      \undo \hide Stem
    }
    crOn = \override NoteHead.style = #'cross
    crOff = \revert NoteHead.style

    %% insert chord name style stuff here.

    jazzChords = { }

    %%%%%%%%%%%% Keys'n'thangs %%%%%%%%%%%%%%%%%

    global = { \time 4/4 }

    Key = { \key c \major }

    % ############ Horns ############

    % ------ Trumpet ------
    trpt = \transpose c d \relative c'' {
      \Key
      c1 | c | c |
    }
    trpHarmony = \transpose c' d {
      \jazzChords
    }
    trumpet = {
      \global
      \clef treble
      <<
        \trpt
      >>
    }

    % ------ Alto Saxophone ------
    alto = \transpose c a \relative c' {
      \Key
      c1 | c | c |
    }
    altoHarmony = \transpose c' a {
      \jazzChords
    }
    altoSax = {
      \global
      \clef treble
      <<
        \alto
      >>
    }

    % ------ Baritone Saxophone ------
    bari = \transpose c a' \relative c {
      \Key
      c1
      c1
      \sl
      d4^"Solo" d d d
      \nsl
    }
    bariHarmony = \transpose c' a \chordmode {
      \jazzChords s1 s d2:maj e:m7
    }
    bariSax = {
      \global
      \clef treble
      <<
        \bari
      >>
    }

    % ------ Trombone ------
    tbone = \relative c {
      \Key
      c1 | c | c
    }
    tboneHarmony = \chordmode {
      \jazzChords
    }
    trombone = {
      \global
      \clef bass
      <<
        \tbone
      >>
    }

    % ############ Rhythm Section #############

    % ------ Guitar ------
    gtr = \relative c'' {
      \Key
      c1
      \sl
      b4 b b b
      \nsl
      c1
    }
    gtrHarmony = \chordmode {
      \jazzChords
      s1 c2:min7+ d2:maj9
    }
    guitar = {
      \global
      \clef treble
      <<
        \gtr
      >>
    }

    %% ------ Piano ------
    rhUpper = \relative c'' {
      \voiceOne
      \Key
      c1 | c | c
    }
    rhLower = \relative c' {
      \voiceTwo
      \Key
      e1 | e | e
    }

    lhUpper = \relative c' {
      \voiceOne
      \Key
      g1 | g | g
    }
    lhLower = \relative c {
      \voiceTwo
      \Key
      c1 | c | c
    }

    PianoRH = {
      \clef treble
      \global
      <<
        \new Voice = "one" \rhUpper
        \new Voice = "two" \rhLower
      >>
    }
    PianoLH = {
      \clef bass
      \global
      <<
        \new Voice = "one" \lhUpper
        \new Voice = "two" \lhLower
      >>
    }

    piano = {
      <<
        \new Staff = "upper" \PianoRH
        \new Staff = "lower" \PianoLH
      >>
    }

    % ------ Bass Guitar ------
    Bass = \relative c {
      \Key
      c1 | c | c
    }
    bass = {
      \global
      \clef bass
      <<
        \Bass
      >>
    }

    % ------ Drums ------
    up = \drummode {
      \voiceOne
      hh4 <hh sn> hh <hh sn>
      hh4 <hh sn> hh <hh sn>
      hh4 <hh sn> hh <hh sn>
    }
    down = \drummode {
      \voiceTwo
      bd4 s bd s
      bd4 s bd s
      bd4 s bd s
    }

    drumContents = {
      \global
      <<
        \new DrumVoice \up
        \new DrumVoice \down
      >>
    }

    %%%%%%%%% It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%

    \score {
      <<
        \new StaffGroup = "horns" <<
          \new Staff = "trumpet" \with { instrumentName = "Trumpet" }
          \trumpet
          \new Staff = "altosax" \with { instrumentName = "Alto Sax" }
          \altoSax
          \new ChordNames = "barichords" \with { instrumentName = "Trumpet" }
          \bariHarmony
          \new Staff = "barisax" \with { instrumentName = "Bari Sax" }
          \bariSax
          \new Staff = "trombone" \with { instrumentName = "Trombone" }
          \trombone
        >>

        \new StaffGroup = "rhythm" <<
          \new ChordNames = "chords" \gtrHarmony
          \new Staff = "guitar" \with { instrumentName = "Guitar" }
          \guitar
          \new PianoStaff = "piano" \with {
            instrumentName = "Piano"
            midiInstrument = "acoustic grand"
          }
          \piano
          \new Staff = "bass" \with { instrumentName = "Bass" }
          \bass
          \new DrumStaff \with { instrumentName = "Drums" }
          \drumContents
        >>
      >>
      \layout {
        \context { \Staff \RemoveEmptyStaves }
        \context {
          \Score
          \override BarNumber.padding = #3
          \override RehearsalMark.padding = #2
          skipBars = ##t
        }
      }
      \midi { }
    }

## レセ ヴィブレのタイ

レセ ヴィブレのタイの大きさは固定されています。`tie-configuration` によって配置を調整することができます。

    \relative c' {
      <c e g>4\laissezVibrer r <c f g>\laissezVibrer r
      <c d f g>4\laissezVibrer r <c d f g>4.\laissezVibrer r8

      <c d e f>4\laissezVibrer r
      \override LaissezVibrerTieColumn.tie-configuration
         = #`((-7 . ,DOWN)
              (-5 . ,DOWN)
              (-3 . ,UP)
              (-1 . ,UP))
      <c d e f>4\laissezVibrer r
    }

## ピアノ テンプレート (シンプル)

いくつかの音符を持つシンプルなピアノ譜を示します。

    upper = \relative c'' {
      \clef treble
      \key c \major
      \time 4/4

      a4 b c d
    }

    lower = \relative c {
      \clef bass
      \key c \major
      \time 4/4

      a2 c
    }

    \score {
      \new PianoStaff \with { instrumentName = "Piano" }
      <<
        \new Staff = "upper" \upper
        \new Staff = "lower" \lower
      >>
      \layout { }
      \midi { }
    }

## 中央に歌詞を配置したピアノ テンプレート

旋律と歌詞のための総譜ではなく、歌詞をピアノ譜の 2 つの譜の間に配置することができます。

    upper = \relative c'' {
      \clef treble
      \key c \major
      \time 4/4

      a4 b c d
    }

    lower = \relative c {
      \clef bass
      \key c \major
      \time 4/4

      a2 c
    }

    text = \lyricmode {
      Aaa Bee Cee Dee
    }

    \score {
      \new PianoStaff <<
        \new Staff = upper { \new Voice = "singer" \upper }
        \new Lyrics \lyricsto "singer" \text
        \new Staff = lower { \lower }
      >>
      \layout { }
      \midi { }
    }

## 旋律と歌詞を持つピアノ テンプレート

これは一般的な歌曲のフォーマットです: 旋律と歌詞を持つ譜と、その下にピアノ伴奏譜があります。

    melody = \relative c'' {
      \clef treble
      \key c \major
      \time 4/4

      a b c d
    }

    text = \lyricmode {
      Aaa Bee Cee Dee
    }

    upper = \relative c'' {
      \clef treble
      \key c \major
      \time 4/4

      a4 b c d
    }

    lower = \relative c {
      \clef bass
      \key c \major
      \time 4/4

      a2 c
    }

    \score {
      <<
        \new Voice = "mel" { \autoBeamOff \melody }
        \new Lyrics \lyricsto mel \text
        \new PianoStaff <<
          \new Staff = "upper" \upper
          \new Staff = "lower" \lower
        >>
      >>
      \layout {
        \context { \Staff \RemoveEmptyStaves }
      }
      \midi { }
    }

## ピアノ曲の先頭にあるブレースを削除する

このスニペットは、`PianoStaff` や `GrandStaff` から先頭にあるブレース (波括弧) を削除しています。これは譜刻された既存の音楽の一部を切り取って見せる場合に有用です。

これは `\alterBroken` を使用しています。

    someMusic =  {
      \once \override Staff.Clef.stencil = ##f
      \once \override Staff.TimeSignature.stencil = ##f
      \repeat unfold 3 c1 \break
      \repeat unfold 5 c1 \break
      \repeat unfold 5 c1
    }

    \score {
      \new PianoStaff
      <<
        \new Staff = "right" \relative c'' \someMusic
        \new Staff = "left" \relative c' { \clef F \someMusic }
      >>
      \layout {
        indent=75
        \context {
          \PianoStaff
          \alterBroken transparent #'(#t) SystemStartBrace
        }
      }
    }

## autoChange を 2 つ以上のボイスで使用する

`autoChange` は 2 つ以上のボイスで使用することができます。

    \score
    {
      \new PianoStaff
      <<
        \new Staff = "up" {
          <<
            \set Timing.beamExceptions = #'()
            \set Timing.beatStructure = #'(4)
            \new Voice {
              \voiceOne
              \autoChange
              \relative c' {
                g8 a b c d e f g
                g,8 a b c d e f g
              }
            }

            \new Voice {
              \voiceTwo
              \autoChange
              \relative c' {
                g8 a b c d e f g
                g,,8 a b c d e f g
              }
            }
          >>
        }

        \new Staff = "down" {
          \clef bass
        }
      >>
    }

## 自動ピアノ伴奏譜を持つ合唱譜

このテンプレートは、“合唱テンプレート” で示した標準の SATB ボーカル譜に自動ピアノ譜を付け加えています。これは LilyPond の強みの 1 つを示しています - 音楽定義を何回も使用することができます。ボーカルの音符 (例えば、`tenorMusic` の音符) に変更が加えられた場合、その変更はピアノ譜にも適用されます。

    \paper {
      top-system-spacing.basic-distance = #10
      score-system-spacing.basic-distance = #20
      system-system-spacing.basic-distance = #20
      last-bottom-spacing.basic-distance = #10
    }

    global = {
      \key c \major
      \time 4/4
    }

    sopMusic = \relative {
      c''4 c c8[( b)] c4
    }
    sopWords = \lyricmode {
      hi hi hi hi
    }

    altoMusic = \relative {
      e'4 f d e
    }
    altoWords =\lyricmode {
      ha ha ha ha
    }

    tenorMusic = \relative {
      g4 a f g
    }
    tenorWords = \lyricmode {
      hu hu hu hu
    }

    bassMusic = \relative {
      c4 c g c
    }
    bassWords = \lyricmode {
      ho ho ho ho
    }

    \score {
      <<
        \new ChoirStaff <<
          \new Lyrics = "sopranos" \with {
            % This is needed for lyrics above a staff
            \override VerticalAxisGroup.staff-affinity = #DOWN
          }
          \new Staff = "women" <<
            \new Voice = "sopranos" { \voiceOne << \global \sopMusic >> }
            \new Voice = "altos" { \voiceTwo << \global \altoMusic >> }
          >>
          \new Lyrics = "altos"
          \new Lyrics = "tenors" \with {
            % This is needed for lyrics above a staff
            \override VerticalAxisGroup.staff-affinity = #DOWN
          }

          \new Staff = "men" <<
            \clef bass
            \new Voice = "tenors" { \voiceOne << \global \tenorMusic >> }
            \new Voice = "basses" { \voiceTwo << \global \bassMusic >> }
          >>
          \new Lyrics = "basses"
          \context Lyrics = "sopranos" \lyricsto "sopranos" \sopWords
          \context Lyrics = "altos" \lyricsto "altos" \altoWords
          \context Lyrics = "tenors" \lyricsto "tenors" \tenorWords
          \context Lyrics = "basses" \lyricsto "basses" \bassWords
        >>
        \new PianoStaff <<
          \new Staff <<
            \set Staff.printPartCombineTexts = ##f
            \partCombine
            << \global \sopMusic >>
            << \global \altoMusic >>
          >>
          \new Staff <<
            \clef bass
            \set Staff.printPartCombineTexts = ##f
            \partCombine
            << \global \tenorMusic >>
            << \global \bassMusic >>
          >>
        >>
      >>
    }

#### LilyPond — Snippets v2.24.4 (安定版).