Lilypond 共通テンプレート

alchemical_template.ly Lilypond コード (2.12.0)

コードの解説

 バージョン指定と紙サイズ指定。紙は A4 を一番よく使うので、これをデフォルトとしておく。

\version "2.12.0"

%  紙のサイズ(別ファイルの方がよいかも?)
\paper {
  #(set-paper-size "a4")
  top-margin = 0.5 \cm
  bottom-margin = 1 \cm
  left-margin = 2 \cm
  line-width = 17 \cm
}

 \layout ブロック。ここでは、ダイナミクス・テキストを書くための仮想譜表 MyDynamics を定義して、PianoStaffScoreに入れられるようにしている。オーケストラのスコアに時々出てくる "general nuance" (オネゲルがよく使うやつ)もこれで書ける。

初出時には「ピアノ譜のダイナミクスを両手の真ん中に高さを揃えて書くとき、テンポや表情記号の指定を音楽本体と別にまとめて書くときに使う」と書いていたのだが、2.12 で仕様が変わりあまりうまくいかないので、ピアノ譜のダイナミクスは右手パートにくっつけることにした。

%  コンテキストの定義など
\layout {
  % MyDynamics: ダイナミクス、テキストを書くための仮想譜表
  \context {
    \type "Engraver_group"
    \name MyDynamics
    \alias Voice
    \consists "Output_property_engraver"
    \override VerticalAxisGroup #'minimum-Y-extent = #'(-1 . 1)
    \consists "Script_engraver"
    \consists "New_dynamic_engraver"
    \consists "Dynamic_align_engraver"
    \consists "Text_engraver"
    % 高さを調整する。音符_\markup でテキストなどを書くと下に寄って
    % しまうので、extra-offset で微調整する。
    \override TextScript #'extra-offset = #'(0 . 1.5)
    \override DynamicText #'extra-offset = #'(0 . 2.5)
    \override Hairpin #'extra-offset = #'(0 . 2.5)
    \consists "Skip_event_swallow_translator"
    \consists "Axis_group_engraver"
  }
  % \Score, \PianoStaff に MyDynamics が入れられるようにする
  \context {
    \Score
    \accepts MyDynamics
  }
  \context {
    \PianoStaff
    \accepts MyDynamics
  }
}

 Scheme 関数の定義。\overrideはどうしても煩雑になるので、もう少し見やすくするためのもの。#(myFuncName arg1 arg2 ...) として使う。(あんまり見やすくなってないかも。)

%  Scheme 関数の定義。
% #(myPianoStaffDistance 10) など。
% '#' の置き場所に注意。#(...) では (...) が Scheme 式になるので、上の例で
% 10 の前には # は不要。

%  PianoStaff の譜表の間隔を変える(デフォルトは 12)
%  Version 2.12 から forced-distance は無くなった。Staff ごとに myMinimumVerticalExtent を使う。
% #(define (myPianoStaffDistance a)
%  (ly:export
%    #{ \override PianoStaff.VerticalAlignment #'forced-distance = $a #}))

%  Staff のサイズを変える
#(define (myStaffSize a)
  (ly:export
    #{ \set Staff.fontSize = $a
       \override Staff.StaffSymbol #'staff-space = #(magstep $a)
       \override Staff.StaffSymbol #'thickness = #(magstep $a)
    #}))

%  Staff の縦方向の幅を指定する。通常 bottom は負、top は正の値。
% デフォルトは (-4 4)
#(define (myMinimumVerticalExtent bottom top)
  (ly:export
    #{ \override Staff.VerticalAxisGroup #'minimum-Y-extent
       = #`(,$bottom . ,$top) #}))

%  ダイナミクステキスト、ヘアピン (> など) に一様なオフセットをかける。
#(define (myDynamicsOffset horiz vert)
  (ly:export
    #{ \override Staff.DynamicText #'extra-offset
       = #`(,$horiz . ,$vert)
       \override Staff.Hairpin #'extra-offset
       = #`(,$horiz . ,$vert)
       \override Staff.TextScript #'extra-offset
       = #`(,$horiz . ,$vert) #}))

%  ダイナミクスの縦方向のベースラインを決める。
#(define (myDynamicsBase yoffset)
  (ly:export
    #{ \override DynamicLineSpanner #'Y-offset = $yoffset #}))

(2006/07/28 作成)

(2009/02/21 2.12 用に改訂)