[トップ][目次] |
LilyPond — Snippets
This document shows a selected set of LilyPond snippets from the LilyPond Snippet Repository (LSR). It is in the public domain. We would like to address many thanks to Sebastiano Vigna for maintaining LSR web site and database, and the University of Milano for hosting LSR. Please note that this document is not an exact subset of LSR: some
snippets come from ‘input/new’ LilyPond sources directory, and
snippets from LSR are converted through Snippets are grouped by tags; tags listed in the table of contents match a section of LilyPond notation manual. Snippets may have several tags, and not all LSR tags may appear in this document. In the HTML version of this document, you can click on the file name or figure for each example to see the corresponding input file. |
Musical notation | ||
---|---|---|
Pitches | ||
Rhythms | ||
Expressive marks | ||
Repeats | ||
Simultaneous notes | ||
Staff notation | ||
Editorial annotations | ||
Text | ||
Specialist notation | ||
Vocal music | ||
Chords | ||
Keyboards | ||
Percussion | ||
Fretted strings | ||
Unfretted strings | ||
Winds | ||
Ancient notation | ||
World music | ||
Other collections | ||
Contexts and engravers | ||
Tweaks and overrides | ||
Paper and layout | ||
Titles | ||
Spacing | ||
MIDI | ||
Templates |
このマニュアルと他のドキュメントの関係について、あるいは、このマニュアルを他の形式で読む方法についての情報は、 マニュアル を参照してください。 マニュアルのいずれかを見失ってしまった場合、https://lilypond.org/ にマニュアルがすべて揃っています。 |
[ << Top ] | [トップ][目次] | [ Rhythms >> ] |
[ < Top ] | [ 上へ : Top ] | [ Pitches: 音域をボイスごとに追加する > ] |
Pitches
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches ] | [ 上へ : Pitches ] | [ Pitches: オッターバを単一のボイスに対して適用する > ] |
音域をボイスごとに追加する
音域をボイスごとに追加することができます。この場合、衝突を避けるために
Ambitus
を手動で移動する必要があります。
\new Staff << \new Voice \with { \consists "Ambitus_engraver" } \relative c'' { \override Ambitus.X-offset = #2.0 \voiceOne c4 a d e f1 } \new Voice \with { \consists "Ambitus_engraver" } \relative c' { \voiceTwo es4 f g as b1 } >>
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 音域をボイスごとに追加する ] | [ 上へ : Pitches ] | [ Pitches: Aiken head thin variant noteheads > ] |
オッターバを単一のボイスに対して適用する
譜に 2 つ以上のボイスがある場合、オッターバを設定すると、囲みの中にある全てのボイスの音符が移動してしまいます。オッターバを単一のボイスに対して適用したい場合には、middleCPosition とオッターバ囲みを明示的にセットする必要があります。ヘ音記号の middleCPosition は本来 6 にセットされており、これは譜の中央の線から 6 つ上であることを示しています。このスニペットでは、オッターバ部分の middleCPosition を 7 加算して、1 オクターブ移動しています。
\layout { \context { \Staff \remove Ottava_spanner_engraver } \context { \Voice \consists Ottava_spanner_engraver } } { \clef bass << { <g d'>1~ q2 <c' e'> } \\ { r2. \ottava -1 <b,,, b,,>4 ~ | q2 \ottava 0 <c e>2 } >> }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: オッターバを単一のボイスに対して適用する ] | [ 上へ : Pitches ] | [ Pitches: 連桁で繋がれた音符の符幹の長さを変更する > ] |
Aiken head thin variant noteheads
Aiken head white notes get harder to read at smaller staff sizes, especially with ledger lines. Losing interior white space makes them appear as quarter notes.
\score { { \aikenHeads c''2 a' c' a % Switch to thin-variant noteheads \set shapeNoteStyles = ##(doThin reThin miThin faThin sol laThin tiThin) c'' a' c' a } }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: Aiken head thin variant noteheads ] | [ 上へ : Pitches ] | [ Pitches: 音域 > ] |
連桁で繋がれた音符の符幹の長さを変更する
連桁で繋がれた音符の符幹の長さは、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.beamed-lengths a8[ a] a16[ a] a32[ a] r16 }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 連桁で繋がれた音符の符幹の長さを変更する ] | [ 上へ : Pitches ] | [ Pitches: Ambitus after key signature > ] |
音域
音域を表示します。
最高音や最低音が調号に含まれない場合には臨時記号が表示されます。Grob AmbitusNoteHead
には加線を含みます。
\layout { \context { \Voice \consists "Ambitus_engraver" } } << \new Staff { \relative c' { \time 2/4 c4 f' } } \new Staff { \relative c' { \time 2/4 \key d \major cis4 as' } } >>
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 音域 ] | [ 上へ : Pitches ] | [ Pitches: 複数のボイスを持つ譜での音域 > ] |
Ambitus after key signature
By default, ambitus are positioned at the left of the clef. The
\ambitusAfter
function allows for changing this
placement. Syntax is \ambitusAfter grob-interface
(see
Graphical Object Interfaces for a list of possible values for
grob-interface
.)
A common use case is printing the ambitus between key signature and time signature.
\new Staff \with { \consists Ambitus_engraver } \relative { \ambitusAfter key-signature \key d \major es'8 g bes cis d2 }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: Ambitus after key signature ] | [ 上へ : Pitches ] | [ Pitches: 音階に応じて異なる符頭のスタイルを適用する > ] |
複数のボイスを持つ譜での音域
Staff
コンテキストに Ambitus_engraver
を追加すると、譜にボイスが複数ある場合でも、譜ごとに音域を表示します。
\new Staff \with { \consists "Ambitus_engraver" } << \new Voice \relative c'' { \voiceOne c4 a d e f1 } \new Voice \relative c' { \voiceTwo es4 f g as b1 } >>
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 複数のボイスを持つ譜での音域 ] | [ 上へ : Pitches ] | [ Pitches: メロディに合わせて譜の中央にある音符の符幹の向きを自動で変更する > ] |
音階に応じて異なる符頭のスタイルを適用する
shapeNoteStyles
プロパティは、音階
(調号と、tonic
プロパティによる) に応じて符頭の形を変化させるために用いることができます。このプロパティは形のセットを与える必要がありますが、(triangle
, cross
, xcircle
などの図形表現を用いて) 自由に定義できるほか、階名を使用して、アメリカの古い伝統の形を基に定義することができます (いくつかのラテン語の階名も使用することができます)。
古いアメリカの歌集を模倣するには、\aikenHeads
や
\sacredHarpHeads
といった定義済みのコマンドを符頭のスタイルとして用いることができます。
この例では、シェイプ ノートの符頭を得るいくつかの方法を示しています。また、和声機能と符頭の対応を維持しながらメロディを移調する機能も示しています。
fragment = { \key c \major c2 d e2 f g2 a b2 c } \new Staff { \transpose c d \relative c' { \set shapeNoteStyles = ##(do re mi fa #f la ti) \fragment } \break \relative c' { \set shapeNoteStyles = ##(cross triangle fa #f mensural xcircle diamond) \fragment } }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 音階に応じて異なる符頭のスタイルを適用する ] | [ 上へ : Pitches ] | [ Pitches: オッターバ囲みのテキストを変更する > ] |
メロディに合わせて譜の中央にある音符の符幹の向きを自動で変更する
LilyPond では、Voice
コンテキストに Melody_engraver
を追加し、Stem
の neutral-direction
をオーバライドすることで、譜の中央にある音符の符幹の向きを、メロディに合わせて変更することができます。
\relative c'' { \time 3/4 a8 b g f b g | \set suspendMelodyDecisions = ##t a b g f b g | \unset suspendMelodyDecisions c b d c b c | } \layout { \context { \Voice \consists "Melody_engraver" \autoBeamOff } }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: メロディに合わせて譜の中央にある音符の符幹の向きを自動で変更する ] | [ 上へ : Pitches ] | [ Pitches: 音域の隙間を変更する > ] |
オッターバ囲みのテキストを変更する
内部的には、\ottava
は ottavation
プロパティを
(例えば、8va
や 8vb
に) セットし、middleCPosition
プロパティを変更します。オッターバ囲みのテキストを変更するには、\ottava
の後に
ottavation
をセットするようにしてください。
オッターバ囲みが短い場合には、テキストを短くすると良いでしょう。
{ c'2 \ottava #1 \set Staff.ottavation = #"8" c''2 \ottava #0 c'1 \ottava #1 \set Staff.ottavation = #"Text" c''1 }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: オッターバ囲みのテキストを変更する ] | [ 上へ : Pitches ] | [ Pitches: 譜線の音程を変更する > ] |
音域の隙間を変更する
音域表示において、デフォルトの符頭と線との隙間を変更することができます。
\layout { \context { \Voice \consists "Ambitus_engraver" } } \new Staff { \time 2/4 % Default setting c'4 g'' } \new Staff { \time 2/4 \override AmbitusLine.gap = #0 c'4 g'' } \new Staff { \time 2/4 \override AmbitusLine.gap = #1 c'4 g'' } \new Staff { \time 2/4 \override AmbitusLine.gap = #1.5 c'4 g'' }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 音域の隙間を変更する ] | [ 上へ : Pitches ] | [ Pitches: 音部記号を移動する > ] |
譜線の音程を変更する
音符の位置を変更するためには、staffLineLayoutFunction
を使用します。このスニペットは、これを ly:pitch-semitones
にセットし、半音が間隔 1 つ分になるクロマティック スケールを作り出しています。
scale = \relative c' { a4 ais b c cis4 d dis e f4 fis g gis a1 } \new Staff \with { \remove "Accidental_engraver" staffLineLayoutFunction = #ly:pitch-semitones } { << \scale \context NoteNames { \set printOctaveNames = ##f \scale } >> }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 譜線の音程を変更する ] | [ 上へ : Pitches ] | [ Pitches: ピッチに応じて符頭の色を変更する > ] |
音部記号を移動する
音部記号をオクターブだけでなく、任意の位置に移動することができます。
\relative c' { \clef treble c4 c c c \clef "treble_8" c4 c c c \clef "treble_5" c4 c c c \clef "treble^3" c4 c c c }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 音部記号を移動する ] | [ 上へ : Pitches ] | [ Pitches: 異なるピッチの音符列を作成する > ] |
ピッチに応じて符頭の色を変更する
符頭の色を、ピッチや名前に応じて変更することができます: この例で使われている関数では、異名同音を区別しています。
%Association list of pitches to colors. #(define color-mapping (list (cons (ly:make-pitch 0 0 NATURAL) (x11-color 'red)) (cons (ly:make-pitch 0 0 SHARP) (x11-color 'green)) (cons (ly:make-pitch 0 1 FLAT) (x11-color 'green)) (cons (ly:make-pitch 0 2 NATURAL) (x11-color 'red)) (cons (ly:make-pitch 0 2 SHARP) (x11-color 'green)) (cons (ly:make-pitch 0 3 FLAT) (x11-color 'red)) (cons (ly:make-pitch 0 3 NATURAL) (x11-color 'green)) (cons (ly:make-pitch 0 4 SHARP) (x11-color 'red)) (cons (ly:make-pitch 0 5 NATURAL) (x11-color 'green)) (cons (ly:make-pitch 0 5 FLAT) (x11-color 'red)) (cons (ly:make-pitch 0 6 SHARP) (x11-color 'red)) (cons (ly:make-pitch 0 1 NATURAL) (x11-color 'blue)) (cons (ly:make-pitch 0 3 SHARP) (x11-color 'blue)) (cons (ly:make-pitch 0 4 FLAT) (x11-color 'blue)) (cons (ly:make-pitch 0 5 SHARP) (x11-color 'blue)) (cons (ly:make-pitch 0 6 FLAT) (x11-color 'blue)))) %Compare pitch and alteration (not octave). #(define (pitch-equals? p1 p2) (and (= (ly:pitch-alteration p1) (ly:pitch-alteration p2)) (= (ly:pitch-notename p1) (ly:pitch-notename p2)))) #(define (pitch-to-color pitch) (let ((color (assoc pitch color-mapping pitch-equals?))) (if color (cdr color)))) #(define (color-notehead grob) (pitch-to-color (ly:event-property (event-cause grob) 'pitch))) \score { \new Staff \relative c' { \override NoteHead.color = #color-notehead c8 b d dis ees f g aes } }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: ピッチに応じて符頭の色を変更する ] | [ 上へ : Pitches ] | [ Pitches: カスタマイズされた調号を作成する > ] |
異なるピッチの音符列を作成する
同じ音符列が異なる音高で複数出現する音楽では、次の音楽関数が便利です。これは音符を引数として取り、その音高のみが使用されます。この例では Holst の The Planets の一曲、Mars に使用されるリズムを作り出しています。
rhythm = #(define-music-function (p) (ly:pitch?) "Make the rhythm in Mars (the Planets) at the given pitch" #{ \tuplet 3/2 { $p 8 8 8 } 4 4 8 8 4 #}) \new Staff { \time 5/4 \rhythm c' \rhythm c'' \rhythm g }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 異なるピッチの音符列を作成する ] | [ 上へ : Pitches ] | [ Pitches: Direction of merged 'fa' shape note heads > ] |
カスタマイズされた調号を作成する
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, }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: カスタマイズされた調号を作成する ] | [ 上へ : Pitches ] | [ Pitches: Force a cancellation natural before accidentals > ] |
Direction of merged ’fa’ shape note heads
Using property NoteCollision.fa-merge-direction
, the
direction of ‘fa’ shape note heads (‘fa’, ‘faThin’, etc.)
can be controlled independently of the stem direction if two
voices with the same pitch and different stem directions are
merged. If this property is not set, the ‘down’ glyph variant
is used.
{ \clef bass << { \aikenHeads f2 \override Staff.NoteCollision.fa-merge-direction = #UP f2 } \\ { \aikenHeads f2 f2 } >> }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: Direction of merged 'fa' shape note heads ] | [ 上へ : Pitches ] | [ Pitches: 音部記号を強制的に表示する > ] |
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 }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: Force a cancellation natural before accidentals ] | [ 上へ : Pitches ] | [ Pitches: ランダムな音符を生成する > ] |
音部記号を強制的に表示する
音部記号がその前に表示されており、別の音部記号に変化していない場合、\clef
コマンドで音部記号を指定しても何も表示されません。\set Staff.forceClef = ##t
を指定することで、音部記号を強制的に再表示させることができます。
\relative c' { \clef treble c1 \clef treble c1 \set Staff.forceClef = ##t c1 \clef treble c1 }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 音部記号を強制的に表示する ] | [ 上へ : Pitches ] | [ Pitches: タイで繋がれた音符が改行した際の臨時記号を隠す > ] |
ランダムな音符を生成する
この Scheme ベースのスニペットは、24 の (あるいは必要な分の) ランダムな音符を、現在の時間から (あるいは毎回同じ結果を得るために指定した数から) 生成します。別の音符列を生成したい場合は、数字を変更します。
\score { { $(let ((random-state (seed->random-state (current-time)))) (make-sequential-music (map (lambda (x) (let ((idx (random 12 random-state))) (make-event-chord (list (make-music 'NoteEvent 'duration (ly:make-duration 2 0 1/1) 'pitch (ly:make-pitch (quotient idx 7) (remainder idx 7) 0)))))) (make-list 24)))) } }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: ランダムな音符を生成する ] | [ 上へ : Pitches ] | [ Pitches: 音部記号の変更を大きく表示する > ] |
タイで繋がれた音符が改行した際の臨時記号を隠す
タイで繋がれた音符が改行した際の臨時記号を隠す方法を示しています。
\relative c'' { \override Accidental.hide-tied-accidental-after-break = ##t cis1~ cis~ \break cis }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: タイで繋がれた音符が改行した際の臨時記号を隠す ] | [ 上へ : Pitches ] | [ Pitches: マカームの例 > ] |
音部記号の変更を大きく表示する
音部記号が変更される際、その音部記号は行頭のものよりも小さく表示されます。これは 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 }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 音部記号の変更を大きく表示する ] | [ 上へ : Pitches ] | [ Pitches: オッターヴァのスパナの傾きを変更する > ] |
マカームの例
マカームはトルコ発祥の旋法で、1/9 音の微分音を使用します。ピッチの名前や調号についての詳細は、初期化ファイル ‘ly/makam.ly’ を参照してください。
% Initialize makam settings \include "makam.ly" \relative c' { \set Staff.keyAlterations = #`((6 . ,(- KOMA)) (3 . ,BAKIYE)) c4 cc db fk gbm4 gfc gfb efk fk4 db cc c }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: マカームの例 ] | [ 上へ : Pitches ] | [ Pitches: 非伝統的な調号 > ] |
オッターヴァのスパナの傾きを変更する
オッターヴァのスパナの傾きを変更することができます。
\relative c'' { \override Staff.OttavaBracket.stencil = #ly:line-spanner::print \override Staff.OttavaBracket.bound-details = #`((left . ((Y . 0) (attach-dir . ,LEFT) (padding . 0) (stencil-align-dir-y . ,CENTER))) (right . ((Y . 5.0) ; Change the number here (padding . 0) (attach-dir . ,RIGHT) (text . ,(make-draw-dashed-line-markup (cons 0 -1.2)))))) \override Staff.OttavaBracket.left-bound-info = #ly:horizontal-line-spanner::calc-left-bound-info-and-text \override Staff.OttavaBracket.right-bound-info = #ly:horizontal-line-spanner::calc-right-bound-info \ottava #1 c1 c'''1 }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: オッターヴァのスパナの傾きを変更する ] | [ 上へ : Pitches ] | [ Pitches: 演奏を容易にする記譜法で数字を使用する > ] |
非伝統的な調号
広く使われている \key
コマンドは、Staff
コンテキストの
keyAlterations
をセットしています。非標準な調号を作成するには、このプロパティを直接セットします。
コマンドの形式は以下のようなリストです:
\set Staff.keyAlterations = #`(((octave . step) . alter) ((octave
. step) . alter) ...)
が構文です。リストの各要素について、octave
がオクターブを指定し
(0 がミドル C からその上の B まで)、step
はオクターブ内の音階 (0 が C, 6 が B)、alter
が ,SHARP ,FLAT ,DOUBLE-SHARP
などです。
または、各要素についてより簡潔な形式があり、(step . alter)
は全てのオクターブに対して変化記号が適用されます。“シャープ” が 100 セントではない微分音のスケールでは、alter
を 200 セントの全音を 1 とした数値で指定できます。
\include "arabic.ly" \relative do' { \set Staff.keyAlterations = #`((0 . ,SEMI-FLAT) (1 . ,SEMI-FLAT) (2 . ,FLAT) (5 . ,FLAT) (6 . ,SEMI-FLAT)) %\set Staff.extraNatural = ##f re reb \dwn reb resd dod dob dosd \dwn dob | dobsb dodsd do do | }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 非伝統的な調号 ] | [ 上へ : Pitches ] | [ Pitches: オーケストラ、コーラス、ピアノのテンプレート > ] |
演奏を容易にする記譜法で数字を使用する
演奏を容易にする記譜法では、NoteHead
オブジェクトの note-names
プロパティを使用し、符頭の内側に表示される文字を決定しています。このプロパティをオーバライドすることで、スケールの度数を表す数字を符頭に表示することができます。
全ての符頭オブジェクトに対してこれを適用するために、簡単なエングラーバを作成することができます。
#(define Ez_numbers_engraver (make-engraver (acknowledgers ((note-head-interface engraver grob source-engraver) (let* ((context (ly:translator-context engraver)) (tonic-pitch (ly:context-property context 'tonic)) (tonic-name (ly:pitch-notename tonic-pitch)) (grob-pitch (ly:event-property (event-cause grob) 'pitch)) (grob-name (ly:pitch-notename grob-pitch)) (delta (modulo (- grob-name tonic-name) 7)) (note-names (make-vector 7 (number->string (1+ delta))))) (ly:grob-set-property! grob 'note-names note-names)))))) #(set-global-staff-size 26) \layout { ragged-right = ##t \context { \Voice \consists \Ez_numbers_engraver } } \relative c' { \easyHeadsOn c4 d e f g4 a b c \break \key a \major a,4 b cis d e4 fis gis a \break \key d \dorian d,4 e f g a4 b c d }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 演奏を容易にする記譜法で数字を使用する ] | [ 上へ : Pitches ] | [ Pitches: 追加のナチュラル記号が自動で追加されないようにする > ] |
オーケストラ、コーラス、ピアノのテンプレート
このテンプレートは StaffGroup
と GrandStaff
コンテキストをネストさせて用いることで、楽器のサブ グループを表示しています。また、\transpose
を使用して、移調楽器の音符をコンサート ピッチの状態で変数に格納しています。
#(set-global-staff-size 17) \paper { indent = 3.0\cm % add space for instrumentName short-indent = 1.5\cm % add less space for shortInstrumentName } fluteMusic = \relative c' { \key g \major g'1 b } % Pitches as written on a manuscript for Clarinet in A % are transposed to concert pitch. clarinetMusic = \transpose c' a \relative c'' { \key bes \major bes1 d } trumpetMusic = \relative c { \key g \major g''1 b } % Key signature is often omitted for horns hornMusic = \transpose c' f \relative c { d'1 fis } percussionMusic = \relative c { \key g \major g1 b } sopranoMusic = \relative c'' { \key g \major g'1 b } sopranoLyrics = \lyricmode { Lyr -- ics } altoIMusic = \relative c' { \key g \major g'1 b } altoIIMusic = \relative c' { \key g \major g'1 b } altoILyrics = \sopranoLyrics altoIILyrics = \lyricmode { Ah -- ah } tenorMusic = \relative c' { \clef "treble_8" \key g \major g1 b } tenorLyrics = \sopranoLyrics pianoRHMusic = \relative c { \key g \major g''1 b } pianoLHMusic = \relative c { \clef bass \key g \major g1 b } violinIMusic = \relative c' { \key g \major g'1 b } violinIIMusic = \relative c' { \key g \major g'1 b } violaMusic = \relative c { \clef alto \key g \major g'1 b } celloMusic = \relative c { \clef bass \key g \major g1 b } bassMusic = \relative c { \clef "bass_8" \key g \major g,1 b } \score { << \new StaffGroup = "StaffGroup_woodwinds" << \new Staff = "Staff_flute" \with { instrumentName = "Flute" } \fluteMusic \new Staff = "Staff_clarinet" \with { instrumentName = \markup { \concat { "Clarinet in B" \flat } } } % Declare that written Middle C in the music % to follow sounds a concert B flat, for % output using sounded pitches such as MIDI. %\transposition bes % Print music for a B-flat clarinet \transpose bes c' \clarinetMusic >> \new StaffGroup = "StaffGroup_brass" << \new Staff = "Staff_hornI" \with { instrumentName = "Horn in F" } % \transposition f \transpose f c' \hornMusic \new Staff = "Staff_trumpet" \with { instrumentName = "Trumpet in C" } \trumpetMusic >> \new RhythmicStaff = "RhythmicStaff_percussion" \with { instrumentName = "Percussion" } << \percussionMusic >> \new PianoStaff \with { instrumentName = "Piano" } << \new Staff { \pianoRHMusic } \new Staff { \pianoLHMusic } >> \new ChoirStaff = "ChoirStaff_choir" << \new Staff = "Staff_soprano" \with { instrumentName = "Soprano" } \new Voice = "soprano" \sopranoMusic \new Lyrics \lyricsto "soprano" { \sopranoLyrics } \new GrandStaff = "GrandStaff_altos" \with { \accepts Lyrics } << \new Staff = "Staff_altoI" \with { instrumentName = "Alto I" } \new Voice = "altoI" \altoIMusic \new Lyrics \lyricsto "altoI" { \altoILyrics } \new Staff = "Staff_altoII" \with { instrumentName = "Alto II" } \new Voice = "altoII" \altoIIMusic \new Lyrics \lyricsto "altoII" { \altoIILyrics } >> \new Staff = "Staff_tenor" \with { instrumentName = "Tenor" } \new Voice = "tenor" \tenorMusic \new Lyrics \lyricsto "tenor" { \tenorLyrics } >> \new StaffGroup = "StaffGroup_strings" << \new GrandStaff = "GrandStaff_violins" << \new Staff = "Staff_violinI" \with { instrumentName = "Violin I" } \violinIMusic \new Staff = "Staff_violinII" \with { instrumentName = "Violin II" } \violinIIMusic >> \new Staff = "Staff_viola" \with { instrumentName = "Viola" } \violaMusic \new Staff = "Staff_cello" \with { instrumentName = "Cello" } \celloMusic \new Staff = "Staff_bass" \with { instrumentName = "Double Bass" } \bassMusic >> >> \layout { } }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: オーケストラ、コーラス、ピアノのテンプレート ] | [ 上へ : Pitches ] | [ Pitches: 調号が変化する際にナチュラル記号が表示されないようにする > ] |
追加のナチュラル記号が自動で追加されないようにする
伝統的な譜刻のスタイルに合わせて、前に出現したダブルシャープやダブルフラットがシャープやフラットでキャンセルされた場合には、ナチュラル記号が表示されます。これを現代の慣習に合わせて変更するには、Staff
コンテキストの
extraNatural
プロパティを f
に設定します。
\relative c'' { aeses4 aes ais a \set Staff.extraNatural = ##f aeses4 aes ais a }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 追加のナチュラル記号が自動で追加されないようにする ] | [ 上へ : Pitches ] | [ Pitches: 移調を含む他のボイスの引用 > ] |
調号が変化する際にナチュラル記号が表示されないようにする
調号が変化する際、前の調号を打ち消すナチュラル記号が自動的に表示されます。これは Staff
コンテキストの printKeyCancellation
プロパティを
f
にセットすることで防止することができます。
\relative c' { \key d \major a4 b cis d \key g \minor a4 bes c d \set Staff.printKeyCancellation = ##f \key d \major a4 b cis d \key g \minor a4 bes c d }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 調号が変化する際にナチュラル記号が表示されないようにする ] | [ 上へ : Pitches ] | [ Pitches: 調号の取り消し表示を新たな調号から離す > ] |
移調を含む他のボイスの引用
音楽の引用では、ソースとターゲットの両方で移調が考慮されます。この例では、全ての楽器が絶対ピッチとしてミドル C を演奏します。ターゲットは
F 管の楽器です。ターゲットとなるパート内で \transpose
を用いて移調することができ、この場合は全てのピッチが移調されます
(訳注: 以前は引用を含めたピッチが移調されていましたが、2.18 時点で挙動が変更されており、引用のピッチが変更されないようになっています)。
\addQuote clarinet { \transposition bes \repeat unfold 8 { d'16 d' d'8 } } \addQuote sax { \transposition es' \repeat unfold 16 { a8 } } quoteTest = { % french horn \transposition f g'4 << \quoteDuring "clarinet" { \skip 4 } s4^"clar." >> << \quoteDuring "sax" { \skip 4 } s4^"sax." >> g'4 } { \new Staff \with { instrumentName = \markup { \column { Horn "in F" } } } \quoteTest \transpose c' d' << \quoteTest s4_"up a tone" >> }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 移調を含む他のボイスの引用 ] | [ 上へ : Pitches ] | [ Pitches: 臨時記号の数が最小になるようにピッチを移調する ("スマート" トランスポーズ) > ] |
調号の取り消し表示を新たな調号から離す
デフォルトでは、調号が変更される際のナチュラルによる取り消し表示は、新たな調号のすぐ隣に配置されます。この挙動は、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 }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 調号の取り消し表示を新たな調号から離す ] | [ 上へ : Pitches ] | [ Pitches: Turkish Makam example > ] |
臨時記号の数が最小になるようにピッチを移調する ("スマート" トランスポーズ)
この例は、臨時記号の数が最小になるように、異名同音を置き換える Scheme コードを使用しています。この場合、次のルールが適用されます:
ダブルシャープやダブルフラットは削除されます
B シャープ -> C
E シャープ -> F
C フラット -> B
F フラット -> E
このようにして、最も自然な異名同音が選ばれます。
#(define (naturalize-pitch p) (let ((o (ly:pitch-octave p)) (a (* 4 (ly:pitch-alteration p))) ;; alteration, a, in quarter tone steps, ;; for historical reasons (n (ly:pitch-notename p))) (cond ((and (> a 1) (or (eqv? n 6) (eqv? n 2))) (set! a (- a 2)) (set! n (+ n 1))) ((and (< a -1) (or (eqv? n 0) (eqv? n 3))) (set! a (+ a 2)) (set! n (- n 1)))) (cond ((> a 2) (set! a (- a 4)) (set! n (+ n 1))) ((< a -2) (set! a (+ a 4)) (set! n (- n 1)))) (if (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7)))) (if (> n 6) (begin (set! o (+ o 1)) (set! n (- n 7)))) (ly:make-pitch o n (/ a 4)))) #(define (naturalize music) (let ((es (ly:music-property music 'elements)) (e (ly:music-property music 'element)) (p (ly:music-property music 'pitch))) (if (pair? es) (ly:music-set-property! music 'elements (map naturalize es))) (if (ly:music? e) (ly:music-set-property! music 'element (naturalize e))) (if (ly:pitch? p) (begin (set! p (naturalize-pitch p)) (ly:music-set-property! music 'pitch p))) music)) naturalizeMusic = #(define-music-function (m) (ly:music?) (naturalize m)) music = \relative c' { c4 d e g } \score { \new Staff { \transpose c ais { \music } \naturalizeMusic \transpose c ais { \music } \transpose c deses { \music } \naturalizeMusic \transpose c deses { \music } } \layout { } }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 臨時記号の数が最小になるようにピッチを移調する ("スマート" トランスポーズ) ] | [ 上へ : Pitches ] | [ Pitches: 音部記号のプロパティを調整する > ] |
Turkish Makam example
This template uses the start of a well-known Turkish Saz Semai that is familiar in the repertoire in order to illustrate some of the elements of Turkish music notation.
\paper { tagline = ##f } % Initialize makam settings \include "turkish-makam.ly" \header { title = "Hüseyni Saz Semaisi" composer = "Lavtacı Andon" } \relative { \set Staff.extraNatural = ##f \set Staff.autoBeaming = ##f \key a \huseyni \time 10/8 a'4 g'16 [fb] e8. [d16] d [c d e] c [d c8] bfc | a16 [bfc a8] bfc c16 [d c8] d16 [e d8] e4 fb8 | d4 a'8 a16 [g fb e] fb8 [g] a8. [b16] a16 [g] | g4 g16 [fb] fb8. [e16] e [g fb e] e4 r8 | }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: Turkish Makam example ] | [ 上へ : Pitches ] | [ Pitches: autoChange を 2 つ以上のボイスで使用する > ] |
音部記号のプロパティを調整する
音部記号のグリフ、位置、オクターブ記号を変更するだけでは、変更後の音符の位置は変更されません。調号を正しい位置に表示するためには、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 }
[ << Pitches ] | [トップ][目次] | [ Rhythms >> ] |
[ < Pitches: 音部記号のプロパティを調整する ] | [ 上へ : Pitches ] | [ Rhythms > ] |
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 } >> }
[ << Pitches ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Pitches: autoChange を 2 つ以上のボイスで使用する ] | [ 上へ : Top ] | [ Rhythms: スラーやタイを連符などと組み合わせる > ] |
Rhythms
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms ] | [ 上へ : Rhythms ] | [ Rhythms: ドラム パートを追加する > ] |
スラーやタイを連符などと組み合わせる
LilyPond の構文は、括弧類の配置に関して特殊であり、入れ子構造にはならない場合があります。例えば、手動連桁を入力する場合、開き角括弧は音符とその長さの前ではなく後に配置しなければなりません。同様に、閉じ角括弧は、連符の途中であったとしても、連桁が終了する音符のすぐ後に配置しなければなりません。このスニペットは、手動連桁、手動スラー、タイ、フレージング スラーを、(波括弧で囲まれた) 連符と組み合わせる方法を示しています。
{ r16[ g16 \tuplet 3/2 { r16 e'8] } g16( a \tuplet 3/2 { b d e') } g8[( a \tuplet 3/2 { b d') e'] ~ } \time 2/4 \tuplet 5/4 { e'32\( a b d' e' } a'4.\) }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: スラーやタイを連符などと組み合わせる ] | [ 上へ : Rhythms ] | [ Rhythms: 装飾音符のスペースを調整する > ] |
ドラム パートを追加する
\drummode
のような、予め設定された強力なツールと
DrumStaff
コンテキストを用いることで、ドラム パートを入力することは非常に簡単になります: ドラム パートは (特殊な音部記号を持つ) 独自の譜として配置され、ドラムに対応した符頭を持ちます。ドラムに記号を追加したり、線の数を制限することも可能です。
drh = \drummode { cymc4.^"crash" hhc16^"h.h." hh hhc8 hho hhc8 hh16 hh hhc4 r4 r2 } drl = \drummode { bd4 sn8 bd bd4 << bd ss >> bd8 tommh tommh bd toml toml bd tomfh16 tomfh } timb = \drummode { timh4 ssh timl8 ssh r timh r4 ssh8 timl r4 cb8 cb } \score { << \new DrumStaff \with { instrumentName = "timbales" drumStyleTable = #timbales-style \override StaffSymbol.line-count = #2 \override BarLine.bar-extent = #'(-1 . 1) } << \timb >> \new DrumStaff \with { instrumentName = "drums" } << \new DrumVoice { \stemUp \drh } \new DrumVoice { \stemDown \drl } >> >> \layout { } \midi { \tempo 4 = 120 } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: ドラム パートを追加する ] | [ 上へ : Rhythms ] | [ Rhythms: 小節番号を揃える > ] |
装飾音符のスペースを調整する
装飾音符のスペーシングは 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 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 装飾音符のスペースを調整する ] | [ 上へ : Rhythms ] | [ Rhythms: 二全音符を変更する > ] |
小節番号を揃える
デフォルトで小節番号は親オブジェクトに右揃えされます。つまり、小節番号は行の左端に、行内に表示される場合には小節線の左端に表示されます。これを中央揃えあるいは左揃えにすることができます。
\relative c' { \set Score.currentBarNumber = #111 \override Score.BarNumber.break-visibility = #all-visible % Increase the size of the bar number by 2 \override Score.BarNumber.font-size = #2 % Print a bar number every second measure \set Score.barNumberVisibility = #(every-nth-bar-number-visible 2) c1 | c1 % Center-align bar numbers \override Score.BarNumber.self-alignment-X = #CENTER c1 | c1 % Left-align bar numbers \override Score.BarNumber.self-alignment-X = #LEFT c1 | c1 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 小節番号を揃える ] | [ 上へ : Rhythms ] | [ Rhythms: Appoggiatura or grace note before a bar line > ] |
二全音符を変更する
二全音符の表示を、符頭の左右に線が 1 本あるバロック式の表示から、2 本あるものに変更することができます。
\relative c'' { \time 4/2 c\breve | \override Staff.NoteHead.style = #'altdefault b\breve \override Staff.NoteHead.style = #'baroque b\breve \revert Staff.NoteHead.style a\breve }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 二全音符を変更する ] | [ 上へ : Rhythms ] | [ Rhythms: 自動的な連桁細分 > ] |
Appoggiatura or grace note before a bar line
By default, appoggiaturas and grace notes that occur on the first beat of a measure are printed after the bar line. They can however be printed before, simply by adding an invisible BarLine and then the visible one, as demonstrated here.
{ R1 %% default \appoggiatura d''8 c''4 r2. %% cheated \appoggiatura { \bar "" d''8 \bar "|" } c''4 r2. }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: Appoggiatura or grace note before a bar line ] | [ 上へ : Rhythms ] | [ Rhythms: 自動で音価を変更する > ] |
自動的な連桁細分
連桁の細分は自動で行われます。プロパティ subdivideBeams
をセットすることで、(baseMoment
で指定できるような) 拍の位置で連桁が細分されます。
\new Staff { \relative c'' { << { \voiceOne \set subdivideBeams = ##t b32[ a g f c' b a g b32^"subdivide beams" a g f c' b a g] } \new Voice { \voiceTwo b32_"default"[ a g f c' b a g b32 a g f c' b a g] } >> \oneVoice \set baseMoment = #(ly:make-moment 1/8) \set beatStructure = 2,2,2,2 b32^"baseMoment 1 8"[ a g f c' b a g] \set baseMoment = #(ly:make-moment 1/16) \set beatStructure = 4,4,4,4 b32^"baseMoment 1 16"[ a g f c' b a g] } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 自動的な連桁細分 ] | [ 上へ : Rhythms ] | [ Rhythms: Score コンテキストでの自動連桁 > ] |
自動で音価を変更する
ある音楽の音符の長さを変更するために*、shiftDurations
を使用することができます。これは 2 つの引数を取ります – 1 つ目は
2 のべき乗で与えられる倍率、2 つ目は付け加える付点の数を表す正の整数です。
\paper { indent = 0 } music = \relative c'' { a1 b2 c4 d8 r } \score { \new Voice { \time 4/2 \music \time 4/4 \shiftDurations #1 #0 { \music } \time 2/4 \shiftDurations #2 #0 { \music } \time 4/1 \shiftDurations #-1 #0 { \music } \time 8/1 \shiftDurations #-2 #0 { \music } \time 6/2 \shiftDurations #0 #1 { \music } \time 7/2 \shiftDurations #0 #2 { \music } } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 自動で音価を変更する ] | [ 上へ : Rhythms ] | [ Rhythms: 改行に跨る連桁 > ] |
Score コンテキストでの自動連桁
Score
コンテキストに設定された自動連桁の設定は全ての譜に適用されますが、Staff
や Voce
レベルで設定することもできます。
\relative c'' { \time 5/4 % Set default beaming for all staves \set Score.baseMoment = #(ly:make-moment 1/8) \set Score.beatStructure = 3,4,3 << \new Staff { c8 c c c c c c c c c } \new Staff { % Modify beaming for just this staff \set Staff.beatStructure = 6,4 c8 c c c c c c c c c } \new Staff { % Inherit beaming from Score context << { \voiceOne c8 c c c c c c c c c } % Modify beaming for this voice only \new Voice { \voiceTwo \set Voice.beatStructure = 6,4 a8 a a a a a a a a a } >> } >> }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: Score コンテキストでの自動連桁 ] | [ 上へ : Rhythms ] | [ Rhythms: 向きの変わる連桁が作られる符頭間の距離を変更する > ] |
改行に跨る連桁
連桁が小節線を跨ぐ場合、改行は通常禁止されます。この挙動は以下のようにして変更することができます。
\relative c'' { \override Beam.breakable = ##t c8 c[ c] c[ c] c[ c] c[ \break c8] c[ c] c[ c] c[ c] c }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 改行に跨る連桁 ] | [ 上へ : Rhythms ] | [ Rhythms: 複数小節にまたがる休符の形を変更する > ] |
向きの変わる連桁が作られる符頭間の距離を変更する
向きが変わる連桁は、符頭と符頭が大きく離れている場合に自動的に作られます。この挙動は auto-knee-gap
プロパティで調整することができます。符頭間の距離が auto-knee-gap
と連桁オブジェクトの幅を[c
足したものよりも大きい場合に、向きの変わる連桁が作られます
(連桁オブジェクトの幅は、音符の長さや、連桁の傾きによって異なります)。デフォルトでは、auto-knee-gap
は 5.5 譜スペースにセットされています。
{ f8 f''8 f8 f''8 \override Beam.auto-knee-gap = #6 f8 f''8 f8 f''8 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 向きの変わる連桁が作られる符頭間の距離を変更する ] | [ 上へ : Rhythms ] | [ Rhythms: 音符ごとに付点の数を独立して変更する > ] |
複数小節にまたがる休符の形を変更する
休符が複数小節に渡り、それが 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 } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 複数小節にまたがる休符の形を変更する ] | [ 上へ : Rhythms ] | [ Rhythms: メトロノーム記号を表示せずにテンポを変更する > ] |
音符ごとに付点の数を独立して変更する
音符ごとに、入力したドットの数とは独立して付点の数を変更することができます。
\relative c' { c4.. a16 r2 | \override Dots.dot-count = #4 c4.. a16 r2 | \override Dots.dot-count = #0 c4.. a16 r2 | \revert Dots.dot-count c4.. a16 r2 | }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 音符ごとに付点の数を独立して変更する ] | [ 上へ : Rhythms ] | [ Rhythms: 連符の数字を変更する > ] |
メトロノーム記号を表示せずにテンポを変更する
楽譜には何も出力せずに 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 { } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: メトロノーム記号を表示せずにテンポを変更する ] | [ 上へ : Rhythms ] | [ Rhythms: \scaleDurations を使用した多拍子の部分で拍子記号を変更する > ] |
連符の数字を変更する
デフォルトでは、連符の上には \tuplet
の引数として与えられた数字のみが表示されます。
代わりに、3:2 のような形の数字を表示することができます。また、数字を非表示にすることもできます。
\relative c'' { \tuplet 3/2 { c8 c c } \tuplet 3/2 { c8 c c } \override TupletNumber.text = #tuplet-number::calc-fraction-text \tuplet 3/2 { c8 c c } \omit TupletNumber \tuplet 3/2 { c8 c c } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 連符の数字を変更する ] | [ 上へ : Rhythms ] | [ Rhythms: チャントまたは詩編の記譜法 > ] |
\scaleDurations を使用した多拍子の部分で拍子記号を変更する
measureLength
, measurePosition
プロパティは、小節線がどのタイミングで必要になるかを決定しています。しかし、\scaleDurations
を使用する際、拍子記号と整合性が取れなくなることがあります。この場合には、measureLength
を ly:make-moment
コールバックを用いて手動でセットします。2 つ目の引数は \scaleDurations
の 2 つ目の引数と一致している必要があります。
\layout { \context { \Score \remove "Timing_translator" } \context { \Staff \consists "Timing_translator" } } << \new Staff { \scaleDurations 8/5 { \time 6/8 \set Timing.measureLength = #(ly:make-moment 6/5) b8 b b b b b \time 2/4 \set Timing.measureLength = #(ly:make-moment 4/5) b4 b } } \new Staff { \clef bass \time 2/4 c2 d e f } >>
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: \scaleDurations を使用した多拍子の部分で拍子記号を変更する ] | [ 上へ : Rhythms ] | [ Rhythms: 複合拍子 > ] |
チャントまたは詩編の記譜法
以下のような記譜は、詞が必ずしも同じ長さではない詩編のチャントなどで用いられます。
stemOff = \hide Staff.Stem stemOn = \undo \stemOff \score { \new Staff \with { \remove "Time_signature_engraver" } { \key g \minor \cadenzaOn \stemOff a'\breve bes'4 g'4 \stemOn a'2 \section \stemOff a'\breve g'4 a'4 \stemOn f'2 \section \stemOff a'\breve^\markup { \italic flexe } \stemOn g'2 \fine } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: チャントまたは詩編の記譜法 ] | [ 上へ : Rhythms ] | [ Rhythms: 小節のグループ化記号 > ] |
複合拍子
20 世紀の変拍子 (例えば "5/8") は、よく2 つ以上の拍子記号を合わせた複合拍子として演奏されます ("3/8 + 2/8" などのように)。
LilyPond は、このような音楽を読みやすく、また演奏しやすくすることができます。明示的に複合拍子を表示し、自動連桁の振る舞いをそれに合わせて変更することができます。
\relative c' { \compoundMeter #'((2 8) (3 8)) c8 d e fis gis c8 fis, gis e d c8 d e4 gis8 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 複合拍子 ] | [ 上へ : Rhythms ] | [ Rhythms: 小節番号を衝突を避けながら左揃えする > ] |
小節のグループ化記号
小節内の拍のまとまりは、beatStructure
コンテキスト プロパティによりコントロールされます。beatStructure
の値はscm/time-signature-settings.scm
に、多くの拍子記号に対して設定されています。beatStructure
の値は、\set
で変更することができます。あるいは、\time
を拍子記号と beatStructure
の明示的な変更のために用いることができます。そのためには、拍子記号の前に小節内部の拍のグループを数値のリストで (Scheme の構文で) 与えます。
\time
は Timing
コンテキストに適用されるため、Voice
のような他のより低いレベルのコンテキストにセットされた
beatStructure
や baseMoment
の値を上書きしません。
Measure_grouping_engraver
がコンテキストに含まれている場合、拍のグループを示す記号が表示されます。この記号はリズムが複雑な現代音楽を読みやすくします。この例では、9/8 の小節が 2 つの方法で 2 つのパターンにグループ化されています。5/8 は scm/time-signature-settings.scm
のデフォルト設定を用いています。
\score { \new Voice \relative c'' { \time 9/8 g8 g d d g g a( bes g) | \set Timing.beatStructure = 2,2,2,3 g8 g d d g g a( bes g) | \time 4,5 9/8 g8 g d d g g a( bes g) | \time 5/8 a4. g4 | } \layout { \context { \Staff \consists "Measure_grouping_engraver" } } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 小節のグループ化記号 ] | [ 上へ : Rhythms ] | [ Rhythms: 連符の括弧の可視性をコントロールする > ] |
小節番号を衝突を避けながら左揃えする
小節番号が左揃えされている場合、譜のブラケットと重なってしまうかもしれません。このスニペットは、改行後の小節番号のみ右揃えのままにすることでそれを解決しています。
consistentlyLeftAlignedBarNumbers = { \override Score.BarNumber.break-visibility = #end-of-line-invisible \override Score.BarNumber.self-alignment-X = #(lambda (grob) (let ((break-dir (ly:item-break-dir grob))) (if (= break-dir RIGHT) RIGHT LEFT))) } \new ChoirStaff << \new Staff { \relative c' { \set Score.barNumberVisibility = #(every-nth-bar-number-visible 3) \bar "" \consistentlyLeftAlignedBarNumbers \set Score.currentBarNumber = #112 \repeat unfold 8 { R1 } \break \repeat unfold 9 { R1 } \break \repeat unfold 7 { R1 } } } \new Staff { \relative c' { \repeat unfold 24 { R1 } } } >> \layout { indent = #0 ragged-right = ##t ragged-last = ##t }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 小節番号を衝突を避けながら左揃えする ] | [ 上へ : Rhythms ] | [ Rhythms: Cow and ride bell example > ] |
連符の括弧の可視性をコントロールする
連符の括弧の可視性についての挙動は、デフォルトでは同じ長さの連桁がある場合に表示されないようになっています。これをコントロールするには、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' { \override Score.TextMark.non-musical = ##f \textMark "default" \music \override TupletBracket.bracket-visibility = #'if-no-beam \textMark \markup \typewriter "'if-no-beam" \music \override TupletBracket.bracket-visibility = ##t \textMark \markup \typewriter "#t" \music \override TupletBracket.bracket-visibility = ##f \textMark \markup \typewriter "#f" \music \omit TupletBracket \textMark \markup \typewriter "omit" \music } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 連符の括弧の可視性をコントロールする ] | [ 上へ : Rhythms ] | [ Rhythms: マークアップ モードでメトロノーム記号を作成する > ] |
Cow and ride bell example
Two different bells, entered with ’cb’ (cowbell) and ’rb’ (ridebell).
\paper { tagline = ##f } #(define mydrums '((ridebell default #f 3) (cowbell default #f -2))) \new DrumStaff \with { instrumentName = #"Different Bells" } \drummode { \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) \set DrumStaff.clefPosition = 0.5 \override DrumStaff.StaffSymbol.line-positions = #'(-2 3) \override Staff.BarLine.bar-extent = #'(-1.0 . 1.5) \time 2/4 rb8 8 cb8 16 rb16-> ~ | 16 8 16 cb8 8 | }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: Cow and ride bell example ] | [ 上へ : Rhythms ] | [ Rhythms: タイを手動で譜刻する > ] |
マークアップ モードでメトロノーム記号を作成する
新しいメトロノーム記号はマークアップ モードで作成できますが、MIDI 出力のテンポは変更されません。
\relative c' { \tempo \markup { \concat { ( \smaller \general-align #Y #DOWN \note {16.} #1 " = " \smaller \general-align #Y #DOWN \note {8} #1 ) } } c1 c4 c' c,2 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: マークアップ モードでメトロノーム記号を作成する ] | [ 上へ : Rhythms ] | [ Rhythms: トレモロを符幹に接触せずに譜刻する > ] |
タイを手動で譜刻する
タイは TieColumn
オブジェクトの tie-configuration
プロパティを変更することで手動で譜刻することができます。最初の数値が中央の譜線からの距離を譜スペースの半分の単位で表し、次の数値が向きを表します (1 = 上, -1 = 下)。
LilyPond は最初の数値の正確な値と不正確な値を区別することに注意してください。正確な値 (つまり、整数または (/ 4 5)
のような分数) を使用する場合、値はおおよその垂直位置として機能し、LilyPond によってさらに調整され、タイが譜線を避けるようにします。浮動小数点数のような不正確な値を使用する場合は、それ以上調整せずに垂直位置と見なされます。
\relative c' { <c e g>2~ <c e g> \override TieColumn.tie-configuration = #'((0.0 . 1) (-2.0 . 1) (-4.0 . 1)) <c e g>2~ <c e g> \override TieColumn.tie-configuration = #'((0 . 1) (-2 . 1) (-4 . 1)) <c e g>2~ <c e g> }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: タイを手動で譜刻する ] | [ 上へ : Rhythms ] | [ Rhythms: 一つの \tuplet コマンドで複数の連符を入力する > ] |
トレモロを符幹に接触せずに譜刻する
トレモロの演奏時間が 4 分音符より短い場合や、ちょうど 2 分音符である場合、あるいは 2 分音符と全音符の間の長さである場合は、連桁を符幹と接触させて表示することが一般的です。スタイルによっては、いくつかの連桁が符幹に接触せずに中央に描かれる場合があります。このような符幹に接触しないトレモロの連桁の数は、Beam
オブジェクトの gap-count
プロパティでコントロールされます。また、連桁と符幹との間隔は gap
プロパティでセットされます。
\relative c'' { \repeat tremolo 8 { a32 f } \override Beam.gap-count = #1 \repeat tremolo 8 { a32 f } \override Beam.gap-count = #2 \repeat tremolo 8 { a32 f } \override Beam.gap-count = #3 \repeat tremolo 8 { a32 f } \override Beam.gap-count = #3 \override Beam.gap = #1.33 \repeat tremolo 8 { a32 f } \override Beam.gap = #1 \repeat tremolo 8 { a32 f } \override Beam.gap = #0.67 \repeat tremolo 8 { a32 f } \override Beam.gap = #0.33 \repeat tremolo 8 { a32 f } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: トレモロを符幹に接触せずに譜刻する ] | [ 上へ : Rhythms ] | [ Rhythms: 水平な符尾とはみ出す連桁 > ] |
一つの \tuplet コマンドで複数の連符を入力する
tupletSpannerDuration
プロパティは、一つの \tuplet
コマンド内にある音符が、どれぐらいの長さで連符一つ分を作るかを指定します。これにより、一つの \tuplet
コマンドで多くの連続した連符を作成することができ、入力が簡潔になります。
tupletSpannerDuration
を設定する方法はいくつかあります。\tupletSpan
コマンドは、プロパティを与えられた長さにセットし、長さではなく \default
が与えられた場合はリセットします。もう一つの方法は、\tuplet
のオプション引数を用いることです。
\relative c' { \time 2/4 \tupletSpan 4 \tuplet 3/2 { c8^"\\tupletSpan 4" c c c c c } \tupletSpan \default \tuplet 3/2 { c8^"\\tupletSpan \\default" c c c c c } \tuplet 3/2 4 { c8^"\\tuplet 3/2 4 {...}" c c c c c } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 一つの \tuplet コマンドで複数の連符を入力する ] | [ 上へ : Rhythms ] | [ Rhythms: リハーサル記号を指定した番号や文字から始める > ] |
水平な符尾とはみ出す連桁
単一の音符に出現する連桁や、端がはみ出す連桁は、stemLeftBeamCount
,
stemRightBeamCount
と連桁指示 []
を組み合わせることで作ることができます。
単一の音符で、右側にのみはみ出す連桁については、音符に []
を付加し、stemLeftBeamCount
を 0 にします (Example 1 を参照)。
左側にのみはみ出す場合は、代わりに stemRightBeamCount
を 0 にします
(Example 2)。
複数音符の連桁で、右側にはみ出す場合は、stemRightBeamCount
を正の値にします。左側にはみ出す場合は、stemLeftBeamCount
を正の値にします (Example 3)。
休符に囲まれた単一の音符では、両方向にはみ出した連桁を表示したほうが分かりやすい場合があります。これは連桁指示 []
のみで実現できます
(Example 4)。
(注意: \set stemLeftBeamCount
は常に \once \set
と同等です。つまり、連桁の本数は“保持されず”、最後の例における 16[]
の音符はその前の \set
に影響されません。)
\score { << % Example 1 \new RhythmicStaff { \set stemLeftBeamCount = #0 c16[] r8. } % Example 2 \new RhythmicStaff { r8. \set stemRightBeamCount = #0 16[] } % Example 3 \new RhythmicStaff { 16 16 \set stemRightBeamCount = #2 16 r r \set stemLeftBeamCount = #2 16 16 16 } % Example 4 \new RhythmicStaff { 16 16 \set stemRightBeamCount = #2 16 r16 16[] r16 \set stemLeftBeamCount = #2 16 16 } >> }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 水平な符尾とはみ出す連桁 ] | [ 上へ : Rhythms ] | [ Rhythms: 符尾をカスタマイズする > ] |
リハーサル記号を指定した番号や文字から始める
このスニペットは、リハーサル記号の自動付番を、指定した番号や文字から始める例を示しています。
\relative c'' { c1 \mark \default c1 \mark \default c1 \mark \default c1 \mark #14 c1 \mark \default c1 \mark \default c1 \mark \default c1 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: リハーサル記号を指定した番号や文字から始める ] | [ 上へ : Rhythms ] | [ Rhythms: ギター ストロークのリズム > ] |
符尾をカスタマイズする
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 } { \time 1/4 \textMark "Normal flags" \snippetexamplenotes \textMark "Custom flag: inverted" \override Flag.stencil = #inverted-flag \snippetexamplenotes \textMark "Custom flag: weight" \override Flag.stencil = #weight-flag \snippetexamplenotes \textMark "Revert to normal" \revert Flag.stencil \snippetexamplenotes }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 符尾をカスタマイズする ] | [ 上へ : Rhythms ] | [ Rhythms: 多拍子記号を大きくカスタマイズする > ] |
ギター ストロークのリズム
ギター音楽では、メロディの音符、コードネーム、フレット図と共に、ストロークのリズムを表示することができます。
\include "predefined-guitar-fretboards.ly" << \new ChordNames { \chordmode { c1 | f | g | c } } \new FretBoards { \chordmode { c1 | f | g | c } } \new Voice \with { \consists "Pitch_squash_engraver" } { \relative c'' { \improvisationOn c4 c8 c c4 c8 c f4 f8 f f4 f8 f g4 g8 g g4 g8 g c4 c8 c c4 c8 c } } \new Voice = "melody" { \relative c'' { c2 e4 e4 f2. r4 g2. a4 e4 c2. } } \new Lyrics { \lyricsto "melody" { This is my song. I like to sing. } } >>
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: ギター ストロークのリズム ] | [ 上へ : Rhythms ] | [ Rhythms: High and Low woodblock example > ] |
多拍子記号を大きくカスタマイズする
多拍子を示す記号は必ずしも必要というわけではありませんが、この楽譜では拍を示すために使用しています (これは実際のバルカン音楽のテンプレートになっています!)
melody = \relative c'' { \key g \major \compoundMeter #'((3 8) (2 8) (2 8) (3 8) (2 8) (2 8) (2 8) (2 8) (3 8) (2 8) (2 8)) c8 c c d4 c8 c b c b a4 g fis8 e d c b' c d e4-^ fis8 g \break c,4. d4 c4 d4. c4 d c2 d4. e4-^ d4 c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 \break c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 \break } drum = \new DrumStaff \drummode { \repeat volta 2 { bd4.^\markup { Drums } sn4 bd \bar ";" sn4. bd4 sn \bar ";" bd sn bd4. sn4 bd } } \new Staff \with { instrumentName = \markup { \concat { "B" \flat " Sop." } } } { \melody \drum }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 多拍子記号を大きくカスタマイズする ] | [ 上へ : Rhythms ] | [ Rhythms: transparent プロパティを用いてオブジェクトを不可視にする > ] |
High and Low woodblock example
Two Woodblocks, entered with ’wbh’ (high woodblock) and ’wbl’ (low woodblock). The length of the barline has been altered with an \override command otherwise it would be too short. The positions of the two stafflines also have to be explicitly defined.
\paper { tagline = ##f } % These lines define the position of the woodblocks in the stave; % if you like, you can change it or you can use special note heads % for the woodblocks. #(define mydrums '((hiwoodblock default #f 3) (lowoodblock default #f -2))) woodstaff = { % This defines a staff with only two lines. % It also defines the positions of the two lines. \override Staff.StaffSymbol.line-positions = #'(-2 3) % This is necessary; if not entered, % the barline would be too short! \override Staff.BarLine.bar-extent = #'(-1.0 . 1.5) % small correction for the clef: \set DrumStaff.clefPosition = 0.5 } \new DrumStaff { % with this you load your new drum style table \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) \woodstaff \drummode { \time 2/4 wbl8 16 16 8-> 8 | wbl8 16 16-> ~ 16 16 r8 | } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: High and Low woodblock example ] | [ 上へ : Rhythms ] | [ Rhythms: 複雑な破線のスラーを作成する > ] |
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 } >> }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: transparent プロパティを用いてオブジェクトを不可視にする ] | [ 上へ : Rhythms ] | [ Rhythms: 連桁の位置を手動でコントロールする > ] |
複雑な破線のスラーを作成する
dash-definition
プロパティをセットすることで、スラーに複雑な破線パターンを追加することができます。dash-definition
は
dash-element
のリストになっています。dash-element
はスラーの各部分に対する破線パターンのパラメータ リストです。
スラーはベジエ曲線の媒介変数 t (左端が 0, 右端が 1) の関数として定義されます。dash-element
は、(start-t stop-t dash-fraction dash-period)
のリストになっています。start-t
から stop-t
までの範囲が、dash-period
の長さにつき dash-fraction
が黒になるような破線となります。dash-period
は譜スペースの単位です。dash-fraction
を 1 にすると実線のスラーになります。
\relative c' { \once \override Slur.dash-definition = #'((0 0.3 0.1 0.75) (0.3 0.6 1 1) (0.65 1.0 0.4 0.75)) c4( d e f) \once \override Slur.dash-definition = #'((0 0.25 1 1) (0.3 0.7 0.4 0.75) (0.75 1.0 1 1)) c4( d e f) }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 複雑な破線のスラーを作成する ] | [ 上へ : Rhythms ] | [ Rhythms: 多声の部分で複数小節にまたがる休符を統合する > ] |
連桁の位置を手動でコントロールする
連桁の位置は、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 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 連桁の位置を手動でコントロールする ] | [ 上へ : Rhythms ] | [ Rhythms: 連符のブラケットの長さを変更する > ] |
多声の部分で複数小節にまたがる休符を統合する
多声の譜で複数小節にまたがる休符を用いる場合は、休符の位置が属しているボイスによって変化します。しかし、次の設定をすることで、それらを同じ位置に表示することができます。
normalPos = \revert MultiMeasureRest.direction { << { c''1 R1 c''1 \normalPos R1 } \\ { c'1 R1 c'1 \normalPos R1 } >> }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 多声の部分で複数小節にまたがる休符を統合する ] | [ 上へ : Rhythms ] | [ Rhythms: 多声の音楽で付点付きの音符を移動する > ] |
連符のブラケットの長さを変更する
連符のブラケットの終端位置を変更することが出来ます。デフォルトでは連符内にある最後の音符の右端が終端となりますが、tupletFullLength
と
tupletFullLength
を #t
にすることで、音部記号、拍子記号、調号などを含めた次の音符の直前までが連符で囲まれます。tupletFullLengthNote
を #f
にすることで、音部記号などを除いた、音符が音価としてスペースを取っている部分までが連符で囲まれるようになります。この例では、以上の設定を変更して、それぞれの設定で連符がどのオブジェクトにまでまたがるかを示しています。
\new RhythmicStaff { % Set tuplets to be extendable... \set tupletFullLength = ##t % ...to cover all items up to the next note \set tupletFullLengthNote = ##t \time 2/4 \tuplet 3/2 { c4 4 4 } % ...or to cover just whitespace \set tupletFullLengthNote = ##f \time 4/4 \tuplet 5/4 { 4 1 } \time 3/4 2. }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 連符のブラケットの長さを変更する ] | [ 上へ : Rhythms ] | [ Rhythms: 複数小節にまたがる休符の長さをコントロールする > ] |
多声の音楽で付点付きの音符を移動する
上のボイスにある付点付きの音符が、下の音符との衝突を避けるために移動する場合、デフォルトでは右側に移動します。この挙動は、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 } >>
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 多声の音楽で付点付きの音符を移動する ] | [ 上へ : Rhythms ] | [ Rhythms: 複数小節にまたがる休符にマークアップを付加する > ] |
複数小節にまたがる休符の長さをコントロールする
複数小節にまたがる休符の長さは、休符の長さに依存しますが、MultiMeasureRest.space-increment
によってコントロールされます。デフォルト値は 2.0
です。
\relative c' { \compressEmptyMeasures R1*2 R1*4 R1*64 R1*16 \override Staff.MultiMeasureRest.space-increment = 2.5 R1*2 R1*4 R1*64 R1*16 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 複数小節にまたがる休符の長さをコントロールする ] | [ 上へ : Rhythms ] | [ Rhythms: デフォルトでない連符の数字 > ] |
複数小節にまたがる休符にマークアップを付加する
複数小節にまたがる休符に付加されるマークアップは、休符の上または下に中央揃えされます。マークアップが長い場合であっても、休符が広げられることはありません。休符をマークアップに合わせて広げる場合は、休符の前に空の和音を追加して、それにマークアップを付加してください。
このような方法で付加されたテキストは、空の和音が本来表示されるべき場所に合わせて左揃えされます。しかし、小節の長さをテキストに合わせるようにすれば、テキストが中央揃えされたように見えます。
\relative c' { \compressMMRests { \textLengthOn <>^\markup { [MAJOR GENERAL] } R1*19 <>_\markup { \italic { Cue: ... it is yours } } <>^\markup { A } R1*30^\markup { [MABEL] } \textLengthOff c4^\markup { CHORUS } d f c } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 複数小節にまたがる休符にマークアップを付加する ] | [ 上へ : Rhythms ] | [ Rhythms: 単一の小節の休符に数字を付ける > ] |
デフォルトでない連符の数字
LilyPond は連符に表示される数字として、実際の音価の比率とは異なる値を整形して表示する関数が用意されています。連符の数や比だけでなく、音価を示す音符を表示することもできます。
\relative c'' { \once \override TupletNumber.text = #(tuplet-number::non-default-tuplet-denominator-text 7) \tuplet 3/2 { c4. c4. c4. c4. } \once \override TupletNumber.text = #(tuplet-number::non-default-tuplet-fraction-text 12 7) \tuplet 3/2 { c4. c4. c4. c4. } \once \override TupletNumber.text = #(tuplet-number::append-note-wrapper (tuplet-number::non-default-tuplet-fraction-text 12 7) (ly:make-duration 3 0)) \tuplet 3/2 { c4. c4. c4. c4. } \once \override TupletNumber.text = #(tuplet-number::append-note-wrapper tuplet-number::calc-denominator-text (ly:make-duration 2 0)) \tuplet 3/2 { c8 c8 c8 c8 c8 c8 } \once \override TupletNumber.text = #(tuplet-number::append-note-wrapper tuplet-number::calc-fraction-text (ly:make-duration 2 0)) \tuplet 3/2 { c8 c8 c8 c8 c8 c8 } \once \override TupletNumber.text = #(tuplet-number::fraction-with-notes (ly:make-duration 2 1) (ly:make-duration 3 0)) \tuplet 3/2 { c4. c4. c4. c4. } \once \override TupletNumber.text = #(tuplet-number::non-default-fraction-with-notes 12 (ly:make-duration 3 0) 4 (ly:make-duration 2 0)) \tuplet 3/2 { c4. c4. c4. c4. } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: デフォルトでない連符の数字 ] | [ 上へ : Rhythms ] | [ Rhythms: \partCombine と \autoBeamOff > ] |
単一の小節の休符に数字を付ける
複数小節にまたがる休符は、単一の小節を除いて、長さを数字で表示します。これは、restNumberThreshold
を設定することで変更できます。
{ \compressEmptyMeasures R1 R1*10 R1*11 \bar "||" \set restNumberThreshold = 0 R1 R1*10 R1*11 \bar "||" \set restNumberThreshold = 10 R1 R1*10 R1*11 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 単一の小節の休符に数字を付ける ] | [ 上へ : Rhythms ] | [ Rhythms: Percussion example > ] |
\partCombine と \autoBeamOff
\partCombine
と共に \autoBeamOff
を使用した場合の挙動は理解しづらいです。
譜全体で自動連桁をオフにするために、代わりに以下を用いたほうが良いです:
\set Staff.autoBeaming = ##f
\partCombine
は 3 種類のボイスを作り出します –
符幹が上向きの単一ボイス、符幹が下向きの単一ボイス、パート結合が行われたボイスです。
\autoBeamOff
を \partCombine
の 1 つ目の引数の中で用いた場合、符幹が上向きのボイスか、結合されたボイスのどちらかの、現在アクティブな方に適用されます。\autoBeamOff
が 2 つ目の引数の中で用いられた場合、符幹が下向きのボイスに適用されます。
\partCombine
の中で全ての自動連桁をオフにするために
\autoBeamOff
を用いるためには、3 回呼び出しを行う必要があります。
{ %\set Staff.autoBeaming = ##f % turns off all autobeaming \partCombine { \autoBeamOff % applies to split up stems \repeat unfold 4 a'16 %\autoBeamOff % applies to combined up stems \repeat unfold 4 a'8 \repeat unfold 4 a'16 } { \autoBeamOff % applies to down stems \repeat unfold 4 f'8 \repeat unfold 8 f'16 | } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: \partCombine と \autoBeamOff ] | [ 上へ : Rhythms ] | [ Rhythms: 連桁で繋がれた連符の途中で改行する > ] |
Percussion example
A short example taken from Stravinsky’s L’Histoire du soldat.
#(define mydrums '((bassdrum default #f 4) (snare default #f -4) (tambourine default #f 0))) global = { \time 3/8 s4. \time 2/4 s2*2 \time 3/8 s4. \time 2/4 s2 } drumsA = { \context DrumVoice << { \global } { \drummode { \autoBeamOff \stemDown sn8 \stemUp tamb s8 | sn4 \stemDown sn4 | \stemUp tamb8 \stemDown sn8 \stemUp sn16 \stemDown sn \stemUp sn8 | \stemDown sn8 \stemUp tamb s8 | \stemUp sn4 s8 \stemUp tamb } } >> } drumsB = { \drummode { s4 bd8 s2*2 s4 bd8 s4 bd8 s8 } } \layout { indent = 40 \context { \DrumStaff drumStyleTable = #(alist->hash-table mydrums) } } \score { \new StaffGroup << \new DrumStaff \with { instrumentName = \markup \center-column { "Tambourine" "et" "caisse claire s. timbre" } } \drumsA \new DrumStaff \with { instrumentName = "Grosse Caisse" } \drumsB >> }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: Percussion example ] | [ 上へ : Rhythms ] | [ Rhythms: 装飾音符の連桁を通常の連桁の高さと同じになるよう配置する > ] |
連桁で繋がれた連符の途中で改行する
この作為的な例は、連桁で繋がれた連符の途中で手動あるいは自動の改行を許可する方法を示しています。ただし、拍に収まらない連符は手動で連桁を繋ぐ必要があります。
\layout { \context { \Voice % Permit line breaks within tuplets \remove "Forbid_line_break_engraver" % Allow beams to be broken at line breaks \override Beam.breakable = ##t } } \relative c'' { a8 \repeat unfold 5 { \tuplet 3/2 { c[ b a] } } % Insert a manual line break within a tuplet \tuplet 3/2 { c[ b \bar "" \break a] } \repeat unfold 5 { \tuplet 3/2 { c[ b a] } } c8 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 連桁で繋がれた連符の途中で改行する ] | [ 上へ : Rhythms ] | [ Rhythms: 装飾音符を浮いたスペースに配置する > ] |
装飾音符の連桁を通常の連桁の高さと同じになるよう配置する
音符が加線上に配置されている場合は、連桁は通常譜の中央まで伸びます。装飾音符の連桁はより短く、譜の外に配置される場合があります。この装飾音符の連桁に関する挙動をオーバライドすることができます。
\relative c { f8[ e] \grace { f8[ e] \override Stem.no-stem-extend = ##f f8[ e] \revert Stem.no-stem-extend } f8[ e] }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 装飾音符の連桁を通常の連桁の高さと同じになるよう配置する ] | [ 上へ : Rhythms ] | [ Rhythms: 複数小節にまたがる休符の位置を変更する > ] |
装飾音符を浮いたスペースに配置する
strict-grace-spacing
プロパティをセットすることで、装飾音符を列として ’浮いた’ 状態にすることができます。つまり、装飾音符ではない音符のスペーシングと独立させることができます: まず、通常の音符がスペーシングされ、その後に装飾音符が左側に配置されます。
\relative c'' { << \override Score.SpacingSpanner.strict-grace-spacing = ##t \new Staff \new Voice { \afterGrace c4 { c16[ c8 c16] } c8[ \grace { b16 d } c8] c4 r } \new Staff { c16 c c c c c c c c4 r } >> }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 装飾音符を浮いたスペースに配置する ] | [ 上へ : Rhythms ] | [ Rhythms: Positioning opposing fermatas on a bar line > ] |
複数小節にまたがる休符の位置を変更する
通常の休符と異なり、音符に付加することによって複数小節にまたがる休符の位置を変更するコマンドは用意されていません。しかし、多声の音楽では、奇数番号のボイスと偶数番号のボイスで休符の位置が分けられます。複数小節にまたがる休符の位置は以下のようにコントロールできます:
\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 } >> }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 複数小節にまたがる休符の位置を変更する ] | [ 上へ : Rhythms ] | [ Rhythms: 最後にリハーサル記号を配置した際に連符が削除されないようにする > ] |
Positioning opposing fermatas on a bar line
This snippet demonstrates a command that prints fermatas both above and below a bar line. If there would not otherwise be a bar line, it adds a double bar line. Semantically, the command codes a longer-than-normal caesura, which might be considered misuse depending on the situation.
twoWayFermata = { \once \set Staff.caesuraType = #'((underlying-bar-line . "||")) \once \set Staff.caesuraTypeTransform = ##f \caesura ^\fermata _\fermata } music = { f'1 \twoWayFermata R1 f'2 \twoWayFermata f'2 R1 b'1 \twoWayFermata \fine } \new GrandStaff << \new Staff \music \new Staff \music >>
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: Positioning opposing fermatas on a bar line ] | [ 上へ : Rhythms ] | [ Rhythms: 一定間隔で小節番号を表示する > ] |
最後にリハーサル記号を配置した際に連符が削除されないようにする
楽譜の最後に \mark
を追加すると、最後にある連符が表示されません。これは TupletBracket.full-length-to-extent
を #f
にすることで対処できます。
% due to issue 2362 a long mark such as % \textEndMark "Composed Feb 2007 - Feb 2008" % cannot be used here. \new Staff { \set tupletFullLength = ##t \time 1/8 \tuplet 3/2 8 { c'16 c' c' c' c' c' c' c' c' } \tweak direction #DOWN \textEndMark "1234" } \new Staff { \set tupletFullLength = ##t \override TupletBracket.full-length-to-extent = ##f \time 1/8 \tuplet 3/2 8 { c'16 c' c' c' c' c' c' c' c' } \tweak direction #DOWN \textEndMark "1234" }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 最後にリハーサル記号を配置した際に連符が削除されないようにする ] | [ 上へ : Rhythms ] | [ Rhythms: Printing bar numbers for broken measures > ] |
一定間隔で小節番号を表示する
barNumberVisibility
プロパティをセットすることで、小節番号を一定間隔で表示することができます。以下の例では、行末を除いて、2 小節ごとに小節番号が表示されています。
\relative c' { \override Score.BarNumber.break-visibility = #end-of-line-invisible \set Score.currentBarNumber = #11 % Print a bar number every second measure \set Score.barNumberVisibility = #(every-nth-bar-number-visible 2) c1 | c | c | c | c \break c1 | c | c | c | c }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 一定間隔で小節番号を表示する ] | [ 上へ : Rhythms ] | [ Rhythms: 小節番号を四角や丸の中に表示する > ] |
Printing bar numbers for broken measures
By default a BarNumber
of a broken measure is not repeated at
the beginning of the new line. Use
first-bar-number-invisible-save-broken-bars
for
barNumberVisibility
to get a parenthesized BarNumber
there.
\layout { \context { \Score barNumberVisibility = #first-bar-number-invisible-save-broken-bars \override BarNumber.break-visibility = ##(#f #t #t) } } \relative c' { c1 | d | e | f2 \bar "" \break fis | g1 | e2 \bar "" \break <>^"reenabled default" % back to default - % \unset Score.barNumberVisibility would do so as well \set Score.barNumberVisibility = #first-bar-number-invisible-and-no-parenthesized-bar-numbers es | d1 | c }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: Printing bar numbers for broken measures ] | [ 上へ : Rhythms ] | [ Rhythms: Printing bar numbers using modulo-bar-number-visible > ] |
小節番号を四角や丸の中に表示する
小節番号は四角や丸の中に表示することができます。
\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 "|." }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 小節番号を四角や丸の中に表示する ] | [ 上へ : Rhythms ] | [ Rhythms: 小節番号が表示される間隔を変更する > ] |
Printing bar numbers using modulo-bar-number-visible
If the remainder of the division of the current BarNumber
by the
first argument of modulo-bar-number-visible
equals its second
argument print the BarNumber
.
Useful to print the BarNumber
at certain distances, p.e:
-
(modulo-bar-number-visible 3 2)
-> prints 2,5,8 -
(modulo-bar-number-visible 4 2)
-> prints 2,6,10 -
(modulo-bar-number-visible 3 1)
-> prints 3,5,7 -
(modulo-bar-number-visible 5 2)
-> prints 2,7,12
\layout { \context { \Score \override BarNumber.break-visibility = ##(#f #t #t) barNumberVisibility = #(modulo-bar-number-visible 3 2) } } \relative c' { c1 | d | e | f \break g1 | e | d | c }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: Printing bar numbers using modulo-bar-number-visible ] | [ 上へ : Rhythms ] | [ Rhythms: メトロノーム記号やリハーサル記号を譜の下に表示する > ] |
小節番号が表示される間隔を変更する
小節番号が表示される間隔は {set-bar-number-visibility}
コンテキスト関数を変更することで変更することもできます。
\relative c' { \override Score.BarNumber.break-visibility = #end-of-line-invisible \context Score \applyContext #(set-bar-number-visibility 4) \repeat unfold 10 c'1 \context Score \applyContext #(set-bar-number-visibility 2) \repeat unfold 10 c }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 小節番号が表示される間隔を変更する ] | [ 上へ : Rhythms ] | [ Rhythms: 音楽を異なる拍子記号で表示する > ] |
メトロノーム記号やリハーサル記号を譜の下に表示する
デフォルトでは、メトロノーム記号やリハーサル記号は譜の上に表示されます。これらを譜の下に表示するには、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 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: メトロノーム記号やリハーサル記号を譜の下に表示する ] | [ 上へ : Rhythms ] | [ Rhythms: 最初の小節に小節番号を表示する > ] |
音楽を異なる拍子記号で表示する
次のスニペットでは、2 つのパートが完全に異なる拍子記号を持っていますが、タイミングは揃っています。小節線はパート毎に独立して表示するため
Score
のレベルでは表示されず、Timing_translator
が
Score
コンテキストから Staff
コンテキストに移動しています。
小節番号が必要な場合、Bar_number_engraver
も移動する必要があります。このエングラーバは Timing_translator
によってセットされるプロパティに依存するためです。小節番号を表示したい譜に \with
を用いることができます。
\paper { indent = #0 ragged-right = ##t } global = { \time 3/4 { s2.*3 } \bar "" \break { s2.*3 } } \layout { \context { \Score \remove "Timing_translator" \remove "Bar_number_engraver" \override SpacingSpanner.uniform-stretching = ##t \override SpacingSpanner.strict-note-spacing = ##t proportionalNotationDuration = #(ly:make-moment 1/64) } \context { \Staff \consists "Timing_translator" } \context { \Voice \remove "Forbid_line_break_engraver" tupletFullLength = ##t } } Bassklarinette = \new Staff \with { \consists "Bar_number_engraver" barNumberVisibility = #(every-nth-bar-number-visible 2) \override BarNumber.break-visibility = #end-of-line-invisible } << \global { \bar "|" \clef treble \time 3/8 d''4. \bar "|" \time 3/4 r8 des''2( c''8) \bar "|" \time 7/8 r4. ees''2 ~ \bar "|" \time 2/4 \tupletUp \tuplet 3/2 { ees''4 r4 d''4 ~ } \bar "|" \time 3/8 \tupletUp \tuplet 4/3 { d''4 r4 } \bar "|" \time 2/4 e''2 \bar "|" \time 3/8 es''4. \bar "|" \time 3/4 r8 d''2 r8 \bar "|" } >> Perkussion = \new StaffGroup << \new Staff << \global { \bar "|" \clef percussion \time 3/4 r4 c'2 ~ \bar "|" c'2. \bar "|" R2. \bar "|" r2 g'4 ~ \bar "|" g'2. ~ \bar "|" g'2. } >> \new Staff << \global { \bar "|" \clef percussion \time 3/4 R2. \bar "|" g'2. ~ \bar "|" g'2. \bar "|" r4 g'2 ~ \bar "|" g'2 r4 \bar "|" g'2. } >> >> \score { << \Bassklarinette \Perkussion >> }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 音楽を異なる拍子記号で表示する ] | [ 上へ : Rhythms ] | [ Rhythms: Printing tuplet brackets on the note head side > ] |
最初の小節に小節番号を表示する
デフォルトでは、最初の小節番号が ’1’ 以下の場合、表示が抑制されます。barNumberVisibility
を all-bar-numbers-visible
にセットすることで、最初の小節にも小節番号を表示することができます。しかし、これを動作させるためには更に、最初の音符の前に空白の小節線を挿入する必要があります。
\layout { indent = 0 ragged-right = ##t } \relative c' { \set Score.barNumberVisibility = #all-bar-numbers-visible c1 | d | e | f \break g1 | e | d | c }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 最初の小節に小節番号を表示する ] | [ 上へ : Rhythms ] | [ Rhythms: 装飾音符のデフォルトの挙動を再定義する > ] |
Printing tuplet brackets on the note head side
Whichever option you choose for controlling the tuplet bracket
visibility, it will show or hide the tuplet bracket irrespectively
of tuplet bracket placement (stem side or note head side).
However, when placing the tuplet bracket on the note head side some
authors recommend always printing the tuplet bracket. The option
visible-over-note-heads
can be used to achieve this.
music = \relative c'' { \tupletNeutral \tuplet 3/2 { c16[ d e } f8] \tupletUp \tuplet 3/2 { c8 d e } } \new Voice { \relative c' { \time 2/4 \override TupletBracket.visible-over-note-heads = ##t \override Score.TextMark.non-musical = ##f { \textMark \markup "default" \music } \override TupletBracket.bracket-visibility = #'if-no-beam { \textMark \markup \typewriter "'if-no-beam" \music } } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: Printing tuplet brackets on the note head side ] | [ 上へ : Rhythms ] | [ Rhythms: 楽譜から小節番号を削除する > ] |
装飾音符のデフォルトの挙動を再定義する
装飾音符に関するデフォルトの識別子は
startGraceMusic
, stopGraceMusic
,
startAcciaccaturaMusic
, stopAcciaccaturaMusic
,
startAppoggiaturaMusic
, stopAppoggiaturaMusic
であり、‘ly/grace-init.ly’ に定義されています。これらを再定義することで、装飾音符の挙動を変更することができます。
startAcciaccaturaMusic = { <>( \override Flag.stroke-style = #"grace" \slurDashed } stopAcciaccaturaMusic = { \revert Flag.stroke-style \slurSolid <>) } \relative c'' { \acciaccatura d8 c1 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 装飾音符のデフォルトの挙動を再定義する ] | [ 上へ : Rhythms ] | [ Rhythms: StaffGroup, PianoStaff, GrandStaff の譜を繋ぐ小節線を削除する > ] |
楽譜から小節番号を削除する
Score
コンテキストから Bar_number_engraver
を削除することで、小節番号を完全に削除することができます。
\layout { \context { \Score \omit BarNumber % or: %\remove "Bar_number_engraver" } } \relative c'' { c4 c c c \break c4 c c c }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 楽譜から小節番号を削除する ] | [ 上へ : Rhythms ] | [ Rhythms: 休符のスタイル > ] |
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 } >> }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: StaffGroup, PianoStaff, GrandStaff の譜を繋ぐ小節線を削除する ] | [ 上へ : Rhythms ] | [ Rhythms: デフォルトの連桁のグループ化規則を置き換える > ] |
休符のスタイル
休符には様々なスタイルが使用できます。
\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 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 休符のスタイル ] | [ 上へ : Rhythms ] | [ Rhythms: リズム スラッシュ > ] |
デフォルトの連桁のグループ化規則を置き換える
12/8 拍子で連桁を 3-4-3-2
でグループ化する場合、12/8 におけるデフォルトの連桁規則をオーバライドし、新たな規則を設定する必要があります。
\relative c'' { \time 12/8 % Default beaming a8 a a a a a a a a a a a % Set new values for beam endings \set Score.beatStructure = 3,4,3,2 a8 a a a a a a a a a a a }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: デフォルトの連桁のグループ化規則を置き換える ] | [ 上へ : Rhythms ] | [ Rhythms: 歌詞モードでのスキップ > ] |
リズム スラッシュ
“シンプルな” リード シートでは、実際の音符を書かずに、代わりに“リズム パターン” とコード ネームのみを書き、曲の構造を示すことがあります。これは、曲の構造だけを作成あるいは転写する際や、リード シートをギタリストやジャズ
ミュージシャンに共有する際などに有用です。これを実現するために \repeat percent
を用いるのは不適切です。\repeat percent
では、最初の音符や休符として何かを指定しなければならないからです。次の例では 2 つの解決法を示しています。どちらも通常の休符をスラッシュとして表示するものです。(拍の長さを 4 分音符から変えたい場合は、定義中にある
r4
を適切に変更してください。)
% Macro to print single slash rs = { \once \override Rest.stencil = #ly:percent-repeat-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-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 | } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: リズム スラッシュ ] | [ 上へ : Rhythms ] | [ Rhythms: 歌詞モードでのスキップ (2) > ] |
歌詞モードでのスキップ
s
によるスキップは音符モードや和音モードのみで有効です。歌詞モードなどの他の場合では、\skip
コマンドを使用することが推奨されます。
<< \relative c'' { a1 | a } \new Lyrics \lyricmode { \skip 1 bla1 } >>
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 歌詞モードでのスキップ ] | [ 上へ : Rhythms ] | [ Rhythms: 小符幹 (ステムレット) > ] |
歌詞モードでのスキップ (2)
s
は \lyricmode
では使用できません
(“s” という歌詞が入力されるだけです) が、ダブルクォート (""
)
やアンダースコア (_
) を使用することができます。例:
<< \relative c'' { a4 b c d } \new Lyrics \lyricmode { a4 "" _ gap } >>
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 歌詞モードでのスキップ (2) ] | [ 上へ : Rhythms ] | [ Rhythms: 厳密な拍に基づく連桁 > ] |
小符幹 (ステムレット)
慣習によっては、連桁が休符を含むことが許されます。好みにより、連桁から休符に向かって ’小符幹 (ステムレット)’ を伸ばし、リズムを見やすくする場合があります。現代音楽では、休符自体が省略され小符幹のみが表示される場合もあります。
このスニペットでは伝統的な記譜法からの変遷を示しています。休符を含む連桁、小符幹付きの休符、小符幹のみの順番です。小符幹は Stem
の
stemlet-length
プロパティをオーバライドすることで生成できます。休符は transparent = ##t
によって非表示にします。
異なる記譜を示すために \markup
を用いています。
\paper { ragged-right = ##f } { c'16^\markup { traditional } d' r f' g'16[^\markup { beams over rests } f' r d'] % N.B. use Score.Stem to set for the whole score. \override Staff.Stem.stemlet-length = #0.75 c'16[^\markup { stemlets over rests } d' r f'] g'16[^\markup { stemlets and no rests } f' \once \hide Rest r16 d'] }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 小符幹 (ステムレット) ] | [ 上へ : Rhythms ] | [ Rhythms: 連桁を細分する > ] |
厳密な拍に基づく連桁
16 分音符以下の連桁の向きは、音符が属する拍に基づいて決定することができます。最初の連桁では突き出るものが避けられ (デフォルト)、次の連桁は拍に厳密に従います。
\relative c'' { \time 6/8 a8. a16 a a \set strictBeatBeaming = ##t a8. a16 a a }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 厳密な拍に基づく連桁 ] | [ 上へ : Rhythms ] | [ Rhythms: Tam-tam example > ] |
連桁を細分する
16 分音符 (あるいはそれより短い音符) の連桁は、デフォルトでは細分されません。つまり、3 つ以上の音符全体が分かれることなく平等に連桁で繋がれます。この挙動は、subdivideBeams
プロパティをセットすることで、連桁を細分するように変更することができます。このプロパティがセットされると、連桁が現在の baseMoment
の間隔で細分されて表示されるようになります。分割された後の音符全体の長さが分割長より短い (不完全な連桁) 場合は、連桁の本数は可能な最長分割グループが基になります。しかし、分割された後の音符が 1 つしか存在しない場合、この制限は適用されません。
baseMoment
は、明示的にセットされなければ、現在の拍子記号の分母分の 1 に設定されます。baseMoment
は、このスニペットのように
ly:make-moment
関数を用いて、連桁を分割する単位となる長さを分数で指定する必要があります。また、baseMoment
が変更された場合、beatStructure
も新たな
baseMoment
に合わせて変更する必要があります:
\relative c'' { c32[ c c c c c c c] \set subdivideBeams = ##t c32[ c c c c c c c] % Set beam sub-group length to an eighth note \set baseMoment = #(ly:make-moment 1/8) \set beatStructure = 2,2,2,2 c32[ c c c c c c c] % Set beam sub-group length to a sixteenth note \set baseMoment = #(ly:make-moment 1/16) \set beatStructure = 4,4,4,4 c32[ c c c c c c c] % Shorten beam by 1/32 \set baseMoment = #(ly:make-moment 1/8) \set beatStructure = 2,2,2,2 c32[ c c c c c c] r32 % Shorten beam by 3/32 \set baseMoment = #(ly:make-moment 1/8) \set beatStructure = 2,2,2,2 c32[ c c c c] r16. r2 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 連桁を細分する ] | [ 上へ : Rhythms ] | [ Rhythms: Tambourine example > ] |
Tam-tam example
A tam-tam example, entered with ’tt’
#(define mydrums '((tamtam default #f 0))) \new DrumStaff \with { instrumentName = #"Tamtam" } \drummode { \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) \override Staff.StaffSymbol.line-positions = #'( 0 ) \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) tt 1 \pp \laissezVibrer }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: Tam-tam example ] | [ 上へ : Rhythms ] | [ Rhythms: 3 方向ボックス > ] |
Tambourine example
A tambourine example, entered ’tamb’
\paper { tagline = ##f } #(define mydrums '((tambourine default #f 0))) \new DrumStaff \with { instrumentName = #"Tambourine" } \drummode { \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) \override Staff.StaffSymbol.line-positions = #'( 0 ) \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) \time 6/8 tamb8. 16 8 8 8 8 | tamb4. 8 8 8 | % the trick with the scaled duration and the shorter rest % is neccessary for the correct ending of the trill-span! tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan | }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: Tambourine example ] | [ 上へ : Rhythms ] | [ Rhythms: 括弧に囲まれた拍子記号 > ] |
3 方向ボックス
この例は、テキスト (や他のマークアップ) の周りの 3 方向のみを囲うボックスを作成するマークアップ コマンドを追加する方法を示しています。
% New command to add a three sided box, with sides north, west and south % Based on the box-stencil command defined in scm/stencil.scm % Note that ";;" is used to comment a line in Scheme #(define-public (NWS-box-stencil stencil thickness padding) "Add a box around STENCIL, producing a new stencil." (let* ((x-ext (interval-widen (ly:stencil-extent stencil X) padding)) (y-ext (interval-widen (ly:stencil-extent stencil Y) padding)) (y-rule (make-filled-box-stencil (cons 0 thickness) y-ext)) (x-rule (make-filled-box-stencil (interval-widen x-ext thickness) (cons 0 thickness)))) ;; (set! stencil (ly:stencil-combine-at-edge stencil X 1 y-rule padding)) (set! stencil (ly:stencil-combine-at-edge stencil X LEFT y-rule padding)) (set! stencil (ly:stencil-combine-at-edge stencil Y UP x-rule 0.0)) (set! stencil (ly:stencil-combine-at-edge stencil Y DOWN x-rule 0.0)) stencil)) % The corresponding markup command, based on the \box command defined % in scm/define-markup-commands.scm #(define-markup-command (NWS-box layout props arg) (markup?) #:properties ((thickness 0.1) (font-size 0) (box-padding 0.2)) "Draw a box round @var{arg}. Looks at @code{thickness}, @code{box-padding} and @code{font-size} properties to determine line thickness and padding around the markup." (let ((pad (* (magstep font-size) box-padding)) (m (interpret-markup layout props arg))) (NWS-box-stencil m thickness pad))) % Test it: \relative c' { c1^\markup { \NWS-box ABCD } c1^\markup { \NWS-box \note {4} #1.0 } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 3 方向ボックス ] | [ 上へ : Rhythms ] | [ Rhythms: 括弧に囲まれた拍子記号 - 方法 3 > ] |
括弧に囲まれた拍子記号
拍子記号は括弧で囲むことができます。
\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 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 括弧に囲まれた拍子記号 ] | [ 上へ : Rhythms ] | [ Rhythms: 拍子記号の (分数ではなく) 分子のみを数字で表示する > ] |
括弧に囲まれた拍子記号 - 方法 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 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 括弧に囲まれた拍子記号 - 方法 3 ] | [ 上へ : Rhythms ] | [ Rhythms: 装飾音符のスタイルを調整する > ] |
拍子記号の (分数ではなく) 分子のみを数字で表示する
拍子記号の分数全体を表示せず、分子のみ (今回は 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 }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 拍子記号の (分数ではなく) 分子のみを数字で表示する ] | [ 上へ : Rhythms ] | [ Rhythms: ユーザ定義の拍子記号 > ] |
装飾音符のスタイルを調整する
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 } } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 装飾音符のスタイルを調整する ] | [ 上へ : Rhythms ] | [ Rhythms: 符尾のスタイルを変更する > ] |
ユーザ定義の拍子記号
新たな拍子記号のスタイルを定義することができます。2 小節目の拍子記号はどちらの譜でも上下が逆になっています。
#(add-simple-time-signature-style 'topsy-turvy (lambda (fraction) (make-rotate-markup 180 (make-compound-meter-markup fraction)))) << \new Staff { \time 3/4 f'2. \override Score.TimeSignature.style = #'topsy-turvy \time 3/4 R2. \bar "|." } \new Staff { R2. e'' } >>
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: ユーザ定義の拍子記号 ] | [ 上へ : Rhythms ] | [ Rhythms: 通常の符頭で装飾音符のスラッシュを使用する > ] |
符尾のスタイルを変更する
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 } } }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 符尾のスタイルを変更する ] | [ 上へ : Rhythms ] | [ Rhythms: アルペジオにタイを使用する > ] |
通常の符頭で装飾音符のスラッシュを使用する
アッチャカトゥーラに付加されるスラッシュを、他の場面で使用することができます。
\relative c'' { \override Flag.stroke-style = #"grace" c8( d2) e8( f4) }
[ << Rhythms ] | [トップ][目次] | [ Expressive marks >> ] |
[ < Rhythms: 通常の符頭で装飾音符のスラッシュを使用する ] | [ 上へ : Rhythms ] | [ Expressive marks > ] |
アルペジオにタイを使用する
タイはアルペジオを表記する際にも使われます。この場合、タイの始端となる複数の音符は同時である必要はありません。これは tieWaitForNote
プロパティを #t
にセットすることで実現できます。この機能は例えば、和音のトレモロにタイを繋ぐ場合などに有用ですが、通常の音符に対して用いることもできます。
\relative c' { \set tieWaitForNote = ##t \grace { c16[ ~ e ~ g] ~ } <c, e g>2 \repeat tremolo 8 { c32 ~ c' ~ } <c c,>1 e8 ~ c ~ a ~ f ~ <e' c a f>2 \tieUp c8 ~ a \tieDown \tieDotted g8 ~ c g2 }
[ << Rhythms ] | [トップ][目次] | [ Repeats >> ] |
[ < Rhythms: アルペジオにタイを使用する ] | [ 上へ : Top ] | [ Expressive marks: スラーやタイを連符などと組み合わせる > ] |
Expressive marks
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks ] | [ 上へ : Expressive marks ] | [ Expressive marks: 発想記号や和音の音符に括弧を追加する > ] |
スラーやタイを連符などと組み合わせる
LilyPond の構文は、括弧類の配置に関して特殊であり、入れ子構造にはならない場合があります。例えば、手動連桁を入力する場合、開き角括弧は音符とその長さの前ではなく後に配置しなければなりません。同様に、閉じ角括弧は、連符の途中であったとしても、連桁が終了する音符のすぐ後に配置しなければなりません。このスニペットは、手動連桁、手動スラー、タイ、フレージング スラーを、(波括弧で囲まれた) 連符と組み合わせる方法を示しています。
{ r16[ g16 \tuplet 3/2 { r16 e'8] } g16( a \tuplet 3/2 { b d e') } g8[( a \tuplet 3/2 { b d') e'] ~ } \time 2/4 \tuplet 5/4 { e'32\( a b d' e' } a'4.\) }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: スラーやタイを連符などと組み合わせる ] | [ 上へ : Expressive marks ] | [ Expressive marks: 長いグリッサンドにタイミング マークを追加する > ] |
発想記号や和音の音符に括弧を追加する
\parenthesize
関数は、オブジェクトを括弧で囲む特殊な調整関数です。Grob は Parentheses
になります。
\relative c' { c2-\parenthesize -> \override Parentheses.padding = #0.1 \override Parentheses.font-size = #-4 <d \parenthesize f a>2 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 発想記号や和音の音符に括弧を追加する ] | [ 上へ : Expressive marks ] | [ Expressive marks: fall や doit の形を調整する > ] |
長いグリッサンドにタイミング マークを追加する
長いグリッサンド部分の拍をタイミング マークで表示する場合があります。これは通例符頭が無く符幹だけの音符として表され、この中間部分に発想記号を付け加えることもできます。
符幹がグリッサンドにうまく揃わない場合には、わずかに配置を調整する必要があるかもしれません。
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 | }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 長いグリッサンドにタイミング マークを追加する ] | [ 上へ : Expressive marks ] | [ Expressive marks: Aligning the ends of hairpins to NoteColumn directions > ] |
fall や doit の形を調整する
fall や doit の形を調整するために、
shortest-duration-space
プロパティを変更することができます。
\relative c'' { \override Score.SpacingSpanner.shortest-duration-space = #4.0 c2-\bendAfter #5 c2-\bendAfter #-4.75 c2-\bendAfter #8.5 c2-\bendAfter #-6 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: fall や doit の形を調整する ] | [ 上へ : Expressive marks ] | [ Expressive marks: 二全音符を変更する > ] |
Aligning the ends of hairpins to NoteColumn directions
The ends of hairpins may be aligned to the LEFT
, CENTER
or RIGHT
of NoteColumn
grobs by overriding the property
endpoint-alignments
, which is a pair of numbers representing
the left and right ends of the hairpin. endpoint-alignments
are expected to be directions (either -1, 0 or 1). Other values
will be transformed with a warning. The right end of a hairpin
terminating at a rest is not affected, always ending at the left edge
of the rest.
{ c'2\< <c' d'>\! | \override Hairpin.endpoint-alignments = #'(1 . -1) c'2\< <c' d'>\! | \override Hairpin.endpoint-alignments = #`(,LEFT . ,CENTER) c'2\< <c' d'>\! | }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: Aligning the ends of hairpins to NoteColumn directions ] | [ 上へ : Expressive marks ] | [ Expressive marks: 非対称なスラー > ] |
二全音符を変更する
二全音符の表示を、符頭の左右に線が 1 本あるバロック式の表示から、2 本あるものに変更することができます。
\relative c'' { \time 4/2 c\breve | \override Staff.NoteHead.style = #'altdefault b\breve \override Staff.NoteHead.style = #'baroque b\breve \revert Staff.NoteHead.style a\breve }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 二全音符を変更する ] | [ 上へ : Expressive marks ] | [ Expressive marks: ブレス記号 > ] |
非対称なスラー
音符の流れが対象的な形をしていない場合、それに合わせてスラーを非対称にすることができます。
slurNotes = { d,8( a' d f a f' d, a) } \relative c' { \stemDown \slurUp \slurNotes \once \override Slur.eccentricity = #3.0 \slurNotes }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 非対称なスラー ] | [ 上へ : Expressive marks ] | [ Expressive marks: 一部が隠されたクレッシェンドのヘアピン > ] |
ブレス記号
ブレス記号にはいくつかの図形を設定できます: カンマ (デフォルト), ティック (斜め線), V字, “線路記号” (カエスーラ) です。
\new Staff \relative c'' { \key es \major \time 3/4 % this bar contains no \breathe << { g4 as g } \\ { es4 bes es } >> | % Modern notation: % by default, \breathe uses the rcomma, just as if saying: % \override BreathingSign.text = % #(make-musicglyph-markup "scripts.rcomma") << { g4 as g } \\ { es4 \breathe bes es } >> | % rvarcomma and lvarcomma are variations of the default rcomma % and lcomma % N.B.: must use Staff context here, since we start a Voice below \override Staff.BreathingSign.text = \markup { \musicglyph "scripts.rvarcomma" } << { g4 as g } \\ { es4 \breathe bes es } >> | % raltcomma and laltcomma are alternative variations of the % default rcomma and lcomma \override Staff.BreathingSign.text = \markup { \musicglyph "scripts.raltcomma" } << { g4 as g } \\ { es4 \breathe bes es } >> | % vee \override BreathingSign.text = \markup { \musicglyph "scripts.upbow" } es8[ d es f g] \breathe f | % caesura \override BreathingSign.text = \markup { \musicglyph "scripts.caesura.curved" } es8[ d] \breathe es[ f g f] | es2 r4 \bar "||" }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: ブレス記号 ] | [ 上へ : Expressive marks ] | [ Expressive marks: フェルマータの付いたカエスーラ ("線路記号") > ] |
一部が隠されたクレッシェンドのヘアピン
クレッシェンドのヘアピンの一部を非表示にするには、白い長方形を対応する部分の上から描画します。長方形は、テキスト マークアップの内部で PostScript コードとして定義します。
マークアップ コマンド with-dimensions
は、スペーシングの際に
(訳注: y 軸方向のバウンディングボックスを #'(0 . 0)
にすることで)
長方形の下端部分のみが考慮されるようにし、staff-padding
プロパティは、長方形がヘアピンと譜の間に配置されないようにしています。
ヘアピンが長方形によって隠されるために、ヘアピンのレイヤをテキスト マークアップよりも低く設定してください。
\relative c' { << { \dynamicUp r2 r16 c'8.\pp r4 } \\ { \override DynamicLineSpanner.layer = #0 des,2\mf\< ~ \override TextScript.layer = #2 \once\override TextScript.staff-padding = #6 \once\override TextScript.vertical-skylines = #'() des16_\markup \with-dimensions #'(2 . 7) #'(0 . 0) \with-color #white \filled-box #'(2 . 7) #'(0 . 2) #0 r8. des4 ~ des16->\sff r8. } >> }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 一部が隠されたクレッシェンドのヘアピン ] | [ 上へ : Expressive marks ] | [ Expressive marks: ヘアピンの下にテキストを中央揃えする > ] |
フェルマータの付いたカエスーラ ("線路記号")
カエスーラは上にフェルマータの付いた二重の “線路記号” として表記される場合があります。このスニペットは、視覚的に良い線路記号とフェルマータの組み合わせ方を示しています。
\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 "|." }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: フェルマータの付いたカエスーラ ("線路記号") ] | [ 上へ : Expressive marks ] | [ Expressive marks: テキストによる強弱記号のテキストとスパナのスタイルを変更する > ] |
ヘアピンの下にテキストを中央揃えする
この例はヘアピンの (デ) クレッシェンドの下に “molto” や “poco” のようなテキストを追加する機能を提供しています。テキストの向きは、ヘアピンの向きに応じて変更されます。ヘアピンは DynamicText に揃えられます。
この例は Scheme コードを用いて、オブジェクトが通常どのように表示されるかを変更する方法も示しています。
\paper { tagline = ##f } hairpinWithCenteredText = #(define-music-function (text) (markup?) #{ \once \override Voice.Hairpin.after-line-breaking = #(lambda (grob) (let* ((stencil (ly:hairpin::print grob)) (par-y (ly:grob-parent grob Y)) (dir (ly:grob-property par-y 'direction)) (staff-line-thickness (ly:output-def-lookup (ly:grob-layout grob) 'line-thickness)) (new-stencil (ly:stencil-aligned-to (ly:stencil-combine-at-edge (ly:stencil-aligned-to stencil X CENTER) Y dir (ly:stencil-aligned-to (grob-interpret-markup grob (make-fontsize-markup (magnification->font-size (+ (ly:staff-symbol-staff-space grob) (/ staff-line-thickness 2))) text)) X CENTER)) X LEFT)) (staff-space (ly:output-def-lookup (ly:grob-layout grob) 'staff-space)) (par-x (ly:grob-parent grob X)) (dyn-text (grob::has-interface par-x 'dynamic-text-interface)) (dyn-text-stencil-x-length (if dyn-text (interval-length (ly:stencil-extent (ly:grob-property par-x 'stencil) X)) 0)) (x-shift (if dyn-text (- (+ staff-space dyn-text-stencil-x-length) (* 0.5 staff-line-thickness)) 0))) (ly:grob-set-property! grob 'Y-offset 0) (ly:grob-set-property! grob 'stencil (ly:stencil-translate-axis new-stencil x-shift X)))) #}) hairpinMolto = \hairpinWithCenteredText \markup { \italic molto } hairpinMore = \hairpinWithCenteredText \markup { \larger moltissimo } \layout { ragged-right = ##f } \relative c' { \hairpinMolto c2\< c\f \hairpinMore c2\ppppp\< c\f \break \hairpinMolto c2^\< c\f \hairpinMore c2\ppppp\< c\f }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: ヘアピンの下にテキストを中央揃えする ] | [ 上へ : Expressive marks ] | [ Expressive marks: スラーを実線から点線や破線に変更する > ] |
テキストによる強弱記号のテキストとスパナのスタイルを変更する
クレッシェンドやデクレッシェンドに使われるテキストは 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 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: テキストによる強弱記号のテキストとスパナのスタイルを変更する ] | [ 上へ : Expressive marks ] | [ Expressive marks: ブレス記号を変更する > ] |
スラーを実線から点線や破線に変更する
スラーの見た目を実線から点線や破線に変更することができます。
\relative c' { c4( d e c) \slurDotted c4( d e c) \slurSolid c4( d e c) \slurDashed c4( d e c) \slurSolid c4( d e c) }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: スラーを実線から点線や破線に変更する ] | [ 上へ : Expressive marks ] | [ Expressive marks: 音符ごとに付点の数を独立して変更する > ] |
ブレス記号を変更する
ブレス記号のグリフは BreathingSign
レイアウト オブジェクトの
text
プロパティをオーバライドすることで、任意のマークアップ
テキストに変更することができます。
\relative c'' { c2 \override BreathingSign.text = \markup { \musicglyph "scripts.rvarcomma" } \breathe d2 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: ブレス記号を変更する ] | [ 上へ : Expressive marks ] | [ Expressive marks: 強弱記号をマークアップ テキストと結合する > ] |
音符ごとに付点の数を独立して変更する
音符ごとに、入力したドットの数とは独立して付点の数を変更することができます。
\relative c' { c4.. a16 r2 | \override Dots.dot-count = #4 c4.. a16 r2 | \override Dots.dot-count = #0 c4.. a16 r2 | \revert Dots.dot-count c4.. a16 r2 | }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 音符ごとに付点の数を独立して変更する ] | [ 上へ : Expressive marks ] | [ Expressive marks: 現代のグリッサンド > ] |
強弱記号をマークアップ テキストと結合する
強弱記号の中には、テキスト表示を含むものがあります (“più forte” や
“piano subito” など)。これらは \markup
コマンドで作り出すことができます。
piuF = \markup { \italic più \dynamic f } \layout { ragged-right = ##f } \relative c'' { c2\f c-\piuF }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 強弱記号をマークアップ テキストと結合する ] | [ 上へ : Expressive marks ] | [ Expressive marks: 改行後のスパナの可視性をコントロールする > ] |
現代のグリッサンド
終端の音符が存在しない現代のグリッサンドは、不可視の音符とカデンツァを使用することで作ることができます。
\relative c'' { \time 3/4 \override Glissando.style = #'zigzag c4 c \cadenzaOn c4\glissando \hideNotes c,,4 \unHideNotes \cadenzaOff \bar "|" }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 現代のグリッサンド ] | [ 上へ : Expressive marks ] | [ Expressive marks: スクリプトの縦方向の優先順位をコントロールする > ] |
改行後のスパナの可視性をコントロールする
改行のすぐ後の音符で終了するスパナの可視性は、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 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 改行後のスパナの可視性をコントロールする ] | [ 上へ : Expressive marks ] | [ Expressive marks: 遅れターンを作成する > ] |
スクリプトの縦方向の優先順位をコントロールする
スクリプト (音符に付加する記号) の縦方向の優先順位は、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 } }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: スクリプトの縦方向の優先順位をコントロールする ] | [ 上へ : Expressive marks ] | [ Expressive marks: 異なるボイスにまたがるアルペジオを作成する > ] |
遅れターンを作成する
下の音符が臨時記号を持つような遅れターンを作るには、いくつかのオーバライドが必要です。outside-staff-priority
プロパティを #f
にセットしなければ、avoid-slur
プロパティよりも優先されてしまい、スラーの内側に記号が入りません。分数 2/3
と 1/3
は、水平位置を調整しています。
\relative c'' { \after 2*2/3 \turn c2( d4) r | \after 4 \turn c4.( d8) \after 4 { \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 \once \hideNotes cis8\turn \noBeam } d4.( e8) }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 遅れターンを作成する ] | [ 上へ : Expressive marks ] | [ Expressive marks: ピアノ譜で譜をまたがるアルペジオを作成する > ] |
異なるボイスにまたがるアルペジオを作成する
Staff
コンテキストに Span_arpeggio_engraver
が追加された場合、アルペジオは同じ譜にある異なるボイスにまたがって表示されます。
\new Staff \with { \consists "Span_arpeggio_engraver" } \relative c' { \set Staff.connectArpeggios = ##t << { <e' g>4\arpeggio <d f> <d f>2 } \\ { <d, f>2\arpeggio <g b>2 } >> }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 異なるボイスにまたがるアルペジオを作成する ] | [ 上へ : Expressive marks ] | [ Expressive marks: 他のコンテキストで譜をまたがるアルペジオを作成する > ] |
ピアノ譜で譜をまたがるアルペジオを作成する
PianoStaff
内では、PianoStaff.connectArpeggios
プロパティをセットすることで、譜をまたがるアルペジオを作成することができます。
\new PianoStaff \relative c'' << \set PianoStaff.connectArpeggios = ##t \new Staff { <c e g c>4\arpeggio <g c e g>4\arpeggio <e g c e>4\arpeggio <c e g c>4\arpeggio } \new Staff { \clef bass \repeat unfold 4 { <c,, e g c>4\arpeggio } } >>
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: ピアノ譜で譜をまたがるアルペジオを作成する ] | [ 上へ : Expressive marks ] | [ Expressive marks: 2 桁の運指記号を作成する > ] |
他のコンテキストで譜をまたがるアルペジオを作成する
譜をまたがるアルペジオは Span_arpeggio_engraver
が Score
コンテキストに追加されていれば、GrandStaff
, PianoStaff
, StaffGroup
以外にも作成することができます。
\score { \new ChoirStaff { \set Score.connectArpeggios = ##t << \new Voice \relative c' { <c e>2\arpeggio <d f>2\arpeggio <c e>1\arpeggio } \new Voice \relative c { \clef bass <c g'>2\arpeggio <b g'>2\arpeggio <c g'>1\arpeggio } >> } \layout { \context { \Score \consists "Span_arpeggio_engraver" } } }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 他のコンテキストで譜をまたがるアルペジオを作成する ] | [ 上へ : Expressive marks ] | [ Expressive marks: "本当の"括弧付きの強弱記号を作成する > ] |
2 桁の運指記号を作成する
5 よりも大きな運指記号を作成することができます。
\relative c' { c1-10 c1-50 c1-36 c1-29 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 2 桁の運指記号を作成する ] | [ 上へ : Expressive marks ] | [ Expressive marks: ボイスをまたがるスラーを作成する > ] |
"本当の"括弧付きの強弱記号を作成する
強弱記号に括弧を追加する一番簡単な方法は、\markup
ブロックを使用することですが、この方法には欠点があります: このように作成されたオブジェクトは、強弱記号ではなくテキスト マークアップとして振る舞うということです。
しかしながら、(記譜法リファレンスで説明しているように)
make-dynamic-script
関数と共に
Scheme コードを用いることで、似たようなオブジェクトを作り出すことができます。このように作成された記号は強弱記号として振る舞い、\dynamicUp
や
\dynamicDown
といったコマンドと互換性を保ちます。
paren = #(define-event-function (dyn) (ly:event?) (make-dynamic-script #{ \markup \concat { \normal-text \italic \fontsize #2 ( \pad-x #0.2 #(ly:music-property dyn 'text) \normal-text \italic \fontsize #2 ) } #})) \relative c'' { c4\paren\f c c \dynamicUp c\paren\p }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: "本当の"括弧付きの強弱記号を作成する ] | [ 上へ : Expressive marks ] | [ Expressive marks: テキスト スパナを作成する > ] |
ボイスをまたがるスラーを作成する
異なるボイスを繋ぐスラーを作成しなければならない場合があります。
解決法は、\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) } >> }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: ボイスをまたがるスラーを作成する ] | [ 上へ : Expressive marks ] | [ Expressive marks: 強弱記号のカスタム テキスト スパナ後置関数 > ] |
テキスト スパナを作成する
\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 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: テキスト スパナを作成する ] | [ 上へ : Expressive marks ] | [ Expressive marks: 強弱記号のテキスト スパナ音楽関数 > ] |
強弱記号のカスタム テキスト スパナ後置関数
これは、クレッシェンドのテキスト スパナをカスタマイズする後置関数です。スパナは小節の最初の音符から始めるべきです。-\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 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 強弱記号のカスタム テキスト スパナ後置関数 ] | [ 上へ : Expressive marks ] | [ Expressive marks: Grob をスキップするグリッサンド > ] |
強弱記号のテキスト スパナ音楽関数
カスタム テキスト スパナを定義することができ、ヘアピンやテキスト
クレッシェンドと同時に用いることができます。\<
と \>
はデフォルトでヘアピンを作り出し、\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\! }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 強弱記号のテキスト スパナ音楽関数 ] | [ 上へ : Expressive marks ] | [ Expressive marks: 異なるライン スタイルのヘアピン > ] |
Grob をスキップするグリッサンド
NoteColumn
Grob をグリッサンドが飛び越すように設定することができます。
\relative c' { a2 \glissando \once \override NoteColumn.glissando-skip = ##t f''4 d, }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: Grob をスキップするグリッサンド ] | [ 上へ : Expressive marks ] | [ Expressive marks: テキスト強弱記号の線を隠す > ] |
異なるライン スタイルのヘアピン
ヘアピンには 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\! }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 異なるライン スタイルのヘアピン ] | [ 上へ : Expressive marks ] | [ Expressive marks: カスタム強弱記号を水平方向に揃える ("sempre pp" "piu f" "subito p" など) > ] |
テキスト強弱記号の線を隠す
(cresc. や dim. のような) 強弱を変更するテキストは、その範囲を破線で示しています。次のようにしてこの線を表示しないようにすることができます。
\relative c'' { \override DynamicTextSpanner.style = #'none \crescTextCresc c1\< | d | b | c\! }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: テキスト強弱記号の線を隠す ] | [ 上へ : Expressive marks ] | [ Expressive marks: カエスーラを挿入する > ] |
カスタム強弱記号を水平方向に揃える ("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 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: カスタム強弱記号を水平方向に揃える ("sempre pp" "piu f" "subito p" など) ] | [ 上へ : Expressive marks ] | [ Expressive marks: レセ ヴィブレのタイ > ] |
カエスーラを挿入する
カエスーラ記号は 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 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: カエスーラを挿入する ] | [ 上へ : Expressive marks ] | [ Expressive marks: 矢印 > ] |
レセ ヴィブレのタイ
レセ ヴィブレのタイの大きさは固定されています。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 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: レセ ヴィブレのタイ ] | [ 上へ : Expressive marks ] | [ Expressive marks: 複雑な破線のスラーを作成する > ] |
矢印
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 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 矢印 ] | [ 上へ : Expressive marks ] | [ Expressive marks: アーティキュレーションの省略記法のデフォルト値を書き換える > ] |
複雑な破線のスラーを作成する
dash-definition
プロパティをセットすることで、スラーに複雑な破線パターンを追加することができます。dash-definition
は
dash-element
のリストになっています。dash-element
はスラーの各部分に対する破線パターンのパラメータ リストです。
スラーはベジエ曲線の媒介変数 t (左端が 0, 右端が 1) の関数として定義されます。dash-element
は、(start-t stop-t dash-fraction dash-period)
のリストになっています。start-t
から stop-t
までの範囲が、dash-period
の長さにつき dash-fraction
が黒になるような破線となります。dash-period
は譜スペースの単位です。dash-fraction
を 1 にすると実線のスラーになります。
\relative c' { \once \override Slur.dash-definition = #'((0 0.3 0.1 0.75) (0.3 0.6 1 1) (0.65 1.0 0.4 0.75)) c4( d e f) \once \override Slur.dash-definition = #'((0 0.25 1 1) (0.3 0.7 0.4 0.75) (0.75 1.0 1 1)) c4( d e f) }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 複雑な破線のスラーを作成する ] | [ 上へ : Expressive marks ] | [ Expressive marks: スラーの縦方向の位置を移動する > ] |
アーティキュレーションの省略記法のデフォルト値を書き換える
アーティキュレーションの省略記法は ly/script-init.ly
に定義されており、変数 dashHat
, dashPlus
, dashDash
,
dashBang
, dashLarger
, dashDot
,
dashUnderscore
にデフォルト設定がセットされています。これらを変更することができます。この例では、dashPlus
変数に
trill
をセットすることで、-+
を入力した際にデフォルトの + 記号の代わりにトリル記号が表示されるようにしています。
\relative c'' { c1-+ } dashPlus = \trill \relative c'' { c1-+ }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: アーティキュレーションの省略記法のデフォルト値を書き換える ] | [ 上へ : Expressive marks ] | [ Expressive marks: ヘアピンの端点を移動する > ] |
スラーの縦方向の位置を移動する
スラーの縦方向の位置は 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) }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: スラーの縦方向の位置を移動する ] | [ 上へ : Expressive marks ] | [ Expressive marks: アルペジオの配置 > ] |
ヘアピンの端点を移動する
ヘアピンの端点は Hairpin
オブジェクトの shorten-pair
をセットすることで移動できます。正の値は端点を右に移動し、負の値は左に移動します。minimum-length
プロパティとは異なり、このプロパティはヘアピンのみの見た目に影響します。水平方向のスペーシングには影響しません
(始点や終点にある強弱記号もです)。そのため、この方法はヘアピンを割り当てられた領域の中で微調整するのに適しています。
{ c'1~\< c'2~ c'\! \once \override Hairpin.shorten-pair = #'(2 . 2) c'1~\< c'2~ c'\! \once \override Hairpin.shorten-pair = #'(-2 . -2) c'1~\< c'2~ c'\! c'1~\p-\tweak shorten-pair #'(2 . 0)\< c'2~ c'\ffff }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: ヘアピンの端点を移動する ] | [ 上へ : Expressive marks ] | [ Expressive marks: テキスト マークアップをスラーの内側に配置する > ] |
アルペジオの配置
アルペジオの長さを変更したい場合、上端と下端の位置を独立に変更することができます。
\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 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: アルペジオの配置 ] | [ 上へ : Expressive marks ] | [ Expressive marks: ヘアピンを様々なスタイルで表示する > ] |
テキスト マークアップをスラーの内側に配置する
テキスト マークアップをスラーの内側に配置するには、outside-staff-priority
プロパティを #f
に設定する必要があります。
\relative c'' { \override TextScript.avoid-slur = #'inside \override TextScript.outside-staff-priority = ##f c2(^\markup { \halign #-10 \natural } d4.) c8 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: テキスト マークアップをスラーの内側に配置する ] | [ 上へ : Expressive marks ] | [ Expressive marks: ヘアピンの表示に al niente 記譜法を用いる > ] |
ヘアピンを様々なスタイルで表示する
ヘアピン強弱記号は様々なスタイルで作成できます。
\relative c'' { \override Hairpin.stencil = #flared-hairpin a4\< a a a\f a4\p\< a a a\ff a4\sfz\< a a a\! \override Hairpin.stencil = #constante-hairpin a4\< a a a\f a4\p\< a a a\ff a4\sfz\< a a a\! \override Hairpin.stencil = #flared-hairpin a4\> a a a\f a4\p\> a a a\ff a4\sfz\> a a a\! \override Hairpin.stencil = #constante-hairpin a4\> a a a\f a4\p\> a a a\ff a4\sfz\> a a a\! }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: ヘアピンを様々なスタイルで表示する ] | [ 上へ : Expressive marks ] | [ Expressive marks: メトロノーム記号やリハーサル記号を譜の下に表示する > ] |
ヘアピンの表示に al niente 記譜法を用いる
ヘアピン強弱記号は、Hairpin
オブジェクトの circled-tip
プロパティを #t
にセットすることで、端に丸を付けて (“al niente” 記譜法) 表示することができます。
\relative c'' { \override Hairpin.circled-tip = ##t c2\< c\! c4\> c\< c2\! }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: ヘアピンの表示に al niente 記譜法を用いる ] | [ 上へ : Expressive marks ] | [ Expressive marks: 小節線にぶつかるヘアピンの挙動を設定する > ] |
メトロノーム記号やリハーサル記号を譜の下に表示する
デフォルトでは、メトロノーム記号やリハーサル記号は譜の上に表示されます。これらを譜の下に表示するには、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 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: メトロノーム記号やリハーサル記号を譜の下に表示する ] | [ 上へ : Expressive marks ] | [ Expressive marks: ヘアピンの最小長さをセットする > ] |
小節線にぶつかるヘアピンの挙動を設定する
ヘアピンの終端となる音符が強拍にある場合、ヘアピンはその前にある小節線の直前が終端となります。この挙動は to-barline
プロパティをオーバライドすることで調整できます。
\relative c'' { e4\< e2. e1\! \override Hairpin.to-barline = ##f e4\< e2. e1\! }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 小節線にぶつかるヘアピンの挙動を設定する ] | [ 上へ : Expressive marks ] | [ Expressive marks: 同じアーティキュレーションを音符や和音の上と下の両方に表示する > ] |
ヘアピンの最小長さをセットする
ヘアピンが短すぎる場合、Hairpin
オブジェクトの minimum-length
プロパティを変更することで長くすることができます。
<< { \after 4 \< \after 2 \> \after 2. \! f'1 \override Hairpin.minimum-length = #8 \after 4 \< \after 2 \> \after 2. \! f'1 } { \repeat unfold 8 c'4 } >>
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: ヘアピンの最小長さをセットする ] | [ 上へ : Expressive marks ] | [ Expressive marks: スナップ ピッツィカートあるいはバルトーク ピッツィカート > ] |
同じアーティキュレーションを音符や和音の上と下の両方に表示する
デフォルトでは、LilyPond は同じアーティキュレーション
(例えばアクセント、フェルマータ、フラジョレットなど) を音符の上と下に表示することを認めていません。例えば、c4_\fermata^\fermata
では、フェルマータが音符の下のみに表示され、上に表示するよう指定したフェルマータは無視されます。しかし、和音表記を用いてその内部にアーティキュレーションを配置すると、(運指記号と同じように)
アーティキュレーションを好きなだけ表示することができます。このアプローチでは符幹を無視し、アーティキュレーションを符頭との相対位置で配置します。これはこのスニペットのフラジョレットに見られます。和音外に配置されるアーティキュレーションと同じ挙動を得るには、add-stem-support
が必要となります。そのため、解決策は音符を和音として表記し、<...>
の中にアーティキュレーションを追加することです。
向きは常に上向きですが、\tweak
によって変更することができます:
<c-\tweak direction #DOWN-\fermata^\fermata>
\relative c' { <>^"Wrong" c2_\fermata^\fermata % The second fermata is ignored! <e d'>2^\flageolet_\flageolet \stopStaff s1 \startStaff <>^"Works if written inside a chord" <e_\flageolet d'^\flageolet>2 <e_\flageolet d'^\flageolet>2 <e_\flageolet^\flageolet>2 <e_\fermata^\fermata>2 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: 同じアーティキュレーションを音符や和音の上と下の両方に表示する ] | [ 上へ : Expressive marks ] | [ Expressive marks: ブレス記号にチェックを使用する > ] |
スナップ ピッツィカートあるいはバルトーク ピッツィカート
スナップ ピッツィカート (“バルトーク ピッツィカート”とも呼ばれます) は、“弦を指板と垂直に強く引っ張って離して弦を指板にぶつけること” (Wikipedia) です。これは円とその中央から上に突き出す線の記号によって表します。
\relative c' { c4\snappizzicato <c' e g>4\snappizzicato <c' e g>4^\snappizzicato <c, e g>4_\snappizzicato }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: スナップ ピッツィカートあるいはバルトーク ピッツィカート ] | [ 上へ : Expressive marks ] | [ Expressive marks: ディビジを見やすくするために arpeggioBracket を使用する > ] |
ブレス記号にチェックを使用する
歌曲や管楽では、ブレス記号によくチェック マークを使用します。これはコンマ記号で示すように短い間を挿入するものではなく、マークの前にある音符を少しだけ短くすることでブレスを行います。マークを譜から離すために、上方向に少し移動しています。
\relative c'' { c2 \breathe d2 \override BreathingSign.Y-offset = #2.6 \override BreathingSign.text = \markup { \musicglyph "scripts.tickmark" } c2 \breathe d2 }
[ << Expressive marks ] | [トップ][目次] | [ Repeats >> ] |
[ < Expressive marks: ブレス記号にチェックを使用する ] | [ 上へ : Expressive marks ] | [ Expressive marks: 和音のレガートに 2 つのスラーを使用する > ] |
ディビジを見やすくするために arpeggioBracket を使用する
符幹が存在しないため情報がない場合に、ボイスの分割を arpeggioBracket
で表すことができます。これは合唱曲によく見られます。
\include "english.ly" \score { \relative c'' { \key a \major \time 2/2 << \new Voice = "upper" << { \voiceOne \arpeggioBracket a2( b2 <b d>1\arpeggio) <cs e>\arpeggio ~ <cs e>4 } \addlyrics { \lyricmode { A -- men. } } >> \new Voice = "lower" { \voiceTwo a1 ~ a a ~ a4 \bar "|." }