[ << Contexts and engravers ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Contexts and engravers: 詩句とリフレインからなる合唱譜 ] | [ 上へ : Top ] | [ Tweaks and overrides: オッターバを単一のボイスに対して適用する > ] |
Tweaks and overrides
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: オブジェクトにリンクを追加する > ] |
オッターバを単一のボイスに対して適用する
譜に 2 つ以上のボイスがある場合、オッターバを設定すると、囲みの中にある全てのボイスの音符が移動してしまいます。オッターバを単一のボイスに対して適用したい場合には、middleCPosition とオッターバ囲みを明示的にセットする必要があります。ヘ音記号の middleCPosition は本来 6 にセットされており、これは譜の中央の線から 6 つ上であることを示しています。このスニペットでは、オッターバ部分の middleCPosition を 7 加算して、1 オクターブ移動しています。
{ \clef bass << { <g d'>1~ q2 <c' e'> } \\ { r2. \set Staff.ottavation = #"8vb" \once \override Staff.OttavaBracket.direction = #DOWN \set Voice.middleCPosition = #(+ 6 7) <b,,, b,,>4 ~ | q2 \unset Staff.ottavation \unset Voice.middleCPosition <c e>2 } >> }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: オッターバを単一のボイスに対して適用する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: タブ譜にマークアップを追加する > ] |
オブジェクトにリンクを追加する
grob-stencil にリンクを追加する場合、ここに定義されている add-link
を使用することができます。\override
や \tweak
と動作します。ただし、リンクが設定された Grob は point-and-click
が無効になります。
制限: PDF でのみ動作します。
リンクされたオブジェクトに色が付いているのは、別のコマンドによるものです。
#(define (add-link url-strg) (lambda (grob) (let* ((stil (ly:grob-property grob 'stencil))) (if (ly:stencil? stil) (begin (let* ( (x-ext (ly:stencil-extent stil X)) (y-ext (ly:stencil-extent stil Y)) (url-expr `(url-link url-strg ,x-ext ,y-ext)) (new-stil (ly:stencil-add (ly:make-stencil url-expr x-ext y-ext) stil))) (ly:grob-set-property! grob 'stencil new-stil))) #f)))) %%%% test urlI = "https://lilypond.org/doc/v2.14/Documentation/notation/writing-pitches" urlII = "https://lilypond.org/doc/v2.14/Documentation/notation/rhythms" urlIII = "https://lilypond.org/doc/v2.14/Documentation/notation/note-heads" urlIV = "https://lilypond.org/doc/v2.14/Documentation/notation/beams" urlV = "https://lilypond.org/doc/v2.14/Documentation/notation/note-head-styles" \relative c' { \key cis \minor \once \override Staff.Clef.color = #green \once \override Staff.Clef.after-line-breaking = #(add-link urlI) \once \override Staff.TimeSignature.color = #green \once \override Staff.TimeSignature.after-line-breaking = #(add-link urlII) \once \override NoteHead.color = #green \once \override NoteHead.after-line-breaking = #(add-link urlIII) cis'1 \once \override Beam.color = #green \once \override Beam.after-line-breaking = #(add-link urlIV) cis8 dis e fis gis2 <gis, % With 2.17.9 you could use the command below to address the Accidental. % \tweak Accidental.before-line-breaking #(add-link url) \tweak color #green \tweak after-line-breaking #(add-link urlV) \tweak style #'harmonic bis dis fis >1 <cis, cis' e> }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: オブジェクトにリンクを追加する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 長いグリッサンドにタイミング マークを追加する > ] |
タブ譜にマークアップを追加する
デフォルトでは、タブ譜にマークアップは表示されません。表示させるには、\revert TabStaff.TextScript.stencil
を使用します。
%% http://lsr.di.unimi.it/LSR/Item?id=919 % by P.P.Schneider on June 2014 high = { r4 r8 <g c'> q r8 r4 } low = { c4 r4 c8 r8 g,8 b, } pulse = { s8^"1" s^"&" s^"2" s^"&" s^"3" s^"&" s^"4" s^"&" } \score { \new TabStaff { \repeat unfold 2 << \high \\ \low \\ \pulse >> } \layout { \context { \TabStaff \clef moderntab \revert TextScript.stencil \override TextScript.font-series = #'bold \override TextScript.font-size = #-2 \override TextScript.color = #red } \context { \Score proportionalNotationDuration = #(ly:make-moment 1/8) } } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: タブ譜にマークアップを追加する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 装飾音符のスペースを調整する > ] |
長いグリッサンドにタイミング マークを追加する
長いグリッサンド部分の拍をタイミング マークで表示する場合があります。これは通例符頭が無く符幹だけの音符として表され、この中間部分に発想記号を付け加えることもできます。
符幹がグリッサンドにうまく揃わない場合には、わずかに配置を調整する必要があるかもしれません。
glissandoSkipOn = { \override NoteColumn.glissando-skip = ##t \hide NoteHead \override NoteHead.no-ledgers = ##t } glissandoSkipOff = { \revert NoteColumn.glissando-skip \undo \hide NoteHead \revert NoteHead.no-ledgers } \relative c'' { r8 f8\glissando \glissandoSkipOn f4 g a a8\noBeam \glissandoSkipOff a8 r8 f8\glissando \glissandoSkipOn g4 a8 \glissandoSkipOff a8 | r4 f\glissando \< \glissandoSkipOn a4\f \> \glissandoSkipOff b8\! r | }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 長いグリッサンドにタイミング マークを追加する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 歌詞の垂直方向のスペースを調整する > ] |
装飾音符のスペースを調整する
装飾音符のスペーシングは Score.GraceSpacing
の spacing-increment
プロパティで調整することができます。
graceNotes = { \grace { c4 c8 c16 c32 } c8 } \relative c'' { c8 \graceNotes \override Score.GraceSpacing.spacing-increment = #2.0 \graceNotes \revert Score.GraceSpacing.spacing-increment \graceNotes }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 装飾音符のスペースを調整する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 連桁で繋がれた音符の符幹の長さを変更する > ] |
歌詞の垂直方向のスペースを調整する
このスニペットは、歌詞をより譜に近づける方法を示しています。
% Default layout: << \new Staff \new Voice = melody \relative c' { c4 d e f g4 f e d c1 } \new Lyrics \lyricsto melody { aa aa aa aa aa aa aa aa aa } \new Staff { \new Voice = melody \relative c' { c4 d e f g4 f e d c1 } } % Reducing the minimum space below the staff and above the lyrics: \new Lyrics \with { \override VerticalAxisGroup.nonstaff-relatedstaff-spacing = #'((basic-distance . 1)) } \lyricsto melody { aa aa aa aa aa aa aa aa aa } >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 歌詞の垂直方向のスペースを調整する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 小節番号を変更する > ] |
連桁で繋がれた音符の符幹の長さを変更する
連桁で繋がれた音符の符幹の長さは、Stem.details
の
beamed-lengths
プロパティをオーバライドすることで変更できます。引数として単一の値が与えられた場合、設定された長さは連桁内の全ての音符に適用されます。複数の引数が与えられた場合、1 つ目は 8 分音符に対して、2 つ目は 16 分音符に対してというように適用されます。最後の引数は、それより音価の短い音符全てに対しても適用されます。整数でない値を用いることができます。
\relative c'' { \override Stem.details.beamed-lengths = #'(2) a8[ a] a16[ a] a32[ a] \override Stem.details.beamed-lengths = #'(8 10 12) a8[ a] a16[ a] a32[ a] r8 \override Stem.details.beamed-lengths = #'(8) a8[ a] \override Stem.details.beamed-lengths = #'(8.5) a8[ a] \revert Stem.details a8[ a] a16[ a] a32[ a] r16 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 連桁で繋がれた音符の符幹の長さを変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 分析用のブラケットを譜の上に表示する > ] |
小節番号を変更する
小節番号を付番する異なる方法が 2 つあり、繰り返しのある音楽に対して有用です。
\relative c'{ \set Score.alternativeNumberingStyle = #'numbers \repeat volta 3 { c4 d e f | } \alternative { { c4 d e f | c2 d \break } { f4 g a b | f4 g a b | f2 a | \break } { c4 d e f | c2 d } } c1 \break \set Score.alternativeNumberingStyle = #'numbers-with-letters \repeat volta 3 { c,4 d e f | } \alternative { { c4 d e f | c2 d \break } { f4 g a b | f4 g a b | f2 a | \break } { c4 d e f | c2 d } } c1 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 小節番号を変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: ラベル付きの分析用ブラケット > ] |
分析用のブラケットを譜の上に表示する
分析用のブラケットは、デフォルトでは譜の下に表示されます。次の例は譜の上に表示する方法を示しています。
\layout { \context { \Voice \consists "Horizontal_bracket_engraver" } } \relative c'' { \once \override HorizontalBracket.direction = #UP c2\startGroup d2\stopGroup }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 分析用のブラケットを譜の上に表示する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 非対称なスラー > ] |
ラベル付きの分析用ブラケット
Grob HorizontalBracketText
の text
プロパティを設定することで、分析用のブラケットにテキストを追加することができます。同時に開始するブラケットに異なるテキストを追加する場合には、\tweak
コマンドを使用してください。改行後のテキストは括弧付きで表示されます。
\layout { \context { \Voice \consists "Horizontal_bracket_engraver" \override HorizontalBracket.direction = #UP } } { \once\override HorizontalBracketText.text = "a" c''\startGroup d''\stopGroup \once\override HorizontalBracketText.text = "a'" e''\startGroup d''\stopGroup | c''-\tweak HorizontalBracketText.text \markup \bold \huge "b" \startGroup -\tweak HorizontalBracketText.text "a" \startGroup d''\stopGroup e''-\tweak HorizontalBracketText.text "a'" \startGroup d''\stopGroup\stopGroup | c''-\tweak HorizontalBracketText.text foo \startGroup d'' e'' f'' | \break g'' a'' b'' c'''\stopGroup }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: ラベル付きの分析用ブラケット ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: フェルマータの付いたカエスーラ ("線路記号") > ] |
非対称なスラー
音符の流れが対象的な形をしていない場合、それに合わせてスラーを非対称にすることができます。
slurNotes = { d,8( a' d f a f' d, a) } \relative c' { \stemDown \slurUp \slurNotes \once \override Slur.eccentricity = #3.0 \slurNotes }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 非対称なスラー ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 和音内の各音符のサイズを変更する > ] |
フェルマータの付いたカエスーラ ("線路記号")
カエスーラは上にフェルマータの付いた二重の “線路記号” として表記される場合があります。このスニペットは、視覚的に良い線路記号とフェルマータの組み合わせ方を示しています。
\relative c'' { c2. % construct the symbol \override BreathingSign.text = \markup { \override #'(direction . 1) \override #'(baseline-skip . 1.8) \dir-column { \translate #'(0.155 . 0) \center-align \musicglyph "scripts.caesura.curved" \center-align \musicglyph "scripts.ufermata" } } \breathe c4 % set the breathe mark back to normal \revert BreathingSign.text c2. \breathe c4 \bar "|." }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: フェルマータの付いたカエスーラ ("線路記号") ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 連桁の太さとスペーシングを変更する > ] |
和音内の各音符のサイズを変更する
和音内の各音符の符頭は、和音内で \tweak
を使用し、font-size
を変更することでサイズを変えられます。
和音の中 (< >
の内部) では、変更したい音符の前に \tweak
コマンドを配置し、font-size
とサイズ値の #-2
(非常に小さい) を指定します。
\relative c' { <\tweak font-size #+2 c e g c \tweak font-size #-2 e>1 ^\markup { A tiny e }_\markup { A big c } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 和音内の各音符のサイズを変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 複数小節にまたがる休符の形を変更する > ] |
連桁の太さとスペーシングを変更する
連桁を太くしたり細くしたりするには、Beam.beam-thickness
プロパティを変更します。連桁と連桁の距離を調節するには、Beam.length-fraction
プロパティを変更します。
\relative f' { \time 1/8 \override Beam.beam-thickness = #0.4 \override Beam.length-fraction = #0.8 c32 c c c \revert Beam.beam-thickness % 0.48 is default thickness \revert Beam.length-fraction % 1.0 is default spacing c32 c c c \override Beam.beam-thickness = #0.6 \override Beam.length-fraction = #1.3 c32 c c c }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 連桁の太さとスペーシングを変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 個々の Grob のプロパティを変更する > ] |
複数小節にまたがる休符の形を変更する
休符が複数小節に渡り、それが 10 小節以下の場合には、四全休符や二全休符が並んだものとして表記されます (ドイツ語で Kirchenpausen
–
教会休符と呼ばれます)。10 小節より長い場合は、単純な線として表示されます。このデフォルトの 10 を変更するには、expand-limit
プロパティをオーバライドします。
\relative c'' { \compressMMRests { R1*2 | R1*5 | R1*9 \override MultiMeasureRest.expand-limit = #3 R1*2 | R1*5 | R1*9 } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 複数小節にまたがる休符の形を変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: テキストによる強弱記号のテキストとスパナのスタイルを変更する > ] |
個々の Grob のプロパティを変更する
\applyOutput
コマンドは、どのようなコンテキストのどのようなレイアウト オブジェクトも変更することができます。このコマンドは Scheme 関数と 3 つの引数が必要です。
#(define (mc-squared grob grob-origin context) (let ((sp (ly:grob-property grob 'staff-position))) (ly:grob-set-property! grob 'stencil (grob-interpret-markup grob #{ \markup \lower #0.5 #(case sp ((-5) "m") ((-3) "c ") ((-2) #{ \markup \teeny \bold 2 #}) (else "bla")) #})))) \relative c' { <d f g b>2 \applyOutput Voice.NoteHead #mc-squared <d f g b>2 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 個々の Grob のプロパティを変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: デフォルトのテキスト フォント ファミリを変更する > ] |
テキストによる強弱記号のテキストとスパナのスタイルを変更する
クレッシェンドやデクレッシェンドに使われるテキストは crescendoText
,
decrescendoText
コンテキスト プロパティをセットすることで変更できます。
スパナの線は、DynamicTextSpanner
の style
プロパティをセットすることでスタイルを変更できます。デフォルトの値は 'dashed-line
であり、他に 'line
, 'dotted-line
, 'none
が設定できます。
\relative c'' { \set crescendoText = \markup { \italic { cresc. poco } } \set crescendoSpanner = #'text \override DynamicTextSpanner.style = #'dotted-line a2\< a a2 a a2 a a2 a\mf }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: テキストによる強弱記号のテキストとスパナのスタイルを変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 譜のサイズを変更する > ] |
デフォルトのテキスト フォント ファミリを変更する
デフォルトでテキストに使われるフォント ファミリは make-pango-font-tree
をオーバライドすることで変更することができます。
\paper { % change for other default global staff size. myStaffSize = #20 %{ run lilypond -dshow-available-fonts to show all fonts available in the process log. %} #(define fonts (make-pango-font-tree "Times New Roman" "Nimbus Sans,Nimbus Sans L" "Luxi Mono" ;; "Helvetica" ;; "Courier" (/ myStaffSize 20))) } \relative c'' { c4^\markup { roman: foo \bold bla \italic bar \italic \bold baz } c'4_\markup { \override #'(font-family . sans) { sans: foo \bold bla \italic bar \italic \bold baz } } c'2^\markup { \override #'(font-family . typewriter) { mono: foo \bold bla \italic bar \italic \bold baz } } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: デフォルトのテキスト フォント ファミリを変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: メトロノーム記号を表示せずにテンポを変更する > ] |
譜のサイズを変更する
譜のサイズを変更する一番シンプルな方法は
#(set-global-staff-size xx)
を使用することですが、譜ごとにサイズを変更するには staff-space
や fontSize
プロパティを使用します。
<< \new Staff { \relative c'' { \dynamicDown c8\ff c c c c c c c } } \new Staff \with { fontSize = #-3 \override StaffSymbol.staff-space = #(magstep -3) } { \clef bass c8 c c c c\f c c c } >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 譜のサイズを変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: サステイン ペダル記号のテキストを変更する > ] |
メトロノーム記号を表示せずにテンポを変更する
楽譜には何も出力せずに MIDI 出力のテンポのみを変更するには、メトロノーム記号を非表示にします。
\score { \new Staff \relative c' { \tempo 4 = 160 c4 e g b c4 b d c \set Score.tempoHideNote = ##t \tempo 4 = 96 d,4 fis a cis d4 cis e d } \layout { } \midi { } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: メトロノーム記号を表示せずにテンポを変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 改行後のスパナの可視性をコントロールする > ] |
サステイン ペダル記号のテキストを変更する
ペダル ダウンやペダル アップに使われるテキストは、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 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: サステイン ペダル記号のテキストを変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: スクリプトの縦方向の優先順位をコントロールする > ] |
改行後のスパナの可視性をコントロールする
改行のすぐ後の音符で終了するスパナの可視性は、after-line-breaking
のコールバック ly:spanner::kill-zero-spanned-time
によりコントロールされます。
グリッサンドやヘアピンのようなオブジェクトは、デフォルトで改行後のスパナを表示しないようにしています。このコールバックを無効化することで、改行後のスパナが表示されるようになります。
逆に、テキスト スパナなどはデフォルトで改行後に表示されるようになっていますが、コールバックを有効にすることで削除することができます。
\paper { ragged-right = ##t } \relative c'' { \override Hairpin.to-barline = ##f \override Glissando.breakable = ##t % show hairpin \override Hairpin.after-line-breaking = ##t % hide text span \override TextSpanner.after-line-breaking = #ly:spanner::kill-zero-spanned-time e2\<\startTextSpan % show glissando \override Glissando.after-line-breaking = ##t f2\glissando \break f,1\!\stopTextSpan }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 改行後のスパナの可視性をコントロールする ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 連符の括弧の可視性をコントロールする > ] |
スクリプトの縦方向の優先順位をコントロールする
スクリプト (音符に付加する記号) の縦方向の優先順位は、script-priority
プロパティでコントロールされます。値が小さいほど、音符の近くに配置されます。この例では、1 つ目は
TextScript
(シャープ記号) を低い優先度を持つようにしており、一番低い位置に表示されます。2 つ目はトリル (Script
) が低い優先度を持ち、内側に表示されるようになっています。2 つのオブジェクトが同じ優先度を持つ場合には、入力された順番が配置に影響します。
\relative c''' { \once \override TextScript.script-priority = #-100 a2^\prall^\markup { \sharp } \once \override Script.script-priority = #-100 a2^\prall^\markup { \sharp } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: スクリプトの縦方向の優先順位をコントロールする ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 遅れターンを作成する > ] |
連符の括弧の可視性をコントロールする
連符の括弧の可視性についての挙動は、デフォルトでは同じ長さの連桁がある場合に表示されないようになっています。これをコントロールするには、bracket-bisibility
プロパティを #t
(常に表示),
#'if-no-beam
(連桁が無い場合にのみ表示。デフォルトの振る舞い),
#f
(常に非表示) のいずれかにセットします。
3 つ目の選択肢は、実際には TupletBracket
オブジェクトを出力から完全に省略することに相当します。
music = \relative c'' { \tuplet 3/2 { c16[ d e } f8] \tuplet 3/2 { c8 d e } \tuplet 3/2 { c4 d e } } \new Voice { \relative c' { << \music s4^"default" >> \override TupletBracket.bracket-visibility = #'if-no-beam << \music s4^"'if-no-beam" >> \override TupletBracket.bracket-visibility = ##t << \music s4^"#t" >> \override TupletBracket.bracket-visibility = ##f << \music s4^"#f" >> \omit TupletBracket << \music s4^"omit" >> } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 連符の括弧の可視性をコントロールする ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: カスタマイズされた調号を作成する > ] |
遅れターンを作成する
下の音符が臨時記号を持つような遅れターンを作るには、いくつかのオーバライドが必要です。outside-staff-priority
プロパティを #f
にセットしなければ、avoid-slur
プロパティよりも優先されてしまい、スラーの内側に記号が入りません。分数 2/3
と 1/3
は、水平位置を調整しています。
\relative c'' { c2*2/3 ( s2*1/3\turn d4) r << { c4.( d8) } { s4 s\turn } >> \transpose c d \relative c'' << { c4.( d8) } { s4 \once \set suggestAccidentals = ##t \once \override AccidentalSuggestion.outside-staff-priority = ##f \once \override AccidentalSuggestion.avoid-slur = #'inside \once \override AccidentalSuggestion.font-size = -3 \once \override AccidentalSuggestion.script-priority = -1 \single \hideNotes b8-\turn \noBeam s8 } >> }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 遅れターンを作成する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 2 桁の運指記号を作成する > ] |
カスタマイズされた調号を作成する
LilyPond はカスタマイズされた調号をサポートしています。この例では、フラットを広範囲に表示する D マイナーを作成しています。
\new Staff \with { \override StaffSymbol.line-count = #8 \override KeySignature.flat-positions = #'((-7 . 6)) \override KeyCancellation.flat-positions = #'((-7 . 6)) % presumably sharps are also printed in both octaves \override KeySignature.sharp-positions = #'((-6 . 7)) \override KeyCancellation.sharp-positions = #'((-6 . 7)) \override Clef.stencil = # (lambda (grob)(grob-interpret-markup grob #{ \markup\combine \musicglyph "clefs.C" \translate #'(-3 . -2) \musicglyph "clefs.F" #})) clefPosition = #3 middleCPosition = #3 middleCClefPosition = #3 } { \key d\minor f bes, f bes, }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: カスタマイズされた調号を作成する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 同時に出現するリハーサル記号を作成する > ] |
2 桁の運指記号を作成する
5 よりも大きな運指記号を作成することができます。
\relative c' { c1-10 c1-50 c1-36 c1-29 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 2 桁の運指記号を作成する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: テキスト スパナを作成する > ] |
同時に出現するリハーサル記号を作成する
テキスト スクリプトとは異なり、リハーサル記号は 1 地点に複数配置することはできません: ReharsalMark
は 1 つだけ作成されます。不可視の小節と小節線を用いることで、同じ列に並んでいるように見える 2 つ目のリハーサル記号を追加することができます。この方法は、システムの終端と次のシステムの始端の両方にリハーサル記号を配置する際にも有用です。
{ \key a \major \set Score.markFormatter = #format-mark-box-letters \once \override Score.RehearsalMark.outside-staff-priority = #5000 \once \override Score.RehearsalMark.self-alignment-X = #LEFT \once \override Score.RehearsalMark.break-align-symbols = #'(key-signature) \mark \markup { \bold { Senza denti } } % the hidden measure and bar line % \cadenzaOn turns off automatic calculation of bar numbers \cadenzaOn \once \override Score.TimeSignature.stencil = ##f \time 1/16 s16 \bar "" \cadenzaOff \time 4/4 \once \override Score.RehearsalMark.self-alignment-X = #LEFT \mark \markup { \box \bold Intro } d'1 \mark \default d'1 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 同時に出現するリハーサル記号を作成する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 譜をまたがる和音 -- 連桁との問題を解決する > ] |
テキスト スパナを作成する
\startTextSpan
と \stopTextSpan
コマンドは、ペダル記号やオッターバのようにテキスト スパナを容易に作成できます。TextSpanner
オブジェクトのプロパティをオーバライドすることで、出力を変更することができます。
\paper { ragged-right = ##f } \relative c'' { \override TextSpanner.bound-details.left.text = #"bla" \override TextSpanner.bound-details.right.text = #"blu" a4 \startTextSpan b4 c a4 \stopTextSpan \override TextSpanner.style = #'line \once \override TextSpanner.bound-details.left.stencil-align-dir-y = #CENTER a4 \startTextSpan b4 c a4 \stopTextSpan \override TextSpanner.style = #'dashed-line \override TextSpanner.bound-details.left.text = \markup { \draw-line #'(0 . 1) } \override TextSpanner.bound-details.right.text = \markup { \draw-line #'(0 . -2) } \once \override TextSpanner.bound-details.right.padding = #-2 a4 \startTextSpan b4 c a4 \stopTextSpan \set Staff.middleCPosition = #-13 \override TextSpanner.dash-period = #10 \override TextSpanner.dash-fraction = #0.5 \override TextSpanner.thickness = #10 a4 \startTextSpan b4 c a4 \stopTextSpan }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: テキスト スパナを作成する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 譜をまたがる符幹 > ] |
譜をまたがる和音 – 連桁との問題を解決する
譜をまたがる和音を作成する際に、連桁の衝突に関する問題が起きないように上の譜の符幹を下向きに伸ばした方が良い場合があります。次の例で下の譜の符幹を伸ばそうとした場合、\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 } >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 譜をまたがる和音 -- 連桁との問題を解決する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: クストス > ] |
譜をまたがる符幹
このスニペットは、Span_stem_engraver
と \crossStaff
を用いて、自動的に譜をまたがる符幹を作成しています。
符幹の長さは自動的に計算されるため指定する必要はありません。
\layout { \context { \PianoStaff \consists #Span_stem_engraver } } { \new PianoStaff << \new Staff { <b d'>4 r d'16\> e'8. g8 r\! e'8 f' g'4 e'2 } \new Staff { \clef bass \voiceOne \autoBeamOff \crossStaff { <e g>4 e, g16 a8. c8} d \autoBeamOn g8 f g4 c2 } >> }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 譜をまたがる符幹 ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: フレットボードのフレット図をカスタマイズする > ] |
クストス
クストスは様々なスタイルで譜刻することができます。
\layout { ragged-right = ##t } \new Staff \with { \consists "Custos_engraver" } \relative c' { \override Staff.Custos.neutral-position = #4 \override Staff.Custos.style = #'hufnagel c1^"hufnagel" \break <d a' f'>1 \override Staff.Custos.style = #'medicaea c1^"medicaea" \break <d a' f'>1 \override Staff.Custos.style = #'vaticana c1^"vaticana" \break <d a' f'>1 \override Staff.Custos.style = #'mensural c1^"mensural" \break <d a' f'>1 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: クストス ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: マークアップのフレット図をカスタマイズする > ] |
フレットボードのフレット図をカスタマイズする
フレット図のプロパティは fret-diagram-details
からセットできます。FretBoardのフレット図では、オーバライドは FretBoards.FretBoard
オブジェクトに適用されます。FretBoards
は Voice
のように最下位のコンテキストであるため、プロパティのオーバライドでは省略することができます。
\include "predefined-guitar-fretboards.ly" \storePredefinedDiagram #default-fret-table \chordmode { c' } #guitar-tuning #"x;1-1-(;3-2;3-3;3-4;1-1-);" % shorthand oo = #(define-music-function (grob-path value) (list? scheme?) #{ \once \override $grob-path = #value #}) << \new ChordNames { \chordmode { c1 | c | c | d } } \new FretBoards { % Set global properties of fret diagram \override FretBoards.FretBoard.size = #'1.2 \override FretBoard.fret-diagram-details.finger-code = #'in-dot \override FretBoard.fret-diagram-details.dot-color = #'white \chordmode { c \oo FretBoard.size #'1.0 \oo FretBoard.fret-diagram-details.barre-type #'straight \oo FretBoard.fret-diagram-details.dot-color #'black \oo FretBoard.fret-diagram-details.finger-code #'below-string c' \oo FretBoard.fret-diagram-details.barre-type #'none \oo FretBoard.fret-diagram-details.number-type #'arabic \oo FretBoard.fret-diagram-details.orientation #'landscape \oo FretBoard.fret-diagram-details.mute-string #"M" \oo FretBoard.fret-diagram-details.label-dir #LEFT \oo FretBoard.fret-diagram-details.dot-color #'black c' \oo FretBoard.fret-diagram-details.finger-code #'below-string \oo FretBoard.fret-diagram-details.dot-radius #0.35 \oo FretBoard.fret-diagram-details.dot-position #0.5 \oo FretBoard.fret-diagram-details.fret-count #3 d } } \new Voice { c'1 | c' | c' | d' } >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: フレットボードのフレット図をカスタマイズする ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: システムに譜が 1 つしか存在しない場合にも括弧を表示する > ] |
マークアップのフレット図をカスタマイズする
フレット図のプロパティは fret-diagram-details
からセットできます。マークアップのフレット図では、オーバライドは Voice.TextScript
オブジェクトや、マークアップに直接適用されます。
<< \chords { c1 | c | c | d } \new Voice = "mel" { \textLengthOn % Set global properties of fret diagram \override TextScript.size = #'1.2 \override TextScript.fret-diagram-details.finger-code = #'in-dot \override TextScript.fret-diagram-details.dot-color = #'white %% C major for guitar, no barre, using defaults % terse style c'1^\markup { \fret-diagram-terse "x;3-3;2-2;o;1-1;o;" } %% C major for guitar, barred on third fret % verbose style % size 1.0 % roman fret label, finger labels below string, straight barre c'1^\markup { % standard size \override #'(size . 1.0) { \override #'(fret-diagram-details . ( (number-type . roman-lower) (finger-code . in-dot) (barre-type . straight))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 5 1 3)) } } } %% C major for guitar, barred on third fret % verbose style % landscape orientation, arabic numbers, M for mute string % no barre, fret label down or left, small mute label font c'1^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (number-type . arabic) (label-dir . -1) (mute-string . "M") (orientation . landscape) (barre-type . none) (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 5 1 3)) } } %% simple D chord % terse style % larger dots, centered dots, fewer frets % label below string d'1^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (dot-position . 0.5) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } } >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: マークアップのフレット図をカスタマイズする ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: Grob の親子関係を表示する > ] |
システムに譜が 1 つしか存在しない場合にも括弧を表示する
ChoirStaff
や StaffGroup
に譜が 1 つだけ存在する場合、デフォルトでは括弧や行頭の小節線は表示されません。これは collapse-height
をオーバライドし、値を譜線の数より小さくセットすることで変更することができます。
括弧が波の形をしている
PianoStaff
や GrandStaff
のようなコンテキストでは、別のプロパティをセットする必要があります。例の 2 つ目のシステムを参照してください。
\score { \new StaffGroup << % Must be lower than the actual number of staff lines \override StaffGroup.SystemStartBracket.collapse-height = #4 \override Score.SystemStartBar.collapse-height = #4 \new Staff { c'1 } >> } \score { \new PianoStaff << \override PianoStaff.SystemStartBrace.collapse-height = #4 \override Score.SystemStartBar.collapse-height = #4 \new Staff { c'1 } >> }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: システムに譜が 1 つしか存在しない場合にも括弧を表示する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: ハーモニクスの付点 > ] |
Grob の親子関係を表示する
Grob のコールバックを使用する際、Grob の親子関係を理解すると役立つ場合があります。多くの Grob は親を持ち、Grob が表示される位置の基準点となります。X 軸方向の親 (X-parent) と Y 軸方向の親 (Y-parent) はそれぞれ横方向と縦方向の位置の基準となります。同様に、親の Grob にもそれぞれの親が存在します。
残念ながら、Grob の親子関係を分かりにくくしていることがいくつかあります:
* Grob が持つ親の種類はコンテキストに依存する場合があります。
* いくつかの Grob では、X 軸方向の親と Y 軸方向の親が同じです。
* Grob の親が位置の基準以外の役割を果たす場合があります。
* "世代" として考えるのは誤解を生みます。
例えば、System
Grob は VerticalAlignment
の
(Y 軸方向の) 親にも、(X 軸方向の両方の) 祖父母にもなっています。
このマクロは、Grob の親子関係を (コンソールに) 分かりやすく表示します。
このように呼び出します:
{ \once \override NoteHead.before-line-breaking =
#display-ancestry c }
以下のような出力を得ます:
NoteHead X,Y: NoteColumn
X: PaperColumn
X,Y: System
Y: VerticalAxisGroup
X: NonMusicalPaperColumn
X,Y: System
Y: VerticalAlignment
X: NonMusicalPaperColumn
X,Y: System
Y: System
%% http://lsr.di.unimi.it/LSR/Item?id=622 %% see also http://www.lilypond.org/doc/v2.18/Documentation/snippets/tweaks-and-overrides#tweaks-and-overrides-displaying-grob-ancestry %% Remark: %% grob::name is in the source since 2.19.x could be deleted during next LSR-upgrade #(define (grob::name grob) (assq-ref (ly:grob-property grob 'meta) 'name)) #(define (get-ancestry grob) (if (not (null? (ly:grob-parent grob X))) (list (grob::name grob) (get-ancestry (ly:grob-parent grob X)) (get-ancestry (ly:grob-parent grob Y))) (grob::name grob))) #(define (format-ancestry lst padding) (string-append (symbol->string (car lst)) "\n" (let ((X-ancestry (if (list? (cadr lst)) (format-ancestry (cadr lst) (+ padding 3)) (symbol->string (cadr lst)))) (Y-ancestry (if (list? (caddr lst)) (format-ancestry (caddr lst) (+ padding 3)) (symbol->string (caddr lst))))) (if (equal? X-ancestry Y-ancestry) (string-append (format #f "~&") (make-string padding #\space) "X,Y: " (if (list? (cadr lst)) (format-ancestry (cadr lst) (+ padding 5)) (symbol->string (cadr lst)))) (string-append (format #f "~&") (make-string padding #\space) "X: " X-ancestry "\n" (make-string padding #\space) "Y: " Y-ancestry (format #f "~&")))) (format #f "~&"))) #(define (display-ancestry grob) (format (current-error-port) "~3&~a~2%~a~&" (make-string 36 #\-) (if (ly:grob? grob) (format-ancestry (get-ancestry grob) 0) (format #f "~a is not a grob" grob)))) \relative c' { \once \override NoteHead.before-line-breaking = #display-ancestry f4 \once \override Accidental.before-line-breaking = #display-ancestry \once \override Arpeggio.before-line-breaking = #display-ancestry <f as c>4\arpeggio }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: Grob の親子関係を表示する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: Grob の周りにボックスを表示する > ] |
ハーモニクスの付点
\harmonic
を用いて恣意的に作り出すハーモニクスは付点を表示しません。この挙動をオーバライドするには、harmonicDots
コンテキスト プロパティをセットします。
\relative c''' { \time 3/4 \key f \major \set harmonicDots = ##t <bes f'\harmonic>2. ~ <bes f'\harmonic>4. <a e'\harmonic>8( <gis dis'\harmonic> <g d'\harmonic>) <fis cis'\harmonic>2. <bes f'\harmonic>2. }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: ハーモニクスの付点 ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 様々なオブジェクトの周りを円で囲む > ] |
Grob の周りにボックスを表示する
任意の Grob の周りにボックスを表示するために、print-function
をオーバライドすることができます。
\relative c'' { \override TextScript.stencil = #(make-stencil-boxer 0.1 0.3 ly:text-interface::print) c'4^"foo" \override Stem.stencil = #(make-stencil-boxer 0.05 0.25 ly:stem::print) \override Score.RehearsalMark.stencil = #(make-stencil-boxer 0.15 0.3 ly:text-interface::print) b8 \revert Stem.stencil \revert Flag.stencil c4. c4 \mark "F" c1 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: Grob の周りにボックスを表示する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 強弱記号のカスタム テキスト スパナ後置関数 > ] |
様々なオブジェクトの周りを円で囲む
\circle
マークアップ コマンドは、様々なオブジェクトの周りに円を描画します (例えば運指記号)。他のオブジェクトに対しては、調整が必要な場合があります: この例は、リハーサル記号と小節番号に対して円を描画する 2 つの方法を示しています。
\relative c' { c1 \set Score.markFormatter = #(lambda (mark context) (make-circle-markup (format-mark-numbers mark context))) \mark \default c2 d^\markup { \override #'(thickness . 3) { \circle \finger 2 } } \override Score.BarNumber.break-visibility = #all-visible \override Score.BarNumber.stencil = #(make-stencil-circler 0.1 0.25 ly:text-interface::print) }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 様々なオブジェクトの周りを円で囲む ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 強弱記号のテキスト スパナ音楽関数 > ] |
強弱記号のカスタム テキスト スパナ後置関数
これは、クレッシェンドのテキスト スパナをカスタマイズする後置関数です。スパナは小節の最初の音符から始めるべきです。-\mycresc
の記法を使用しなければ、スパナの開始点が次の音符になってしまいます。
% Two functions for (de)crescendo spanners where you can explicitly % give the spanner text. mycresc = #(define-music-function (mymarkup) (markup?) (make-music 'CrescendoEvent 'span-direction START 'span-type 'text 'span-text mymarkup)) mydecresc = #(define-music-function (mymarkup) (markup?) (make-music 'DecrescendoEvent 'span-direction START 'span-type 'text 'span-text mymarkup)) \relative c' { c4-\mycresc "custom cresc" c4 c4 c4 | c4 c4 c4 c4 | c4-\mydecresc "custom decresc" c4 c4 c4 | c4 c4\! c4 c4 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 強弱記号のカスタム テキスト スパナ後置関数 ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: TrillSpanner を延長する > ] |
強弱記号のテキスト スパナ音楽関数
カスタム テキスト スパナを定義することができ、ヘアピンやテキスト
クレッシェンドと同時に用いることができます。\<
と \>
はデフォルトでヘアピンを作り出し、\cresc
などはデフォルトでテキスト スパナを作り出します。
% Some sample text dynamic spanners, to be used as postfix operators crpoco = #(make-music 'CrescendoEvent 'span-direction START 'span-type 'text 'span-text "cresc. poco a poco") \relative c' { c4\cresc d4 e4 f4 | g4 a4\! b4\crpoco c4 | c4 d4 e4 f4 | g4 a4\! b4\< c4 | g4\dim a4 b4\decresc c4\! }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 強弱記号のテキスト スパナ音楽関数 ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 繰り返しにまたがるグリッサンド > ] |
TrillSpanner を延長する
TrillSpanner
に対しては、minimum
プロパティは
set-spacing-rods
プロシージャが明示的に呼ばれている場合に限り有効となります。そのためには、springs-and-rods
プロパティをly:spanner::set-spacing-rods
にセットします。
\relative c' { \key c\minor \time 2/4 c16( as') c,-. des-. \once\override TrillSpanner.minimum-length = #15 \once\override TrillSpanner.springs-and-rods = #ly:spanner::set-spacing-rods \afterGrace es4 \startTrillSpan { d16[( \stopTrillSpan es)] } c( c' g es c g' es d \hideNotes c8) }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: TrillSpanner を延長する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: ペダル記号のブラケットを微調整する > ] |
繰り返しにまたがるグリッサンド
複数の \alternative
ブロックにまたがるグリッサンドは、\alternative
ブロックの始まりに見えない装飾音符を配置し、グリッサンドを付加することで模倣することができます。装飾音符のピッチはグリッサンドの始端と同じであるべきです。ここでは、装飾音符のピッチを引数に取る音楽関数を定義しています。
多声の音楽では、他のボイスの装飾音符と位置を合わせる必要があります。
repeatGliss = #(define-music-function (grace) (ly:pitch?) #{ % the next two lines ensure the glissando is long enough % to be visible \once \override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods \once \override Glissando.minimum-length = #3.5 \once \hideNotes \grace $grace \glissando #}) \score { \relative c'' { \repeat volta 3 { c4 d e f\glissando } \alternative { { g2 d } { \repeatGliss f g2 e } { \repeatGliss f e2 d } } } } music = \relative c' { \voiceOne \repeat volta 2 { g a b c\glissando } \alternative { { d1 } { \repeatGliss c \once \omit StringNumber e1\2 } } } \score { \new StaffGroup << \new Staff << \new Voice { \clef "G_8" \music } >> \new TabStaff << \new TabVoice { \clef "moderntab" \music } >> >> }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 繰り返しにまたがるグリッサンド ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 平坦なタイ > ] |
ペダル記号のブラケットを微調整する
ペダル記号のブラケットの見た目は様々に調整することができます。
\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 }
平坦なタイ
この関数は Tie.stencil
をデフォルトの引数に取り、このデフォルトのステンシルの寸法を基にサイズが計算されます。更なる調整は
Tie.details.height-limit
や \shape
で行うことができます。また、カスタム定義をその場で変更することもできます。
%% http://lsr.di.unimi.it/LSR/Item?id=1031 #(define ((flared-tie coords) grob) (define (pair-to-list pair) (list (car pair) (cdr pair))) (define (normalize-coords goods x y dir) (map (lambda (coord) ;(coord-scale coord (cons x (* y dir))) (cons (* x (car coord)) (* y dir (cdr coord)))) goods)) (define (my-c-p-s points thick) (make-connected-path-stencil points thick 1.0 1.0 #f #f)) ;; outer let to trigger suicide (let ((sten (ly:tie::print grob))) (if (grob::is-live? grob) (let* ((layout (ly:grob-layout grob)) (line-thickness (ly:output-def-lookup layout 'line-thickness)) (thickness (ly:grob-property grob 'thickness 0.1)) (used-thick (* line-thickness thickness)) (dir (ly:grob-property grob 'direction)) (xex (ly:stencil-extent sten X)) (yex (ly:stencil-extent sten Y)) (lenx (interval-length xex)) (leny (interval-length yex)) (xtrans (car xex)) (ytrans (if (> dir 0)(car yex) (cdr yex))) (uplist (map pair-to-list (normalize-coords coords lenx (* leny 2) dir)))) (ly:stencil-translate (my-c-p-s uplist used-thick) (cons xtrans ytrans))) '()))) #(define flare-tie (flared-tie '((0 . 0)(0.1 . 0.2) (0.9 . 0.2) (1.0 . 0.0)))) \layout { \context { \Voice \override Tie.stencil = #flare-tie } } \paper { ragged-right = ##f } \relative c' { a4~a \override Tie.height-limit = 4 a'4~a a'4~a <a,, c e a c e a c e>~ q \break a'4~a \once \override Tie.details.height-limit = 14 a4~a \break a4~a \once \override Tie.details.height-limit = 0.5 a4~a \break a4~a \shape #'((0 . 0) (0 . 0.4) (0 . 0.4) (0 . 0)) Tie a4~a \break a4~a \once \override Tie.stencil = #(flared-tie '((0 . 0)(0.1 . 0.4) (0.9 . 0.4) (1.0 . 0.0))) a4~a a4~a \once \override Tie.stencil = #(flared-tie '((0 . 0)(0.06 . 0.1) (0.94 . 0.1) (1.0 . 0.0))) a4~a }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 平坦なタイ ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 音符の水平位置を強制的に調整する > ] |
Force a cancellation natural before accidentals
The following example shows how to force a natural sign before an accidental.
\relative c' { \key es \major bes c des \tweak Accidental.restore-first ##t eis }
音符の水平位置を強制的に調整する
組版エンジンがうまく対処できない場合、次の構文で音符の水平位置をオーバライドすることができます。単位は譜スペースです。
\relative c' << { <d g>2 <d g> } \\ { <b f'>2 \once \override NoteColumn.force-hshift = #1.7 <b f'>2 } >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 音符の水平位置を強制的に調整する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 符尾をカスタマイズする > ] |
フレット図とその調整
このスニペットは、フレット図を表示し、見た目を様々に調整する方法を示しています。
<< \chords { a2 a \repeat unfold 3 { c c c d d } } \new Voice = "mel" { \textLengthOn % Set global properties of fret diagram \override TextScript.size = #1.2 \override TextScript.fret-diagram-details.finger-code = #'below-string \override TextScript.fret-diagram-details.dot-color = #'black %% A chord for ukulele a'2^\markup { \override #'(fret-diagram-details . ( (string-count . 4) (dot-color . white) (finger-code . in-dot))) { \fret-diagram "4-2-2;3-1-1;2-o;1-o;" } } %% A chord for ukulele, with formatting defined in definition string % 1.2 * size, 4 strings, 4 frets, fingerings below string % dot radius .35 of fret spacing, dot position 0.55 of fret spacing a'2^\markup { \override #'(fret-diagram-details . ( (dot-color . white) (open-string . "o"))) { \fret-diagram "s:1.2;w:4;h:3;f:2;d:0.35;p:0.55;4-2-2;3-1-1;2-o;1-o;" } } %% These chords will be in normal orientation %% C major for guitar, barred on third fret % verbose style % roman fret label, finger labels below string, straight barre c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . roman-lower) (finger-code . below-string) (barre-type . straight))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 5 1 3)) } } } %% C major for guitar, barred on third fret %% Double barre used to test barre function % verbose style c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . arabic) (dot-label-font-mag . 0.9) (finger-code . in-dot) (fret-label-font-mag . 0.6) (fret-label-vertical-offset . 0) (label-dir . -1) (mute-string . "M") (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 4 2 5) (barre 5 1 3)) } } } %% C major for guitar, with capo on third fret % verbose style c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . roman-upper) (dot-label-font-mag . 0.9) (finger-code . none) (fret-label-vertical-offset . 0.5) (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (capo 3) (open 5) (place-fret 4 5 1) (place-fret 3 5 2) (place-fret 2 5 3) (open 1)) } } } %% simple D chord d'2^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (string-thickness-factor . 0.3) (dot-position . 0.5) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } %% simple D chord, large top fret thickness d'2^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (dot-position . 0.5) (top-fret-thickness . 7) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } % These chords will be in landscape orientation \override TextScript.fret-diagram-details.orientation = #'landscape %% C major for guitar, barred on third fret % verbose style % roman fret label, finger labels below string, straight barre c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . roman-lower) (finger-code . below-string) (barre-type . straight))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 5 1 3)) } } } %% C major for guitar, barred on third fret %% Double barre used to test barre function % verbose style c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . arabic) (dot-label-font-mag . 0.9) (finger-code . in-dot) (fret-label-font-mag . 0.6) (fret-label-vertical-offset . 0) (label-dir . -1) (mute-string . "M") (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 4 2 5) (barre 5 1 3)) } } } %% C major for guitar, with capo on third fret % verbose style c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . roman-upper) (dot-label-font-mag . 0.9) (finger-code . none) (fret-label-vertical-offset . 0.5) (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (capo 3) (open 5) (place-fret 4 5 1) (place-fret 3 5 2) (place-fret 2 5 3) (open 1)) } } } %% simple D chord d'2^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (dot-position . 0.5) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } %% simple D chord, large top fret thickness d'2^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (dot-position . 0.5) (top-fret-thickness . 7) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } % These chords will be in opposing-landscape orientation \override TextScript.fret-diagram-details.orientation = #'opposing-landscape %% C major for guitar, barred on third fret % verbose style % roman fret label, finger labels below string, straight barre c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . roman-lower) (finger-code . below-string) (barre-type . straight))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 5 1 3)) } } } %% C major for guitar, barred on third fret %% Double barre used to test barre function % verbose style c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . arabic) (dot-label-font-mag . 0.9) (finger-code . in-dot) (fret-label-font-mag . 0.6) (fret-label-vertical-offset . 0) (label-dir . -1) (mute-string . "M") (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 4 2 5) (barre 5 1 3)) } } } %% C major for guitar, with capo on third fret % verbose style c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . roman-upper) (dot-label-font-mag . 0.9) (finger-code . none) (fret-label-vertical-offset . 0.5) (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (capo 3) (open 5) (place-fret 4 5 1) (place-fret 3 5 2) (place-fret 2 5 3) (open 1)) } } } %% simple D chord d'2^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (dot-position . 0.5) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } %% simple D chord, large top fret thickness d'2^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (dot-position . 0.5) (top-fret-thickness . 7) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } } >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: フレット図とその調整 ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: Grob をスキップするグリッサンド > ] |
符尾をカスタマイズする
Flag
Grob の stencil
プロパティをカスタム Scheme 関数にセットし、符尾のグリフを生成することができます。
#(define-public (weight-flag grob) (let* ((stem-grob (ly:grob-parent grob X)) (log (- (ly:grob-property stem-grob 'duration-log) 2)) (is-up? (eqv? (ly:grob-property stem-grob 'direction) UP)) (yext (if is-up? (cons (* log -0.8) 0) (cons 0 (* log 0.8)))) (flag-stencil (make-filled-box-stencil '(-0.4 . 0.4) yext)) (stroke-style (ly:grob-property grob 'stroke-style)) (stroke-stencil (if (equal? stroke-style "grace") (make-line-stencil 0.2 -0.9 -0.4 0.9 -0.4) empty-stencil))) (ly:stencil-add flag-stencil stroke-stencil))) % Create a flag stencil by looking up the glyph from the font #(define (inverted-flag grob) (let* ((stem-grob (ly:grob-parent grob X)) (dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u")) (flag (retrieve-glyph-flag "" dir "" grob)) (line-thickness (ly:staff-symbol-line-thickness grob)) (stem-thickness (ly:grob-property stem-grob 'thickness)) (stem-width (* line-thickness stem-thickness)) (stroke-style (ly:grob-property grob 'stroke-style)) (stencil (if (null? stroke-style) flag (add-stroke-glyph flag stem-grob dir stroke-style ""))) (rotated-flag (ly:stencil-rotate-absolute stencil 180 0 0))) (ly:stencil-translate rotated-flag (cons (- (/ stem-width 2)) 0)))) snippetexamplenotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 } { \override Score.RehearsalMark.self-alignment-X = #LEFT \time 1/4 \mark "Normal flags" \snippetexamplenotes \mark "Custom flag: inverted" \override Flag.stencil = #inverted-flag \snippetexamplenotes \mark "Custom flag: weight" \override Flag.stencil = #weight-flag \snippetexamplenotes \mark "Revert to normal" \revert Flag.stencil \snippetexamplenotes }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 符尾をカスタマイズする ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 異なるライン スタイルのヘアピン > ] |
Grob をスキップするグリッサンド
NoteColumn
Grob をグリッサンドが飛び越すように設定することができます。
\relative c' { a2 \glissando \once \override NoteColumn.glissando-skip = ##t f''4 d, }
異なるライン スタイルのヘアピン
ヘアピンには line-interface
のスタイルを用いることができます:
dashed-line, dotted-line, line, trill, zigzag です。
\relative c' { c2\< c\! \override Hairpin.style = #'dashed-line c2\< c\! \override Hairpin.style = #'dotted-line c2\< c\! \override Hairpin.style = #'line c2\< c\! \override Hairpin.style = #'trill c2\< c\! \override Hairpin.style = #'zigzag c2\< c\! \revert Hairpin.style c2\< c\! }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 異なるライン スタイルのヘアピン ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: フレット図の位置を変更する方法 > ] |
カスタム強弱記号を水平方向に揃える ("sempre pp" "piu f" "subito p" など)
強弱記号の中には追加のテキストを伴うもの (例えば “sempre pp”) があります。強弱記号は通常音符の下に中央揃えされるため、\pp の部分が音符に揃えられる必要があります。
“sempre pp” を水平方向に正しく揃えるためには、あたかも \pp のみが存在するかのように揃える必要があります。いくつかのアプローチがあります:
* 強弱記号が適用される音符の前に
\once\override DynamicText.X-offset = #-9.2
を設定し、手動で正しい位置にシフトします。欠点: この強弱記号を使用する際に毎回手動でシフトを行う必要があります。
* カスタム強弱記号の定義にいくらかのパディング (#:hspace 7.1
) を追加して、それを中央揃えさせます。欠点: パディングは実際にスペースを占有するため、その位置に他のマークアップや強弱記号は配置されません。
* 強弱記号のスクリプトを \once\override ... .X-offset = ..
でシフトします。欠点: \once \override
が毎回必要です!
* 追加されるテキストの寸法を (#:with-dimensions '(0 . 0) '(0 . 0)
を用いて) 0 にします。欠点: LilyPond にとっては “sempre” のサイズが
0 になるため、他のオブジェクトと衝突する可能性があります (衝突判定が行われないということです!)。また、いくつかのスペースは占有されているようであり、テキストが存在しない場合に比べて配置が多少ずれます。
* dynamic-script の Scheme 関数内で、直接明示的にシフトを設定します。
* dynamic-script の内部で明示的に揃え位置を設定します。デフォルトでは、これは何の効果も現れませんが、X-offset を指定した際にのみ有効となります!
欠点: DynamicText.X-offset
をセットする必要があり、それは全ての強弱記号に影響します! また、揃え位置は pp の中央ではなく、追加したテキストの右端となります。
\paper { ragged-right = ##f indent = 2.5\cm } % Solution 1: Using a simple markup with a particular halign value % Drawback: It's a markup, not a dynamic command, so \dynamicDown % etc. will have no effect semppMarkup = \markup { \halign #1.4 \italic "sempre" \dynamic "pp" } % Solution 2: Using a dynamic script & shifting with % \once \override ...X-offset = .. % Drawback: \once \override needed for every invocation semppK = #(make-dynamic-script (markup #:line (#:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 3: Padding the dynamic script so the center-alignment % puts it at the correct position % Drawback: the padding really reserves the space, nothing else can be there semppT = #(make-dynamic-script (markup #:line (#:normal-text #:italic "sempre" #:dynamic "pp" #:hspace 7.1))) % Solution 4: Dynamic, setting the dimensions of the additional text to 0 % Drawback: To lilypond "sempre" has no extent, so it might put % other stuff there => collisions % Drawback: Also, there seems to be some spacing, so it's not exactly the % same alignment as without the additional text semppM = #(make-dynamic-script (markup #:line (#:with-dimensions '(0 . 0) '(0 . 0) #:right-align #:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 5: Dynamic with explicit shifting inside the scheme function semppG = #(make-dynamic-script (markup #:hspace 0 #:translate '(-18.85 . 0) #:line (#:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 6: Dynamic with explicit alignment. This has only effect % if one sets X-offset! % Drawback: One needs to set DynamicText.X-offset! % Drawback: Aligned at the right edge of the additional text, % not at the center of pp semppMII = #(make-dynamic-script (markup #:line (#:right-align #:normal-text #:italic "sempre" #:dynamic "pp"))) \new StaffGroup << \new Staff = "s" \with { instrumentName = \markup \column { Normal } } << \relative c'' { \key es \major c4\pp c\p c c | c\ff c c\pp c } >> \new Staff = "sMarkup" \with { instrumentName = \markup \column { Normal markup } } << \relative c'' { \key es \major c4-\semppMarkup c\p c c | c\ff c c-\semppMarkup c } >> \new Staff = "sK" \with { instrumentName = \markup \column { Explicit shifting } } << \relative c'' { \key es \major \once \override DynamicText.X-offset = #-9.2 c4\semppK c\p c c c4\ff c \once \override DynamicText.X-offset = #-9.2 c4\semppK c } >> \new Staff = "sT" \with { instrumentName = \markup \column { Right padding } } << \relative c'' { \key es \major c4\semppT c\p c c | c\ff c c\semppT c } >> \new Staff = "sM" \with { instrumentName = \markup \column { Set dimension "to zero" } } << \relative c'' { \key es \major c4\semppM c\p c c | c\ff c c\semppM c } >> \new Staff = "sG" \with { instrumentName = \markup \column { Shift inside dynamics} } << \relative c'' { \key es \major c4\semppG c\p c c | c\ff c c\semppG c } >> \new Staff = "sMII" \with { instrumentName = \markup \column { Alignment inside dynamics } } << \relative c'' { \key es \major % Setting to ##f (false) gives the same result \override DynamicText.X-offset = #0 c4\semppMII c\p c c | c\ff c c\semppMII c } >> >> \layout { \override Staff.InstrumentName.self-alignment-X = #LEFT }
フレット図の位置を変更する方法
衝突を避けたり、2 つの音符の間に配置したいなどの目的で、フレット図の位置を移動したい場合は、いくつかの方法があります:
1) padding または extra-offset の値を変更する (最初のスニペットに表示)。
2) 不可視のボイスを追加し、その音符にフレット図を付加する (2 つ目の例)。
フレット図をある拍の位置に (例では、小節内 3 拍目) 移動したい場合には、音符が拍に揃えられる 2 つ目の方法がより適しています。
harmonies = \chordmode { a8:13 % THE FOLLOWING IS THE COMMAND TO MOVE THE CHORD NAME \once \override ChordNames.ChordName.extra-offset = #'(10 . 0) b8:13 s2. % THIS LINE IS THE SECOND METHOD s4 s4 b4:13 } \score { << \new ChordNames \harmonies \new Staff {a8^\markup { \fret-diagram "6-x;5-0;4-2;3-0;2-0;1-2;" } % THE FOLLOWING IS THE COMMAND TO MOVE THE FRET DIAGRAM \once \override TextScript.extra-offset = #'(10 . 0) b4.~^\markup { \fret-diagram "6-x;5-2;4-4;3-2;2-2;1-4;" } b4. a8\break % HERE IS THE SECOND METHOD << { a8 b4.~ b4. a8} { s4 s4 s4^\markup { \fret-diagram "6-x;5-2;4-4;3-2;2-2;1-4;" } } >> } >> }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: フレット図の位置を変更する方法 ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 同じ小節線の上と下に 2 つのリハーサル記号を表示する (方法 2) > ] |
同じ小節線の上と下に 2 つのリハーサル記号を表示する (方法 1)
この方法は、’リハーサル記号’ を 2 つ、同じ位置に表示します。片方のリハーサル記号を譜の下に移動し、その上に空白を加えてもう片方のリハーサル記号が譜の上になるようにしています。
extra-offset や baseline-skip の値を調整することで、リハーサル記号と譜とのスペースを増減させることができます。
ほとんど全てのグリフや文字列をリハーサル記号にすることができるため、何らかのグリフや文字列を小節線の上や下に中央揃えするために用いることもできます。
スニペット 1 にあるように、適切な ’break-visibility’ を加えることで、2 つのリハーサル記号を行の終わりに表示することもできます。
注意: 方法 1 は方法 2 より複雑ではないですが、もう片方の記号に影響を与えずに片方の位置を微調整することはできません。また、extra-offset
を調整しても記号の本来のバウンディング ボックスは維持されるため、垂直方向のスペーシングに関しても問題があります。
\relative c'{ c d e f | \once \override Score.RehearsalMark.extra-offset = #'(0 . -8.5) \once \override Score.RehearsalMark.baseline-skip = #9 \mark \markup \center-column { \circle 1 \box A } g f e d | \once \override Score.RehearsalMark.extra-offset = #'(0 . -8.5) \once \override Score.RehearsalMark.baseline-skip = #9 \mark \markup \center-column { \flat { \bold \small \italic Fine. } } g f e d | \once \override Score.RehearsalMark.extra-offset = #'(0 . -8.5) \once \override Score.RehearsalMark.baseline-skip = #9 \override Score.RehearsalMark.break-visibility = #begin-of-line-invisible \mark \markup \center-column { \fermata \box z } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 同じ小節線の上と下に 2 つのリハーサル記号を表示する (方法 1) ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: カエスーラを挿入する > ] |
同じ小節線の上と下に 2 つのリハーサル記号を表示する (方法 2)
この方法は、’リハーサル記号’ を 2 つ、同じ位置に表示します。片方は譜の上、片方は譜の下に配置されています。そのために、2 つのボイスを作成し、リハーサル記号のエングラーバをそれぞれのボイスに追加しています (そうしなければ表示されません)。 そして、それぞれのボイス内でリハーサル記号の向きを UP と DOWN に設定しています。
この方法は (方法 1 と異なり) より複雑ですが、もう片方に影響を与えずに片方のリハーサル記号を調整することができるためより柔軟です。
\score { \relative c' << \new Staff { << \new Voice \with { \consists Mark_engraver \consists "Staff_collecting_engraver" } { c4 d e f \mark \markup { \box A } c4 d e f } \new Voice \with { \consists Mark_engraver \consists "Staff_collecting_engraver" \override RehearsalMark.direction = #DOWN } { s4 s s s \mark \markup { \circle 1 } s4 s s s } >> } >> \layout { \context { \Score \remove "Mark_engraver" \remove "Staff_collecting_engraver" } } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 同じ小節線の上と下に 2 つのリハーサル記号を表示する (方法 2) ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 音部記号の変更を大きく表示する > ] |
カエスーラを挿入する
カエスーラ記号は BreathingSign
オブジェクトの text
プロパティをオーバライドすることで作成することができます。曲がったカエスーラ記号も使用することができます。
\relative c'' { \override BreathingSign.text = \markup { \musicglyph "scripts.caesura.straight" } c8 e4. \breathe g8. e16 c4 \override BreathingSign.text = \markup { \musicglyph "scripts.caesura.curved" } g8 e'4. \breathe g8. e16 c4 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: カエスーラを挿入する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 矢印 > ] |
音部記号の変更を大きく表示する
音部記号が変更される際、その音部記号は行頭のものよりも小さく表示されます。これは full-size-change
で変更することができます。
\relative c' { \clef "treble" c1 \clef "bass" c1 \clef "treble" c1 \override Staff.Clef.full-size-change = ##t \clef "bass" c1 \clef "treble" c1 \revert Staff.Clef.full-size-change \clef "bass" c1 \clef "treble" c1 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 音部記号の変更を大きく表示する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: transparent プロパティを用いてオブジェクトを不可視にする > ] |
矢印
text-spanner, line-spanner (例えば Glissando) に対して矢印を用いることができます。
\relative c'' { \override TextSpanner.bound-padding = #1.0 \override TextSpanner.style = #'line \override TextSpanner.bound-details.right.arrow = ##t \override TextSpanner.bound-details.left.text = #"fof" \override TextSpanner.bound-details.right.text = #"gag" \override TextSpanner.bound-details.right.padding = #0.6 \override TextSpanner.bound-details.right.stencil-align-dir-y = #CENTER \override TextSpanner.bound-details.left.stencil-align-dir-y = #CENTER \override Glissando.bound-details.right.arrow = ##t \override Glissando.arrow-length = #0.5 \override Glissando.arrow-width = #0.25 a8\startTextSpan gis a4 b\glissando b, g'4 c\stopTextSpan c2 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 矢印 ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: グリッサンドを改行できるようにする > ] |
transparent プロパティを用いてオブジェクトを不可視にする
transparent
プロパティをセットすると、オブジェクトは“透明なインク”で描かれます: つまり、オブジェクトは表示されませんが、その他の性質は残ったままになるということです。オブジェクトはスペースを占有し、衝突が考慮され、スラー、タイ、連桁を付け加えることができます。
このスニペットは異なるボイスの音符をタイで繋ぐ方法を示しています。通常は、タイは同じボイスの音符にしか繋ぐことはできません。上のボイスにタイを付加し、そのボイスにある前の音符を透明にすることで、タイがボイスをまたがるように見えます。
\relative { \time 2/4 << { \once \hide Stem \once \override Stem.length = #8 b'8 ~ 8\noBeam \once \hide Stem \once \override Stem.length = #8 g8 ~ 8\noBeam } \\ { b8 g g e } >> }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: transparent プロパティを用いてオブジェクトを不可視にする ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 連桁の位置を手動でコントロールする > ] |
グリッサンドを改行できるようにする
after-line-breaking
と共に breakable
プロパティを #t
にすることで、グリッサンドの途中で改行することができます。
glissandoSkipOn = { \override NoteColumn.glissando-skip = ##t \hide NoteHead \override NoteHead.no-ledgers = ##t } \relative c'' { \override Glissando.breakable = ##t \override Glissando.after-line-breaking = ##t f1\glissando | \break a4 r2. | f1\glissando \once \glissandoSkipOn \break a2 a4 r4 | }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: グリッサンドを改行できるようにする ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: Mensurstriche レイアウト (譜の間に小節線を表示する) > ] |
連桁の位置を手動でコントロールする
連桁の位置は、Beam
Grob の positions
をオーバライドすることで手動でコントロールすることができます。
\relative c' { \time 2/4 % from upper staff-line (position 2) to center (position 0) \override Beam.positions = #'(2 . 0) c8 c % from center to one above center (position 1) \override Beam.positions = #'(0 . 1) c8 c }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 連桁の位置を手動でコントロールする ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: オッターヴァのスパナの傾きを変更する > ] |
Mensurstriche レイアウト (譜の間に小節線を表示する)
Mensurstriche (計量音楽風の) レイアウトでは、小節線を譜の中には表示せず、譜と譜の間に表示します。これは、ChoirStaff
の代わりに StaffGroup
を用いることで実現できます。譜の中にある小節線は \hide
で非表示にします。
global = { \hide Staff.BarLine s1 s % the final bar line is not interrupted \undo \hide Staff.BarLine \bar "|." } \new StaffGroup \relative c'' { << \new Staff { << \global { c1 c } >> } \new Staff { << \global { c c } >> } >> }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: Mensurstriche レイアウト (譜の間に小節線を表示する) ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 多声の音楽で付点付きの音符を移動する > ] |
オッターヴァのスパナの傾きを変更する
オッターヴァのスパナの傾きを変更することができます。
\relative c'' { \override Staff.OttavaBracket.stencil = #ly:line-spanner::print \override Staff.OttavaBracket.bound-details = #`((left . ((Y . 0) ; Change the integer here (attach-dir . ,LEFT) (padding . 0) (stencil-align-dir-y . ,CENTER))) (right . ((Y . 5) ; Change the integer here (padding . 0) (attach-dir . ,RIGHT) (text . ,(make-draw-dashed-line-markup (cons 0 -1.2)))))) \override Staff.OttavaBracket.left-bound-info = #ly:line-spanner::calc-left-bound-info-and-text \override Staff.OttavaBracket.right-bound-info = #ly:line-spanner::calc-right-bound-info \ottava #1 c1 c'''1 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: オッターヴァのスパナの傾きを変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: スラーの縦方向の位置を移動する > ] |
多声の音楽で付点付きの音符を移動する
上のボイスにある付点付きの音符が、下の音符との衝突を避けるために移動する場合、デフォルトでは右側に移動します。この挙動は、NoteCollision
の
prefer-dotted-right
プロパティをオーバライドすることで変更できます。
\new Staff \relative c' << { f2. f4 \override Staff.NoteCollision.prefer-dotted-right = ##f f2. f4 \override Staff.NoteCollision.prefer-dotted-right = ##t f2. f4 } \\ { e4 e e e e e e e e e e e } >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 多声の音楽で付点付きの音符を移動する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 譜をネストする > ] |
スラーの縦方向の位置を移動する
スラーの縦方向の位置は Slur
の positions
プロパティによって調整することができます。このプロパティは 2 つのパラメータを取り、1 つ目はスラーの左端、2 つ目はスラーの右端です。このパラメータの値は、スラーの正確な位置を決定するために用いられるわけではありません – LilyPond ではどのようなスラーが見た目として最善かを、このパラメータを基にして決定します。正の値はスラーを上方向に移動するため、符幹が下向きの音符に対して有効です。負の値はスラーを下方向に移動します。
\relative c' { \stemDown e4( a) \override Slur.positions = #'(1 . 1) e4( a) \override Slur.positions = #'(2 . 2) e4( a) \override Slur.positions = #'(3 . 3) e4( a) \override Slur.positions = #'(4 . 4) e4( a) \override Slur.positions = #'(5 . 5) e4( a) \override Slur.positions = #'(0 . 5) e4( a) \override Slur.positions = #'(5 . 0) e4( a) \stemUp \override Slur.positions = #'(-5 . -5) e4( a) \stemDown \revert Slur.positions e4( a) }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: スラーの縦方向の位置を移動する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 特定の種類のアーティキュレーションのみをオーバライドする > ] |
譜をネストする
systemStartDelimiterHierarchy
は、より複雑な譜のグループ化を行うために用いることができます。\set StaffGroup.systemStartDelimiterHierarchy
コマンドの引数として基となるのは、譜の数だけあるアルファベットのリストです。それぞれの譜の前に SystemStartDelimiter
を追加することで、グループ化の始まりを示します。その際、グループとなる譜の範囲を括弧で囲む必要があります。リスト中の要素は省略することができますが、最上位のグループは必ず全ての譜を含みます。SystemStartDelimiter
は SystemStartBar
,
SystemStartBracket
, SystemStartBrace
,
SystemStartSquare
のいずれかです。
\new StaffGroup \relative c'' << \override StaffGroup.SystemStartSquare.collapse-height = #4 \set StaffGroup.systemStartDelimiterHierarchy = #'(SystemStartSquare (SystemStartBrace (SystemStartBracket a (SystemStartSquare b) ) c ) d) \new Staff { c1 } \new Staff { c1 } \new Staff { c1 } \new Staff { c1 } \new Staff { c1 } >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 譜をネストする ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: パーセント繰り返しのカウンタの可視性 > ] |
特定の種類のアーティキュレーションのみをオーバライドする
ある特定のアーティキュレーションに対してのみ変更を施したい場合があります。このような場合では常に \tweak
が使用できますが、楽譜全体にわたって出現箇所に \tweak
を付加するのはうんざりするものです。次の例では、カスタム設定のリストによってアーティキュレーションを調整する方法を示しています。これは例えばスタイルシートに使用することができます。
2.16.2 以降では、この \customScripts
関数を \layout
ブロックに配置することができます。
% Code by David Nalesnik and Thomas Morley #(define (custom-script-tweaks ls) (lambda (grob) (let* ((type (ly:prob-property (ly:grob-property grob 'cause) 'articulation-type)) (tweaks (assoc-ref ls type))) (if tweaks (for-each (lambda (x) (ly:grob-set-property! grob (car x) (cdr x))) tweaks))))) customScripts = #(define-music-function (settings)(list?) #{ \override Script.before-line-breaking = #(custom-script-tweaks settings) #}) revertCustomScripts = { \revert Script.before-line-breaking } %%%%%%%%%%%%% % Example: %%%%%%%%%%%%% % Predefine a list of desired tweaks. #(define my-settings-1 '( ("staccato" . ((color . (1 0 0))(padding . 0.5))) ("accent" . ((font-size . 0)(color . (1 0 0)))) ("tenuto" . ((rotation . (45 0 0)) (padding . 2)(font-size . 10))) ("staccatissimo" . ((padding . 1) (color . (1 0 0)))) ("segno" . ((font-size . 0)(color . (1 0 0)))) )) #(define my-settings-2 '( ("staccato" . ((color . (0 1 0)))) ("accent" . ((font-size . 4)(color . (0 1 0))(padding . 1.5))) ("tenuto" . ((font-size . 10))) ("staccatissimo" . ((padding . 2) (color . (0 1 0)))) ("coda" . ((color . (0 1 0)) (padding . 1))) )) one = \relative c'' { f1-- \customScripts #my-settings-1 f-. f-! f-> f-- f-!\segno \revertCustomScripts f-> f-. } two = \relative c' { f1-- \customScripts #my-settings-2 f-. f-! f-> f---> f-! f-> f-.\coda } \new Staff << \new Voice { \voiceOne \one } \new Voice { \voiceTwo \two } >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 特定の種類のアーティキュレーションのみをオーバライドする ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: アルペジオの配置 > ] |
パーセント繰り返しのカウンタの可視性
パーセント繰り返しのカウンタは repeatCountVisibility
コンテキスト
プロパティをセットすることで一定間隔で表示することができます。
\relative c'' { \set countPercentRepeats = ##t \set repeatCountVisibility = #(every-nth-repeat-count-visible 5) \repeat percent 10 { c1 } \break \set repeatCountVisibility = #(every-nth-repeat-count-visible 2) \repeat percent 6 { c1 d1 } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: パーセント繰り返しのカウンタの可視性 ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 複数小節にまたがる休符の位置を変更する > ] |
アルペジオの配置
アルペジオの長さを変更したい場合、上端と下端の位置を独立に変更することができます。
\relative c' { <c e g b>1\arpeggio \once \override Arpeggio.positions = #'(-5 . 0) <c e g b>1\arpeggio \once \override Arpeggio.positions = #'(0 . 5) <c e g b>1\arpeggio \once \override Arpeggio.positions = #'(-5 . 5) <c e g b>1\arpeggio }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: アルペジオの配置 ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: テキスト マークアップをスラーの内側に配置する > ] |
複数小節にまたがる休符の位置を変更する
通常の休符と異なり、音符に付加することによって複数小節にまたがる休符の位置を変更するコマンドは用意されていません。しかし、多声の音楽では、奇数番号のボイスと偶数番号のボイスで休符の位置が分けられます。複数小節にまたがる休符の位置は以下のようにコントロールできます:
\relative c'' { % Multi-measure rests by default are set under the fourth line R1 % They can be moved using an override \override MultiMeasureRest.staff-position = #-2 R1 \override MultiMeasureRest.staff-position = #0 R1 \override MultiMeasureRest.staff-position = #2 R1 \override MultiMeasureRest.staff-position = #3 R1 \override MultiMeasureRest.staff-position = #6 R1 \revert MultiMeasureRest.staff-position \break % In two Voices, odd-numbered voices are under the top line << { R1 } \\ { a1 } >> % Even-numbered voices are under the bottom line << { a1 } \\ { R1 } >> % Multi-measure rests in both voices remain separate << { R1 } \\ { R1 } >> % Separating multi-measure rests in more than two voices % requires an override << { R1 } \\ { R1 } \\ \once \override MultiMeasureRest.staff-position = #0 { R1 } >> % Using compressed bars in multiple voices requires another override % in all voices to avoid multiple instances being printed \compressMMRests << \revert MultiMeasureRest.direction { R1*3 } \\ \revert MultiMeasureRest.direction { R1*3 } >> }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 複数小節にまたがる休符の位置を変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 小節番号を四角や丸の中に表示する > ] |
テキスト マークアップをスラーの内側に配置する
テキスト マークアップをスラーの内側に配置するには、outside-staff-priority
プロパティを #f
に設定する必要があります。
\relative c'' { \override TextScript.avoid-slur = #'inside \override TextScript.outside-staff-priority = ##f c2(^\markup { \halign #-10 \natural } d4.) c8 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: テキスト マークアップをスラーの内側に配置する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: メトロノーム記号やリハーサル記号を譜の下に表示する > ] |
小節番号を四角や丸の中に表示する
小節番号は四角や丸の中に表示することができます。
\relative c' { % Prevent bar numbers at the end of a line and permit them elsewhere \override Score.BarNumber.break-visibility = #end-of-line-invisible \set Score.barNumberVisibility = #(every-nth-bar-number-visible 4) % Increase the size of the bar number by 2 \override Score.BarNumber.font-size = #2 % Draw a box round the following bar number(s) \override Score.BarNumber.stencil = #(make-stencil-boxer 0.1 0.25 ly:text-interface::print) \repeat unfold 5 { c1 } % Draw a circle round the following bar number(s) \override Score.BarNumber.stencil = #(make-stencil-circler 0.1 0.25 ly:text-interface::print) \repeat unfold 4 { c1 } \bar "|." }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 小節番号を四角や丸の中に表示する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 音名を表示し、オクターブの表示を制御する > ] |
メトロノーム記号やリハーサル記号を譜の下に表示する
デフォルトでは、メトロノーム記号やリハーサル記号は譜の上に表示されます。これらを譜の下に表示するには、MetronomeMark
や RehearsalMark
の direction
プロパティを正しくセットします。
\layout { indent = 0 ragged-right = ##f } { % Metronome marks below the staff \override Score.MetronomeMark.direction = #DOWN \tempo 8. = 120 c''1 % Rehearsal marks below the staff \override Score.RehearsalMark.direction = #DOWN \mark \default c''1 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: メトロノーム記号やリハーサル記号を譜の下に表示する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: プロポーショナル ノーテーションで厳格モードを使用する > ] |
音名を表示し、オクターブの表示を制御する
音符の音名を表示するために、NoteNames
コンテキストを用いることができます。printOctaveNames
プロパティは音符のオクターブを表示するか否かを設定します。
scale = \relative c' { a4 b c d e4 f g a } \new Staff { << \scale \context NoteNames { \set printOctaveNames = ##f \scale } >> R1 << \scale \context NoteNames { \set printOctaveNames = ##t \scale } >> }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 音名を表示し、オクターブの表示を制御する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: ピアノ曲の先頭にあるブレースを削除する > ] |
プロポーショナル ノーテーションで厳格モードを使用する
strict-note-spacing
がセットされている場合、音符のスペーシングはシステム内にある小節線や音部記号に影響されません。これらは対応する音符の直前に配置されます。これらが衝突を引き起こす場合があります。
\relative c'' << \override Score.SpacingSpanner.strict-note-spacing = ##t \set Score.proportionalNotationDuration = #(ly:make-moment 1/16) \new Staff { c8[ c \clef alto c c \grace { d16 } c8 c] c4 c2 \grace { c16[ c16] } c2 } \new Staff { c2 \tuplet 3/2 { c8 \clef bass cis,, c } c4 c1 } >>
ピアノ曲の先頭にあるブレースを削除する
このスニペットは、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 } } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: ピアノ曲の先頭にあるブレースを削除する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 先頭の空行を削除する > ] |
StaffGroup, PianoStaff, GrandStaff の譜を繋ぐ小節線を削除する
デフォルトでは、StaffGroup, PianoStaff, GrandStaff 内の譜の小節線は繋がります。この挙動は譜ごとにオーバライドできます。
\relative c' { \new StaffGroup << \new Staff { e1 | e \once \override Staff.BarLine.allow-span-bar = ##f e1 | e | e } \new Staff { c1 | c | c \once \override Staff.BarLine.allow-span-bar = ##f c1 | c } \new Staff { a1 | a | a | a | a } >> }
先頭の空行を削除する
VerticalAxisGroup
の remove-first
プロパティをセットすることで、楽譜の先頭にある空の譜を削除することができます。これはグローバルの
\layout
ブロックでも行うことができますし、特定の譜を削除したい場合には譜の内部で使用することもできます。後者の場合には、プロパティ名の前にコンテキストを指定する必要があります
(Staff
は現在の譜にしか影響しません)。
2 つ目のグループの下側の譜は削除されていません。設定が記述されている譜にのみ適用されるからです。
\layout { \context { \Staff \RemoveEmptyStaves % To use the setting globally, uncomment the following line: % \override VerticalAxisGroup.remove-first = ##t } } \new StaffGroup << \new Staff \relative c' { e4 f g a \break c1 } \new Staff { % To use the setting globally, comment this line, % uncomment the line in the \layout block above \override Staff.VerticalAxisGroup.remove-first = ##t R1 \break R } >> \new StaffGroup << \new Staff \relative c' { e4 f g a \break c1 } \new Staff { R1 \break R } >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 先頭の空行を削除する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: リズム スラッシュ > ] |
休符のスタイル
休符には様々なスタイルが使用できます。
\new Staff \relative c { \omit Score.TimeSignature \cadenzaOn \override Staff.Rest.style = #'mensural r\maxima^\markup \typewriter { mensural } r\longa r\breve r1 r2 r4 r8 r16 s32 s64 s128 s128 \bar "" \break \override Staff.Rest.style = #'neomensural r\maxima^\markup \typewriter { neomensural } r\longa r\breve r1 r2 r4 r8 r16 s32 s64 s128 s128 \bar "" \break \override Staff.Rest.style = #'classical r\maxima^\markup \typewriter { classical } r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128 \bar "" \break \override Staff.Rest.style = #'z r\maxima^\markup \typewriter { z-style } r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128 \bar "" \break \override Staff.Rest.style = #'default r\maxima^\markup \typewriter { default } r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 休符のスタイル ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 調号の取り消し表示を新たな調号から離す > ] |
リズム スラッシュ
“シンプルな” リード シートでは、実際の音符を書かずに、代わりに“リズム パターン” とコード ネームのみを書き、曲の構造を示すことがあります。これは、曲の構造だけを作成あるいは転写する際や、リード シートをギタリストやジャズ
ミュージシャンに共有する際などに有用です。これを実現するために \repeat percent
を用いるのは不適切です。\repeat percent
では、最初の音符や休符として何かを指定しなければならないからです。次の例では 2 つの解決法を示しています。どちらも通常の休符をスラッシュとして表示するものです。(拍の長さを 4 分音符から変えたい場合は、定義中にある
r4
を適切に変更してください。)
% Macro to print single slash rs = { \once \override Rest.stencil = #ly:percent-repeat-item-interface::beat-slash \once \override Rest.thickness = #0.48 \once \override Rest.slope = #1.7 r4 } % Function to print a specified number of slashes comp = #(define-music-function (count) (integer?) #{ \override Rest.stencil = #ly:percent-repeat-item-interface::beat-slash \override Rest.thickness = #0.48 \override Rest.slope = #1.7 \repeat unfold $count { r4 } \revert Rest.stencil #} ) \score { \relative c' { c4 d e f | \rs \rs \rs \rs | \comp #4 | } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: リズム スラッシュ ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 小節線にぶつかるヘアピンの挙動を設定する > ] |
調号の取り消し表示を新たな調号から離す
デフォルトでは、調号が変更される際のナチュラルによる取り消し表示は、新たな調号のすぐ隣に配置されます。この挙動は、BreakAlignment
Grob の
break-align-orders
プロパティをオーバライドすることで変更できます。
break-align-orders
は長さ 3 のベクトルで、それぞれが改行可能なアイテムを要素とした quote リストを取ります。この例では
2 つ目のリストのみを変更しており、key-cancellation
を staff-bar
の前に移動しています。2 番目の要素はシステムの途中における配置に影響し、行頭あるいは行末には影響しません。
\new Staff { \override Score.BreakAlignment.break-align-orders = ##((left-edge ambitus breathing-sign clef staff-bar key-cancellation key-signature time-signature custos) (left-edge ambitus breathing-sign clef key-cancellation staff-bar key-signature time-signature custos) (left-edge ambitus breathing-sign clef key-cancellation key-signature staff-bar time-signature custos)) \key des \major c'1 \bar "||" \key bes \major c'1 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 調号の取り消し表示を新たな調号から離す ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: システム セパレータを設定する > ] |
小節線にぶつかるヘアピンの挙動を設定する
ヘアピンの終端となる音符が強拍にある場合、ヘアピンはその前にある小節線の直前が終端となります。この挙動は to-barline
プロパティをオーバライドすることで調整できます。
\relative c'' { e4\< e2. e1\! \override Hairpin.to-barline = ##f e4\< e2. e1\! }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 小節線にぶつかるヘアピンの挙動を設定する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 同じアーティキュレーションを音符や和音の上と下の両方に表示する > ] |
システム セパレータを設定する
システムとシステムの間にシステム セパレータを挿入することができます。任意のマークアップが使用できますが、デフォルト値は \slashSeparator
となっています。
\paper { system-separator-markup = \slashSeparator line-width = 120 } notes = \relative c' { c1 | c \break c1 | c \break c1 | c } \book { \score { \new GrandStaff << \new Staff \notes \new Staff \notes >> } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: システム セパレータを設定する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 弦番号の延長線 > ] |
同じアーティキュレーションを音符や和音の上と下の両方に表示する
デフォルトでは、LilyPond は同じアーティキュレーション
(例えばアクセント、フェルマータ、フラジョレットなど) を音符の上と下に表示することを認めていません。例えば、c4_\fermata^\fermata
では、フェルマータが音符の下のみに表示され、上に表示するよう指定したフェルマータは無視されます。しかし、和音表記を用いてその内部にアーティキュレーションを配置すると、(運指記号と同じように)
アーティキュレーションを好きなだけ表示することができます。このアプローチでは符幹を無視し、アーティキュレーションを符頭との相対位置で配置します。これはこのスニペットのフラジョレットに見られます。和音外に配置されるアーティキュレーションと同じ挙動を得るには、add-stem-support
が必要となります。そのため、解決策は音符を和音として表記し、<...>
の中にアーティキュレーションを追加することです。
向きは常に上向きですが、\tweak
によって変更することができます:
<c-\tweak direction #DOWN-\fermata^\fermata>
% The same as \flageolet, just a little smaller smallFlageolet = \tweak font-size #-2 \flageolet \relative c' { s4^"Wrong:" c4_\fermata^\fermata % The second fermata is ignored! <e d'>4^\smallFlageolet_\smallFlageolet s4^"Works if written inside a chord:" <e_\smallFlageolet d'^\smallFlageolet>4 <e_\flageolet d'^\flageolet>4 <e_\smallFlageolet^\smallFlageolet>4 <e_\fermata^\fermata>4 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 同じアーティキュレーションを音符や和音の上と下の両方に表示する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 音符の衝突に関する警告を抑制する > ] |
弦番号の延長線
弦番号の延長線を追加し、続く音符が全て同じ弦で演奏されることを示します。
stringNumberSpanner = #(define-music-function (StringNumber) (string?) #{ \override TextSpanner.style = #'solid \override TextSpanner.font-size = #-5 \override TextSpanner.bound-details.left.stencil-align-dir-y = #CENTER \override TextSpanner.bound-details.left.text = \markup { \circle \number $StringNumber } #}) \relative c { \clef "treble_8" \stringNumberSpanner "5" \textSpannerDown a8\startTextSpan b c d e f\stopTextSpan \stringNumberSpanner "4" g\startTextSpan a bes4 a g2\stopTextSpan }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 弦番号の延長線 ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 括弧に囲まれた拍子記号 - 方法 3 > ] |
音符の衝突に関する警告を抑制する
異なるボイスにあり、符幹が同じ向きの音符が同じ位置に配置されており、両方のボイスにシフトが指定されていないか同じシフトが指定されている場合、LilyPond ファイルのコンパイル時にエラー メッセージ ‘warning: ignoring too many clashing note columns’
が表示されます。このメッセージは、NoteColumn
オブジェクトの
ignore-collision
プロパティを #t
にすることで抑制できます。これは警告を抑制するだけでなく、LilyPond による衝突の回避を完全に無効にします。そのため、注意して使用しないと予期しない結果をもたらすことがあります。
ignore = \override NoteColumn.ignore-collision = ##t \relative c' { \new Staff << \new Voice { \ignore \stemDown f2 g } \new Voice { c2 \stemDown c, } >> }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 音符の衝突に関する警告を抑制する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 括弧に囲まれた拍子記号 > ] |
括弧に囲まれた拍子記号 - 方法 3
拍子記号を括弧で囲む他の方法です。
\relative c'' { \override Staff.TimeSignature.stencil = #(lambda (grob) (parenthesize-stencil (ly:time-signature::print grob) 0.1 0.4 0.4 0.1 )) \time 2/4 a4 b8 c }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 括弧に囲まれた拍子記号 - 方法 3 ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 拍子記号の (分数ではなく) 分子のみを数字で表示する > ] |
括弧に囲まれた拍子記号
拍子記号は括弧で囲むことができます。
\relative c'' { \override Staff.TimeSignature.stencil = #(lambda (grob) (bracketify-stencil (ly:time-signature::print grob) Y 0.1 0.2 0.1)) \time 2/4 a4 b8 c }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 括弧に囲まれた拍子記号 ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 連符のブラケットと譜の変更 > ] |
拍子記号の (分数ではなく) 分子のみを数字で表示する
拍子記号の分数全体を表示せず、分子のみ (今回は 7) を表示したい場合があります。これは \override Staff.TimeSignature.style = #'single-digit
を用いてスタイルを永続的に変更することで簡単に実現できます。\revert Staff.TimeSignature.style
を使用することで、この設定を元に戻すことが出来ます。1 つの拍子記号に対してのみ単一の数字で表示したい場合は、\override
の前に \once
を記述します。
\relative c'' { \time 3/4 c4 c c % Change the style permanently \override Staff.TimeSignature.style = #'single-digit \time 2/4 c4 c \time 3/4 c4 c c % Revert to default style: \revert Staff.TimeSignature.style \time 2/4 c4 c % single-digit style only for the next time signature \once \override Staff.TimeSignature.style = #'single-digit \time 5/4 c4 c c c c \time 2/4 c4 c }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 拍子記号の (分数ではなく) 分子のみを数字で表示する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 音部記号のプロパティを調整する > ] |
連符のブラケットと譜の変更
このスニペットは、下の譜で始まり上の譜で終わる連符を作成する方法を示しています。
aigues = \relative c' { \time 6/8 s4. \stemDown c16[ bes' e] \stemUp g c e \stemDown g8 } basses = \relative c { \time 3/4 \clef F \tweak positions #'(4.5 . 9.5) \tweak edge-height #'(1 . -1) \tuplet 7/6 { c16[ bes' e] \change Staff = md \stemUp g[ c e g] } s4.s8 } \new PianoStaff \with { \omit TimeSignature } << \new Staff = md \aigues \new Staff = mg \basses >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 連符のブラケットと譜の変更 ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 装飾音符のスタイルを調整する > ] |
音部記号のプロパティを調整する
音部記号のグリフ、位置、オクターブ記号を変更するだけでは、変更後の音符の位置は変更されません。調号を正しい位置に表示するためには、middleCClefPosition
も設定する必要があります。これは、“ミドル C” の位置を、中央の譜線を 0、上方向を正、下方向を負として設定します。
例えば、\clef "treble_8"
は、clefGlyph
, clefPosition
,
(音部記号自体の縦位置) middleCPosition
, clefTransposition
を設定するのと同等です。これらのプロパティの (middleCPosition
を除く)
どれかが変更された場合、新たに音部記号が表示されます。
次の例は、これらのプロパティを手動でセットする方法を示しています。最初の行では音部記号と音符の位置関係は通常通りですが、次の行ではそうではありません。
{ % The default treble clef \key f \major c'1 % The standard bass clef \set Staff.clefGlyph = #"clefs.F" \set Staff.clefPosition = #2 \set Staff.middleCPosition = #6 \set Staff.middleCClefPosition = #6 \key g \major c'1 % The baritone clef \set Staff.clefGlyph = #"clefs.C" \set Staff.clefPosition = #4 \set Staff.middleCPosition = #4 \set Staff.middleCClefPosition = #4 \key f \major c'1 % The standard choral tenor clef \set Staff.clefGlyph = #"clefs.G" \set Staff.clefPosition = #-2 \set Staff.clefTransposition = #-7 \set Staff.middleCPosition = #1 \set Staff.middleCClefPosition = #1 \key f \major c'1 % A non-standard clef \set Staff.clefPosition = #0 \set Staff.clefTransposition = #0 \set Staff.middleCPosition = #-4 \set Staff.middleCClefPosition = #-4 \key g \major c'1 \break % The following clef changes do not preserve % the normal relationship between notes, key signatures % and clefs: \set Staff.clefGlyph = #"clefs.F" \set Staff.clefPosition = #2 c'1 \set Staff.clefGlyph = #"clefs.G" c'1 \set Staff.clefGlyph = #"clefs.C" c'1 \set Staff.clefTransposition = #7 c'1 \set Staff.clefTransposition = #0 \set Staff.clefPosition = #0 c'1 % Return to the normal clef: \set Staff.middleCPosition = #0 c'1 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 音部記号のプロパティを調整する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 符尾のスタイルを変更する > ] |
装飾音符のスタイルを調整する
add-grace-property
, remove-grace-property
を用いて、装飾音符のスタイルを楽譜全体にわたって変更することができます。次の例は
常に上向きとなっている Stem
の向きの設定を無効にして、またデフォルトの符頭をクロスに変更しています。
\relative c'' { \new Staff { $(remove-grace-property 'Voice 'Stem 'direction) $(add-grace-property 'Voice 'NoteHead 'style 'cross) \new Voice { \acciaccatura { f16 } g4 \grace { d16 e } f4 \appoggiatura { f,32 g a } e2 } } }
符尾のスタイルを変更する
8 分音符やそれより短い音符の符尾は、Flag
の stencil
プロパティをオーバライドすることで変更できます。有効な値は
modern-straight-flag
, old-straight-flag
,
flat-flag
です。
testnotes = { \autoBeamOff c8 d16 c32 d64 \acciaccatura { c8 } d64 r4 } \score { \relative c' { \time 2/4 \testnotes \override Flag.stencil = #modern-straight-flag \testnotes \override Flag.stencil = #old-straight-flag \testnotes \override Flag.stencil = #flat-flag \testnotes \revert Flag.stencil \testnotes } \layout { indent = 0 \context { \Score \override NonMusicalPaperColumn.line-break-permission = ##f } } }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 符尾のスタイルを変更する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 特殊な符頭を作成するために PostScript を使用する > ] |
\tweak で Grob にアクセスするために ly:grob-object を用いる
いくつかの Grob は、他の Grob のコールバックからアクセスすることができます。これらは通常、grob-interface の
"Internal properties" セクションにある "layout objects" にリストアップされています。ly:grob-object
は、これらの Grob にアクセスするために使用します。
以下に示したのは、NoteHead コールバック内で Grob にアクセスするいくつかの方法ですが、このテクニックは NoteHead に限ったものではありません。しかし、NoteHead は \tweak
コマンドで暗黙的に指定されるために、このコールバックは特に重要です。
以下で定義された例の関数 ("display-grobs") はそこまで有用ではないかもしれませんが、Grob が実際にアクセスできることを示しています。
例のコンソール出力:
#Grob Accidental () #Grob Stem
#(define (notehead-get-accidental notehead) ;; notehead is grob (ly:grob-object notehead 'accidental-grob)) #(define (notehead-get-arpeggio notehead) ;; notehead is grob (let ((notecolumn (notehead-get-notecolumn notehead))) (ly:grob-object notecolumn 'arpeggio))) #(define (notehead-get-notecolumn notehead) ;; notehead is grob (ly:grob-parent notehead X)) #(define (notehead-get-stem notehead) ;; notehead is grob (let ((notecolumn (notehead-get-notecolumn notehead))) (ly:grob-object notecolumn 'stem))) #(define (display-grobs notehead) ;; notehead is grob (let ((accidental (notehead-get-accidental notehead)) (arpeggio (notehead-get-arpeggio notehead)) (stem (notehead-get-stem notehead))) (format (current-error-port) "~2&~a\n" (make-string 20 #\-)) (for-each (lambda (x) (format (current-error-port) "~a\n" x)) (list accidental arpeggio stem)))) \relative c' { %% display grobs for each note head: %\override NoteHead.before-line-breaking = #display-grobs <c %% or just for one: \tweak before-line-breaking #display-grobs es g>1\arpeggio }
特殊な符頭を作成するために PostScript を使用する
特殊な符頭をグラフィック マークアップで作成するのが困難な場合、PostScript コードを用いて形をつくることが出来ます。この例は、平行四辺形の符頭を作成する方法を示しています。
parallelogram = #(ly:make-stencil (list 'embedded-ps "gsave currentpoint translate newpath 0 0.25 moveto 1.3125 0.75 lineto 1.3125 -0.25 lineto 0 -0.75 lineto closepath fill grestore" ) (cons 0 1.3125) (cons -.75 .75)) myNoteHeads = \override NoteHead.stencil = \parallelogram normalNoteHeads = \revert NoteHead.stencil \relative c'' { \myNoteHeads g4 d' \normalNoteHeads <f, \tweak stencil \parallelogram b e>4 d }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 特殊な符頭を作成するために PostScript を使用する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 強弱記号やテキスト スクリプトを縦方向に揃える > ] |
個々の Grob を調整するために \tweak コマンドを使用する
\tweak
コマンドを用いて、全ての Grob を直接調整できます。以下は使用可能な \tweak
の例を示しています。
\relative c' { \time 2/4 \set fingeringOrientations = #'(right) < \tweak font-size #3 c \tweak color #red d-\tweak font-size #8 -4 \tweak style #'cross g \tweak duration-log #2 a >2 }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 個々の Grob を調整するために \tweak コマンドを使用する ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: オッシアと歌詞の縦方向の揃え位置 > ] |
強弱記号やテキスト スクリプトを縦方向に揃える
全ての DynamicLineSpanner
オブジェクト (ヘアピンや強弱記号テキスト)
は、他のアイテムが邪魔しない限り、譜から少なくとも staff-padding
だけ離れた基準線に配置されます。staff-padding
を十分に大きくすると、強弱記号を揃えることができます。
また、\textLengthOn
を用いて、テキスト スクリプトをベースラインに揃えることができます。
music = \relative c' { a'2\p b\f e4\p f\f\> g, b\p c2^\markup { \huge gorgeous } c^\markup { \huge fantastic } } { \music \break \override DynamicLineSpanner.staff-padding = #3 \textLengthOn \override TextScript.staff-padding = #1 \music }
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: 強弱記号やテキスト スクリプトを縦方向に揃える ] | [ 上へ : Tweaks and overrides ] | [ Tweaks and overrides: 共通な通奏低音の延長線を縦方向に中央揃えする > ] |
オッシアと歌詞の縦方向の揃え位置
このスニペットは、歌詞とオッシアの位置を調整するために
alignBelowContext
と alignAboveContext
コンテキスト
プロパティを使用する方法を示しています。
\paper { ragged-right = ##t } \relative c' << \new Staff = "1" { c4 c s2 } \new Staff = "2" { c4 c s2 } \new Staff = "3" { c4 c s2 } { \skip 2 << \lyrics { \set alignBelowContext = #"1" lyrics4 below } \new Staff \with { alignAboveContext = #"3" fontSize = #-2 \override StaffSymbol.staff-space = #(magstep -2) \remove "Time_signature_engraver" } { \tuplet 6/4 { \override TextScript.padding = #3 c8[^"ossia above" d e d e f] } } >> } >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: オッシアと歌詞の縦方向の揃え位置 ] | [ 上へ : Tweaks and overrides ] | [ Paper and layout > ] |
共通な通奏低音の延長線を縦方向に中央揃えする
通奏低音の延長線は useBassFigureExtenders
が #t
にセットされている場合に使用されます。figuredBassCenterContinuations
が
#t
にセットされている場合、同一な延長線がまとめられ、縦方向に中央揃えされます。
<< \relative c' { c8 c b b a a c16 c b b c8 c b b a a c16 c b b c8 c b b a a c c b b } \figures { \set useBassFigureExtenders = ##t <6+ 4 3>4 <6 4 3>8 r <6+ 4 3>4 <6 4 3>8 <4 3+>16 r \set figuredBassCenterContinuations = ##t <6+ 4 3>4 <6 4 3>8 r <6+ 4 3>4 <6 4 3>8 <4 3+>16 r \set figuredBassCenterContinuations = ##f <6+ 4 3>4 <6 4 3>8 r <6+ 4 3>4 <6 4 3>8 <4 3+>8 } >>
[ << Tweaks and overrides ] | [トップ][目次] | [ Paper and layout >> ] |
[ < Tweaks and overrides: オッシアと歌詞の縦方向の揃え位置 ] | [ 上へ : Tweaks and overrides ] | [ Paper and layout > ] |