LilyPond snippets: Ancient notation

# Ancient notation

Ancient notation

## Adding a figured bass above or below the notes

When writing a figured bass, you can place the figures above or below the bass notes, by defining the `BassFigureAlignmentPositioning #'direction` property (exclusively in a `Staff` context). Choices are `#UP` (or `#1`), `#CENTER` (or `#0`) and `#DOWN` (or `#-1`).

This property can be changed as many times as you wish. Use `\once \override` if you don’t want the override to apply to the whole score.

    bass = {
      \clef bass
      g4 b, c d
      e d8 c d2
    }
    continuo = \figuremode {
      <_>4 <6>8
      \once \override Staff.BassFigureAlignmentPositioning #'direction = #CENTER
      <5/>8 <_>4
      \override Staff.BassFigureAlignmentPositioning #'direction = #UP
      <_+>4 <6>
      \set Staff.useBassFigureExtenders = ##t
      \override Staff.BassFigureAlignmentPositioning #'direction = #DOWN
      <4>4. <4>8 <_+>4
    }
    \score {
      <<
        \new Staff = bassStaff \bass
        \context Staff = bassStaff \continuo
      >>
    }

## Ancient fonts

Shown here are many (all?) of the symbols that are included in LilyPond’s support for ancient notation.

    upperStaff = \new VaticanaStaff = "upperStaff" <<
      \context VaticanaVoice <<
        \transpose c c {

          \override NoteHead #'style = #'vaticana.punctum
          \key es \major
          \clef "vaticana-fa2"
          c1 des e f ges

          \override NoteHead #'style = #'vaticana.inclinatum
          a! b ces'
          \bar "|"
          % \break % 1 (8*1)

          \override NoteHead #'style = #'vaticana.quilisma
          b! des'! ges! fes!
          \breathe
          \clef "vaticana-fa1"
          \override NoteHead #'style = #'vaticana.plica
          es d
          \override NoteHead #'style = #'vaticana.reverse.plica
          c d
          \bar "|"
          % \break %2 (8*1)

          \override NoteHead #'style = #'vaticana.punctum.cavum
          es f
          \override NoteHead #'style = #'vaticana.lpes
          g as
          \override NoteHead #'style = #'vaticana.upes
          bes as
          \override NoteHead #'style = #'vaticana.vupes
          g f
          \override NoteHead #'style = #'vaticana.linea.punctum
          \once \override Staff.BarLine #'bar-extent = #'(-1 . 1) \bar "|"
          % \break % 3 (8*1)

          es d
          \override NoteHead #'style = #'vaticana.epiphonus
          c d
          \override NoteHead #'style = #'vaticana.cephalicus
          es f

          \override Staff.KeySignature #'glyph-name-alist = #alteration-medicaea-glyph-name-alist
          \override Staff.Accidental #'glyph-name-alist = #alteration-medicaea-glyph-name-alist
          \override Staff.Custos #'style = #'medicaea
          \override NoteHead #'style = #'medicaea.punctum
          \clef "medicaea-fa2"
          ces des
          \bar "|"
          % \break % 4 (8*1)

          e! f! ges
          \clef "medicaea-do2"
          \override NoteHead #'style = #'medicaea.inclinatum
          a! b! ces'
          \override NoteHead #'style = #'medicaea.virga
          b! a!
          \bar "|"
          % \break % 5 (8*1)

          ges fes
          \clef "medicaea-fa1"
          \override NoteHead #'style = #'medicaea.rvirga
          e des ces

          \override Staff.KeySignature #'glyph-name-alist = #alteration-hufnagel-glyph-name-alist
          \override Staff.Accidental #'glyph-name-alist = #alteration-hufnagel-glyph-name-alist
          \override Staff.Custos #'style = #'hufnagel
          \override NoteHead #'style = #'hufnagel.punctum
          \clef "hufnagel-fa2"
          ces des es
          \bar "|"
          % \break % 6 (8*1)

          fes ges
          \clef "hufnagel-do2"
          \override NoteHead #'style = #'hufnagel.lpes
          as! bes! ces'
          \override NoteHead #'style = #'hufnagel.virga
          bes! as!
          \bar "|"
          % \break % 7 (8*1)

          ges! fes!
          \clef "hufnagel-do-fa"
          \override NoteHead #'style = #'hufnagel.punctum
          es! des ces des! es! fes!
          \bar "||"
          % \break % 8 (8*1)

          s32*1
          % \break % 12 (32*1)
        }
      >>
    >>

    lowerStaff = \new MensuralStaff = "lowerStaff" <<
      \context MensuralVoice <<
        \transpose c c {

          \key a \major
          cis'1 d'\breve gis'\breve e'\breve \[ e'\longa fis'\longa \]
          \set Staff.forceClef = ##t
          \clef "neomensural-c2"
          cis1
          \bar "|"
          % \break % 2 (16*1)

          \[ g\breve dis''\longa \]
          b\breve \[ a\longa d\longa \]
          \clef "petrucci-c2"
          % \break % 4 (16*1)

          fis1 ces1
          \clef "petrucci-c2"
          r\longa
          \set Staff.forceClef = ##t
          \clef "mensural-c2"
          r\breve
          \bar "|"
          % \break % 5 (8*1)

          r2
          \clef "mensural-g"
          r4 r8 r16 r16
          \override NoteHead #'style = #'mensural
          \override Rest #'style = #'mensural
          \clef "petrucci-f"
          c8 b, c16 b, c32 b, c64 b, c64 b,
          d8 e d16 e d32 e d64 e d64 e
          r\longa
          \set Staff.forceClef = ##t
          \clef "petrucci-f"
          r\breve
          \bar "|"
          % \break % 6 (8*1)

          r\breve
          \clef "mensural-f"
          r2 r4 r8 r16 r16

          \set Staff.forceClef = ##t
          \clef "mensural-f"
          e\breve f g a1
          \clef "mensural-g"
          % \break % 7 (8*1)

          \[ bes'!\longa a'!\longa c''!\longa \]
          e'1 d' c' d' \bar "|"
          \bar "|"
          % \break % 9 (16*1)

          bes'!\longa fis'!1 as'!1 ges'!\longa % lig
          \set Staff.forceClef = ##t
          \clef "mensural-g"
          e'2 d' c' \bar "|"
          % \break % 11 (16*1)

          \set Staff.forceClef = ##t
          \clef "petrucci-g"
          c'2 d' e' f'
          \clef "petrucci-g"
          g' as'! bes'! cis''!
          bes'! as'! gis'! fis'!
          \set Staff.forceClef = ##t
          \clef "mensural-g"
          es'! des'! cis'!1 \bar "||"
          % \break % 12 (8*1)
        }
      >>
    >>

    \paper {
      line-thickness = #(/ staff-space 5.0)
    }

    \score {
      <<
        \upperStaff
        \lowerStaff
      >>
      \layout {
        indent = 0.0
        line-width = 17.25\cm
        \context {
          \Score
          timing = ##f
        }
        \context {
          \MensuralVoice
          \override NoteHead #'style = #'neomensural
          \override Rest #'style = #'neomensural
          \override Stem #'flag-style = #'mensural
          \override Stem #'thickness = #1.0
        }
        \context {
          \MensuralStaff
          \revert  BarLine #'transparent
          \override KeySignature #'glyph-name-alist = #alteration-mensural-glyph-name-alist
          clefGlyph = #"clefs.petrucci.c2"
        }
        \context {
          \VaticanaStaff
          \revert  BarLine #'transparent
          \override StaffSymbol #'thickness = #2.0
          \override KeySignature #'glyph-name-alist = #alteration-vaticana-glyph-name-alist
          \override Custos #'neutral-position = #4
        }
      }
    }

## Ancient notation template – modern transcription of gregorian music

This example demonstrates how to do modern transcription of Gregorian music. Gregorian music has no measure, no stems; it uses only half and quarter note heads, and special marks, indicating rests of different length.

    \include "gregorian.ly"

    chant = \relative c' {
      \set Score.timing = ##f
      f4 a2 \divisioMinima
      g4 b a2 f2 \divisioMaior
      g4( f) f( g) a2 \finalis
    }

    verba = \lyricmode {
      Lo -- rem ip -- sum do -- lor sit a -- met
    }

    \score {
      \new Staff <<
        \new Voice = "melody" \chant
        \new Lyrics = "one" \lyricsto melody \verba
      >>
      \layout {
        \context {
          \Staff
          \remove "Time_signature_engraver"
          \remove "Bar_engraver"
          \override Stem #'transparent = ##t
        }
        \context {
          \Voice
          \override Stem #'length = #0
        }
        \context {
          \Score
          barAlways = ##t
        }
      }
    }

## Ancient notation template – modern transcription of mensural music

When transcribing mensural music, an incipit at the beginning of the piece is useful to indicate the original key and tempo. While today musicians are used to bar lines in order to faster recognize rhythmic patterns, bar lines were not yet invented during the period of mensural music; in fact, the meter often changed after every few notes. As a compromise, bar lines are often printed between the staves rather than on the staves.

    global = {
      \set Score.skipBars = ##t

      % incipit
      \once \override Score.SystemStartBracket #'transparent = ##t
      \override Score.SpacingSpanner #'spacing-increment = #1.0 % tight spacing
      \key f \major
      \time 2/2
      \once \override Staff.TimeSignature #'style = #'neomensural
      \override Voice.NoteHead #'style = #'neomensural
      \override Voice.Rest #'style = #'neomensural
      \set Staff.printKeyCancellation = ##f
      \cadenzaOn % turn off bar lines
      \skip 1*10
      \once \override Staff.BarLine #'transparent = ##f
      \bar "||"
      \skip 1*1 % need this extra \skip such that clef change comes
                % after bar line
      \bar ""

      % main
      \revert Score.SpacingSpanner #'spacing-increment % CHECK: no effect?
      \cadenzaOff % turn bar lines on again
      \once \override Staff.Clef #'full-size-change = ##t
      \set Staff.forceClef = ##t
      \key g \major
      \time 4/4
      \override Voice.NoteHead #'style = #'default
      \override Voice.Rest #'style = #'default

      % FIXME: setting printKeyCancellation back to #t must not
      % occur in the first bar after the incipit.  Dto. for forceClef.
      % Therefore, we need an extra \skip.
      \skip 1*1
      \set Staff.printKeyCancellation = ##t
      \set Staff.forceClef = ##f

      \skip 1*7 % the actual music

      % let finis bar go through all staves
      \override Staff.BarLine #'transparent = ##f

      % finis bar
      \bar "|."
    }

    discantusNotes = {
      \transpose c' c'' {
        \set Staff.instrumentName = #"Discantus  "

        % incipit
        \clef "neomensural-c1"
        c'1. s2   % two bars
        \skip 1*8 % eight bars
        \skip 1*1 % one bar

        % main
        \clef "treble"
        d'2. d'4 |
        b e' d'2 |
        c'4 e'4.( d'8 c' b |
        a4) b a2 |
        b4.( c'8 d'4) c'4 |
        \once \override NoteHead #'transparent = ##t c'1 |
        b\breve |
      }
    }

    discantusLyrics = \lyricmode {
      % incipit
      IV-

      % main
      Ju -- bi -- |
      la -- te De -- |
      o, om --
      nis ter -- |
      ra, __ om- |
      "..." |
      -us. |
    }

    altusNotes = {
      \transpose c' c'' {
        \set Staff.instrumentName = #"Altus  "

        % incipit
        \clef "neomensural-c3"
        r1        % one bar
        f1. s2    % two bars
        \skip 1*7 % seven bars
        \skip 1*1 % one bar

        % main
        \clef "treble"
        r2 g2. e4 fis g | % two bars
        a2 g4 e |
        fis g4.( fis16 e fis4) |
        g1 |
        \once \override NoteHead #'transparent = ##t g1 |
        g\breve |
      }
    }

    altusLyrics = \lyricmode {
      % incipit
      IV-

      % main
      Ju -- bi -- la -- te | % two bars
      De -- o, om -- |
      nis ter -- ra, |
      "..." |
      -us. |
    }

    tenorNotes = {
      \transpose c' c' {
        \set Staff.instrumentName = #"Tenor  "

        % incipit
        \clef "neomensural-c4"
        r\longa   % four bars
        r\breve   % two bars
        r1        % one bar
        c'1. s2   % two bars
        \skip 1*1 % one bar
        \skip 1*1 % one bar

        % main
        \clef "treble_8"
        R1 |
        R1 |
        R1 |
        r2 d'2. d'4 b e' | % two bars
        \once \override NoteHead #'transparent = ##t e'1 |
        d'\breve |
      }
    }

    tenorLyrics = \lyricmode {
      % incipit
      IV-

      % main
      Ju -- bi -- la -- te | % two bars
      "..." |
      -us. |
    }

    bassusNotes = {
      \transpose c' c' {
        \set Staff.instrumentName = #"Bassus  "

        % incipit
        \clef "bass"
        r\maxima  % eight bars
        f1. s2    % two bars
        \skip 1*1 % one bar

        % main
        \clef "bass"
        R1 |
        R1 |
        R1 |
        R1 |
        g2. e4 |
        \once \override NoteHead #'transparent = ##t e1 |
        g\breve |
      }
    }

    bassusLyrics = \lyricmode {
      % incipit
      IV-

      % main
      Ju -- bi- |
      "..." |
      -us. |
    }

    \score {
      \new StaffGroup = choirStaff <<
        \new Voice =
          "discantusNotes" << \global \discantusNotes >>
        \new Lyrics =
          "discantusLyrics" \lyricsto discantusNotes { \discantusLyrics }
        \new Voice =
          "altusNotes" << \global \altusNotes >>
        \new Lyrics =
          "altusLyrics" \lyricsto altusNotes { \altusLyrics }
        \new Voice =
          "tenorNotes" << \global \tenorNotes >>
        \new Lyrics =
          "tenorLyrics" \lyricsto tenorNotes { \tenorLyrics }
        \new Voice =
          "bassusNotes" << \global \bassusNotes >>
        \new Lyrics =
          "bassusLyrics" \lyricsto bassusNotes { \bassusLyrics }
      >>
      \layout {
        \context {
          \Score

          % no bars in staves
          \override BarLine #'transparent = ##t

          % incipit should not start with a start delimiter
          \remove "System_start_delimiter_engraver"
        }
        \context {
          \Voice

          % no slurs
          \override Slur #'transparent = ##t

          % Comment in the below "\remove" command to allow line
          % breaking also at those barlines where a note overlaps
          % into the next bar.  The command is commented out in this
          % short example score, but especially for large scores, you
          % will typically yield better line breaking and thus improve
          % overall spacing if you comment in the following command.
          %\remove "Forbid_line_break_engraver"
        }
      }
    }

## Ancient time signatures

Time signatures may also be engraved in an old style.

    {
      \override Staff.TimeSignature #'style = #'neomensural
      s1
    }

## Chant or psalms notation

This form of notation is used for the chant of the Psalms, where verses aren’t always the same length.

    stemOn = { \revert Staff.Stem #'transparent }
    stemOff = { \override Staff.Stem #'transparent = ##t }

    \score {
      \new Staff \with { \remove "Time_signature_engraver" }
      {
        \key g \minor
        \cadenzaOn
        \stemOff a'\breve bes'4 g'4
        \stemOn a'2 \bar "||"
        \stemOff a'\breve g'4 a'4
        \stemOn f'2 \bar "||"
        \stemOff a'\breve^\markup { \italic flexe }
        \stemOn g'2 \bar "||"
      }
    }

## Custodes

Custodes may be engraved in various styles.

    \layout { ragged-right = ##t }

    \new Staff \with { \consists "Custos_engraver" } \relative c' {
      \override Staff.Custos #'neutral-position = #4

      \override Staff.Custos #'style = #'hufnagel
      c1^"hufnagel" \break
      <d a' f'>1

      \override Staff.Custos #'style = #'medicaea
      c1^"medicaea" \break
      <d a' f'>1

      \override Staff.Custos #'style = #'vaticana
      c1^"vaticana" \break
      <d a' f'>1

      \override Staff.Custos #'style = #'mensural
      c1^"mensural" \break
      <d a' f'>1
    }

## Incipit

Incipits can be added using the instrument name grob, but keeping separate the instrument name definition and the incipit definition.

    incipit =
    #(define-music-function (parser location incipit-music) (ly:music?)
      #{
        \once \override Staff.InstrumentName #'self-alignment-X = #RIGHT
        \once \override Staff.InstrumentName #'self-alignment-Y = #UP
        \once \override Staff.InstrumentName #'Y-offset =
          #(lambda (grob)
             (+ 4 (system-start-text::calc-y-offset grob)))
        \once \override Staff.InstrumentName #'padding = #0.3
        \once \override Staff.InstrumentName #'stencil =
          #(lambda (grob)
             (let* ((instrument-name (ly:grob-property grob 'long-text))
                    (layout (ly:output-def-clone (ly:grob-layout grob)))
                    (music (make-sequential-music
                            (list (context-spec-music
                                   (make-sequential-music
                                    (list (make-property-set
                                           'instrumentName instrument-name)
                                          (make-grob-property-set
                                           'VerticalAxisGroup
                                           'Y-extent '(-4 . 4))))
                                   'MensuralStaff)
                                  $incipit-music)))
                    (score (ly:make-score music))
                    (mm (ly:output-def-lookup layout 'mm))
                    (indent (ly:output-def-lookup layout 'indent))
                    (width (ly:output-def-lookup layout 'incipit-width))
                    (incipit-width (if (number? width)
                                       (* width mm)
                                       (* indent 0.5))))

               (ly:output-def-set-variable! layout 'indent (- indent
                                                              incipit-width))
               (ly:output-def-set-variable! layout 'line-width indent)
               (ly:output-def-set-variable! layout 'ragged-right #f)
               (ly:output-def-set-variable! layout 'ragged-last #f)
               (ly:output-def-set-variable! layout 'system-count 1)
               (ly:score-add-output-def! score layout)
               (ly:grob-set-property! grob 'long-text
                                      (markup #:score score))
               (system-start-text::print grob)))
      #})

    %%%%%%%%%%%%%%%%%%%%%%%%%

    global = {
      \set Score.skipBars = ##t
      \key g \major
      \time 4/4

      % the actual music
      \skip 1*8

      % let finis bar go through all staves
      \override Staff.BarLine #'transparent = ##f

      % finis bar
      \bar "|."
    }

    discantusIncipit = <<
      \new MensuralVoice = "discantusIncipit" <<
        \repeat unfold 9 { s1 \noBreak }
        {
          \clef "neomensural-c1"
          \key f \major
          \time 2/2
          c''1.
        }
      >>
      \new Lyrics \lyricsto discantusIncipit { IV- }
    >>

    discantusNotes = {
      \transpose c' c'' {
        \clef "treble"
        d'2. d'4 |
        b e' d'2 |
        c'4 e'4.( d'8 c' b |
        a4) b a2 |
        b4.( c'8 d'4) c'4 |
        \once \override NoteHead #'transparent = ##t
        c'1 |
        b\breve |
      }
    }

    discantusLyrics = \lyricmode {
      Ju -- bi -- |
      la -- te De -- |
      o, om --
      nis ter -- |
      ra, __ om- |
      "..." |
      -us. |
    }

    altusIncipit = <<
      \new MensuralVoice = "altusIncipit" <<
        \repeat unfold 9 { s1 \noBreak }
        {
          \clef "neomensural-c3"
          \key f \major
          \time 2/2
          r1 f'1.
        }
      >>
      \new Lyrics \lyricsto altusIncipit { IV- }
    >>

    altusNotes = {
      \transpose c' c'' {
        \clef "treble"
        % two measures
        r2 g2. e4 fis g |
        a2 g4 e |
        fis g4.( fis16 e fis4) |
        g1 |
        \once \override NoteHead #'transparent = ##t
        g1 |
        g\breve |
      }
    }

    altusLyrics = \lyricmode {
      % two measures
      Ju -- bi -- la -- te |
      De -- o, om -- |
      nis ter -- ra, |
      "..." |
      -us. |
    }

    tenorIncipit = <<
      \new MensuralVoice = "tenorIncipit" <<
        \repeat unfold 9 { s1 \noBreak }
        {
          \clef "neomensural-c4"
          \key f \major
          \time 2/2
          r\longa
          r\breve
          r1 c'1.
        }
      >>
      \new Lyrics \lyricsto tenorIncipit { IV- }
    >>

    tenorNotes = {
      \transpose c' c' {
        \clef "treble_8"
        R1 |
        R1 |
        R1 |
        % two measures
        r2 d'2. d'4 b e' |
        \once \override NoteHead #'transparent = ##t
        e'1 |
        d'\breve |
      }
    }

    tenorLyrics = \lyricmode {
      % two measures
      Ju -- bi -- la -- te |
      "..." |
      -us.
    }

    bassusIncipit = <<
      \new MensuralVoice = "bassusIncipit" <<
        \repeat unfold 9 { s1 \noBreak }
        {
          \clef "bass"
          \key f \major
          \time 2/2
          %% incipit
          r\maxima
          f1.
        }
      >>
      \new Lyrics \lyricsto bassusIncipit { IV- }
    >>

    bassusNotes = {
      \transpose c' c' {
        \clef "bass"
        R1 |
        R1 |
        R1 |
        R1 |
        g2. e4 |
        \once \override NoteHead #'transparent = ##t
        e1 |
        g\breve |
      }
    }

    bassusLyrics = \lyricmode {
      Ju -- bi- |
      "..." |
      -us.
    }

    \score {
      <<
        \new StaffGroup = choirStaff <<
          \new Voice = "discantusNotes" <<
            \global
            \set Staff.instrumentName = #"Discantus"
            \incipit \discantusIncipit
            \discantusNotes
          >>
          \new Lyrics = "discantusLyrics" \lyricsto discantusNotes { \discantusLyrics }
          \new Voice = "altusNotes" <<
            \global
            \set Staff.instrumentName = #"Altus"
            \incipit \altusIncipit
            \altusNotes
          >>
          \new Lyrics = "altusLyrics" \lyricsto altusNotes { \altusLyrics }
          \new Voice = "tenorNotes" <<
            \global
            \set Staff.instrumentName = #"Tenor"
            \incipit \tenorIncipit
            \tenorNotes
          >>
          \new Lyrics = "tenorLyrics" \lyricsto tenorNotes { \tenorLyrics }
          \new Voice = "bassusNotes" <<
            \global
            \set Staff.instrumentName = #"Bassus"
            \incipit \bassusIncipit
            \bassusNotes
          >>
          \new Lyrics = "bassusLyrics" \lyricsto bassusNotes { \bassusLyrics }
        >>
      >>
      \layout {
        \context {
          \Score
          %% no bar lines in staves or lyrics
          \override BarLine #'transparent = ##t
        }
        %% the next two instructions keep the lyrics between the bar lines
        \context {
          \Lyrics
          \consists "Bar_engraver"
          \consists "Separating_line_group_engraver"
        }
        \context {
          \Voice
          %% no slurs
          \override Slur #'transparent = ##t
          %% Comment in the below "\remove" command to allow line
          %% breaking also at those bar lines where a note overlaps
          %% into the next measure.  The command is commented out in this
          %% short example score, but especially for large scores, you
          %% will typically yield better line breaking and thus improve
          %% overall spacing if you comment in the following command.
          %%\remove "Forbid_line_break_engraver"
        }
        indent = 6\cm
        incipit-width = 4\cm
      }
    }

## Mensurstriche layout (bar lines between the staves)

The mensurstriche-layout where the bar lines do not show on the staves but between staves can be achieved with a `StaffGroup` instead of a `ChoirStaff`. The bar line on staves is blanked out by setting the `transparent` property.

    global = {
      \override Staff.BarLine #'transparent = ##t
      s1 s
      % the final bar line is not interrupted
      \revert Staff.BarLine #'transparent
      \bar "|."
    }
    \new StaffGroup \relative c'' {
      <<
        \new Staff { << \global { c1 c } >> }
        \new Staff { << \global { c c } >> }
      >>
    }

## Rest styles

Rests may be used in various styles.

    \layout {
      indent = 0
      \context {
        \Staff
        \remove "Time_signature_engraver"
      }
    }

    \new Staff \relative c {
      \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 ""

      \override Staff.Rest #'style = #'neomensural
      r\maxima^\markup \typewriter { neomensural }
      r\longa r\breve r1 r2 r4 r8 r16 s32 s64 s128 s128
      \bar ""

      \override Staff.Rest #'style = #'classical
      r\maxima^\markup \typewriter { classical }
      r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128
      \bar ""

      \override Staff.Rest  #'style = #'default
      r\maxima^\markup \typewriter { default }
      r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128
    }

## Transcription of Ancient music with incipit

As a workaround to get real incipits which are independent from the main score these are included as a markup into the field normally used for the instrument name. As for now lyrics can only be added as a direct markup. It doesn’t unfortunately conform with the spacing of the main lyrics.

    global = {
      \set Score.skipBars = ##t
      \key g \major
      \time 4/4
      %make the staff lines invisible on staves
      \override Staff.BarLine #'transparent = ##t
      \skip 1*8 % the actual music
      % let finis bar go through all staves
      \override Staff.BarLine #'transparent = ##f
      % finis bar
      \bar "|."
    }

    discantusNotes = {
      \transpose c' c'' {
        \clef treble
        d'2. d'4 |
        b e' d'2 |
        c'4 e'4.( d'8 c' b |
        a4) b a2 |
        b4.( c'8 d'4) c'4 |
        \once \override NoteHead #'transparent = ##t c'1 |
        b\breve |
      }
    }

    discantusLyrics = \lyricmode {
      Ju -- bi -- |
      la -- te De -- |
      o, om --
      nis ter -- |
      ra, __ om- |
      "..." |
      -us. |
    }

    altusNotes = {
      \transpose c' c'' {
        \clef treble
        r2 g2. e4 fis g | % two bars
        a2 g4 e |
        fis g4.( fis16 e fis4) |
        g1 |
        \once \override NoteHead #'transparent = ##t g1 |
        g\breve |
      }
    }

    altusLyrics = \lyricmode {
      Ju -- bi -- la -- te | % two bars
      De -- o, om -- |
      nis ter -- ra, |
      "..." |
      -us. |
    }

    tenorNotes = {
      \transpose c' c' {
        \clef "treble_8"
        R1 |
        R1 |
        R1 |
        r2 d'2. d'4 b e' | % two bars
        \once \override NoteHead #'transparent = ##t e'1 |
        d'\breve |
      }
    }

    tenorLyrics = \lyricmode {
      Ju -- bi -- la -- te | % two bars
      "..." |
      -us.
    }

    bassusNotes = {
      \transpose c' c' {
        \clef bass
        R1 |
        R1 |
        R1 |
        R1 |
        g2. e4 |
        \once \override NoteHead #'transparent = ##t e1 |
        g\breve |
      }
    }

    bassusLyrics = \lyricmode {
      Ju -- bi- |
      "..." |
      -us.
    }

    incipitDiscantus = \markup {
      \score {
        {
          \set Staff.instrumentName = #"Discantus "
          \override NoteHead #'style = #'neomensural
          \override Rest #'style = #'neomensural
          \override Staff.TimeSignature #'style = #'neomensural
          \cadenzaOn
          \clef "neomensural-c1"
          \key f \major
          \time 2/2
          c''1._"IV-" s2  %two bars
          \skip 1*8 % eight bars
        }
        \layout {
          \context {
            \Voice
            \remove "Ligature_bracket_engraver"
            \consists "Mensural_ligature_engraver"
          }
          line-width = 4.5\cm
        }
      }
    }

    incipitAltus = \markup {
      \score {
        {
          \set Staff.instrumentName = #"Altus "
          \override NoteHead #'style = #'neomensural
          \override Rest #'style = #'neomensural
          \override Staff.TimeSignature #'style = #'neomensural
          \cadenzaOn
          \clef "neomensural-c3"
          \key f \major
          \time 2/2
          r1        % one bar
          f'1._"IV-" s2   % two bars
          \skip 1*7 % seven bars
        }
        \layout {
          \context {
            \Voice
            \remove "Ligature_bracket_engraver"
            \consists "Mensural_ligature_engraver"
          }
          line-width = 4.5\cm
        }
      }
    }

    incipitTenor = \markup {
      \score {
        {
          \set Staff.instrumentName = #"Tenor  "
          \override NoteHead #'style = #'neomensural
          \override Rest #'style = #'neomensural
          \override Staff.TimeSignature #'style = #'neomensural
          \cadenzaOn
          \clef "neomensural-c4"
          \key f \major
          \time 2/2
          r\longa   % four bars
          r\breve   % two bars
          r1        % one bar
          c'1._"IV-" s2   % two bars
          \skip 1   % one bar
        }
        \layout {
          \context {
            \Voice
            \remove "Ligature_bracket_engraver"
            \consists "Mensural_ligature_engraver"
          }
          line-width = 4.5\cm
        }
      }
    }

    incipitBassus = \markup {
      \score {
        {
          \set Staff.instrumentName = #"Bassus  "
          \override NoteHead #'style = #'neomensural
          \override Rest #'style = #'neomensural
          \override Staff.TimeSignature #'style = #'neomensural
          \cadenzaOn
          \clef "bass"
          \key f \major
          \time 2/2
          % incipit
          r\maxima  % eight bars
          f1._"IV-" s2    % two bars
        }
        \layout {
          \context {
            \Voice
            \remove "Ligature_bracket_engraver"
            \consists "Mensural_ligature_engraver"
          }
          line-width = 4.5\cm
        }
      }
    }

    %StaffGroup is used instead of ChoirStaff to get bar lines between systems
    \score {
      <<
        \new StaffGroup = choirStaff <<
          \new Voice = "discantusNotes" <<
            \global
            \set Staff.instrumentName = \incipitDiscantus
            \discantusNotes
          >>
          \new Lyrics = "discantusLyrics" \lyricsto discantusNotes { \discantusLyrics }

          \new Voice = "altusNotes" <<
            \global
            \set Staff.instrumentName = \incipitAltus
            \altusNotes
          >>
          \new Lyrics = "altusLyrics" \lyricsto altusNotes { \altusLyrics }

          \new Voice = "tenorNotes" <<
            \global
            \set Staff.instrumentName = \incipitTenor
            \tenorNotes
          >>
          \new Lyrics = "tenorLyrics" \lyricsto tenorNotes { \tenorLyrics }

          \new Voice = "bassusNotes" <<
            \global
            \set Staff.instrumentName = \incipitBassus
            \bassusNotes
          >>
        >>
        \new Lyrics = "bassusLyrics" \lyricsto bassusNotes { \bassusLyrics }
        %Keep the bass lyrics outside of the staff group to avoid bar lines
        %between the lyrics.
      >>

      \layout {
        \context {
          \Score
          % no bars in staves
          \override BarLine #'transparent = ##t
        }
        % the next three instructions keep the lyrics between the bar lines
        \context {
          \Lyrics
          \consists "Bar_engraver"
          \override BarLine #'transparent = ##t
        }
        \context {
          \StaffGroup
          \consists "Separating_line_group_engraver"
        }
        \context {
          \Voice
          % no slurs
          \override Slur #'transparent = ##t
          % Comment in the below "\remove" command to allow line
          % breaking also at those barlines where a note overlaps
          % into the next bar.  The command is commented out in this
          % short example score, but especially for large scores, you
          % will typically yield better line breaking and thus improve
          % overall spacing if you comment in the following command.
          %\remove "Forbid_line_break_engraver"
        }
        indent = 5\cm
      }
    }

## Vertical line as a baroque articulation mark

This short vertical line placed above the note is commonly used in baroque music. Its meaning can vary, but generally indicates notes that should be played with more “weight”. The following example demonstrates how to achieve such a notation.

    upline =
    #(let ((m (make-articulation "stopped")))
       (set! (ly:music-property m 'tweaks)
             (acons 'font-size 3
                    (acons 'stencil (lambda (grob)
                                      (grob-interpret-markup
                                       grob
                                       (make-draw-line-markup '(0 . 1))))
                           (ly:music-property m 'tweaks))))
       m)

    \relative c' {
      a'4^\upline a( c d')_\upline
    }

#### LilyPond — Snippets