-\version "2.7.39"
+%{
+ Shortcuts common for all styles of gregorian chant notation.
+ $Id$
+%}
-%%%%%%%%
-%%%%%%%% shortcuts common for all styles of gregorian chant notation
-%%%%%%%%
+\version "2.10.0"
%
-% declare head prefix shortcuts
+% Declare memorable shortcuts for special unicode characters
+% that are used in chant notation.
+%
+
+% unicode 0132 (latin capital ligature IJ)
+IJ = \lyricmode { IJ }
+IIJ = \lyricmode { IIJ }
+
+% unicode 0133 (latin small ligature ij)
+ij = \lyricmode { ij }
+iij = \lyricmode { iij }
+
+%
+% Given some music that represents lyrics, add a prefix to the first
+% lyric event.
+%
+% TODO: Robustify this function. For example, this function works
+% correctly for "\versus { some lyrics }", but it barfs with a wrong type
+% argument error for e.g. "\versus some lyrics".
+%
+#(define (add-prefix-to-lyrics prefix music)
+ (make-music
+ 'SequentialMusic
+ 'elements (append
+ (cons
+ (let* ((elems (car (ly:music-property music 'elements)))
+ (props (ly:music-mutable-properties elems))
+ (events (filter (lambda (x)
+ (equal? (car x) 'elements))
+ props))
+ (first-evt (cadar events))
+ (first-syllable (ly:prob-property first-evt 'text))
+ (first-duration (ly:prob-property first-evt 'duration)))
+ (make-music
+ 'LyricEvent
+ 'duration first-duration
+ 'text (string-append prefix first-syllable)))
+ (cdr (ly:music-property music 'elements))))))
+
+% Add unicode 2123 (versicle) as prefix to lyrics.
+versus =
+#(define-music-function (parser location music) (ly:music?)
+ (add-prefix-to-lyrics "℣" music))
+
+% Add unicode 211F (response) as prefix to lyrics.
+responsum =
+#(define-music-function (parser location music) (ly:music?)
+ (add-prefix-to-lyrics "℟" music))
+
+%
+% Declare head prefix shortcuts.
%
virga =
\once \override NoteHead #'virga = ##t
\once \override NoteHead #'cavum = ##t
%
-% declare divisiones shortcuts
+% Declare divisiones shortcuts.
%
virgula = {
\once \override BreathingSign #'text = #(make-musicglyph-markup "scripts.rcomma")
\breathe
}
-augmentum = {
- %%% TODO: A ligature head postfix that indicates that an
- %%% augmentum dot should be appended to the right end of
- %%% the surrounding ligature. [Not yet implemented.]
-}
-
%
-% declare articulation shortcuts
+% Declare articulation shortcuts.
%
accentus = #(make-articulation "accentus")
ictus = #(make-articulation "ictus")
semicirculus = #(make-articulation "semicirculus")
circulus = #(make-articulation "circulus")
-episemInitium = #(make-span-event 'TextSpanEvent START)
-episemFinis = #(make-span-event 'TextSpanEvent STOP)
+episemInitium = \startTextSpan
+episemFinis = \stopTextSpan
+
+%
+% \augmentum increases the dot-count value of all note heads to which
+% it is applied by one.
+%
+augmentum =
+#(define-music-function (parser location expr) (ly:music?)
+ (shift-duration-log expr 0 1))
%
-% shortcut music functions for Liber Hymnarius neumes table
-% (experimental)
+% Declare shortcut music functions for Liber Hymnarius neumes
+% table (experimental).
%
#(define (make-ligature music)
% 'LigatureStopEvent))))
%climacus = #(def-climacus-function startSequentialMusic stopSequentialMusic)
+%
+% Declare default layout; here for Vaticana style. In case there will
+% be additional styles, we may want to create style-specific .ly files
+% for inclusion (e.g. vaticana-init.ly), move the style-dependent stuff
+% over there, leave the style-independent Gregorian stuff here, and let
+% the style-specific file (vaticana-init.ly) include this file. The
+% user then will have to include vaticana-init.ly instead of
+% gregorian-init.ly.
+%
\layout {
indent = 0.0
packed = ##t
%%% causes tons of "programming error: adding reverse spring,
%%% setting to unit" messages.
%%%
+ %\override SpacingSpanner #'base-shortest-duration = #(ly:make-moment 1 4)
%\override SpacingSpanner #'shortest-duration-space = #0
%\override SpacingSpanner #'average-spacing-wishes = ##f
%\override SpacingSpanner #'spacing-increment = #0.0
}
%
-% example layout block for gregorian chant notation
+% neumeDemoLayout defines a layout block suitable for notating pure
+% Vaticana style neumes without any other notation symbols such as
+% staff lines or clefs. This layout is useful for engraving neumes
+% tables, such as that one in the lilypond manual section on
+% Gregorian ligatures, or for educational works.
%
-
neumeDemoLayout = \layout {
interscoreline = 1
\context {
\override StaffSymbol #'transparent = ##t
\remove "Time_signature_engraver"
\remove "Bar_engraver"
- minimumVerticalExtent = ##f
+ \override VerticalAxisGroup #'minimum-Y-extent = ##f
}
\context {
\Voice
\override Stem #'transparent = ##t
}
}
+
+%%% Local Variables:
+%%% coding: utf-8
+%%% End: