lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Trying to vary white mensural ligatures


From: Michael J. O'Donnell
Subject: Trying to vary white mensural ligatures
Date: Tue, 03 Mar 2009 22:54:48 -0600
User-agent: Thunderbird 2.0.0.19 (X11/20090105)

I am trying to set the hand enscribed Bodleian MS Canon Misc 213
manuscript (don't ask why :-P ).

The notation is pretty much white mensural notation, but there are some
variations that I'm tackling one at a time.

I'm stuck on a form of ligature that uses the descending diagonal neume
to indicate two notes, and has a rising stem on the left.

\[ d\longa c\breve \] % gives the right diagonal neume, but no stem

\[ d1 c1 \]                  % gives the stem, but separate
diamond-shaped note heads

I have read the section on white mensural notation, the definitions of
ligature objects, and every mention of ligatures and mensural notation
in the Scheme files. On the possibility that there was an invisible
stem, as the manuals says there is for whole notes, I tried overriding
transparency and color of the Stem object, to no avail.

I'm not sure what note durations are intended in the manuscript, but if
I can get the right look, I'll eventually find an example that clarifies
the meaning of the notation, and I can program the overrides to
associate the right look with the right notations for note durations.

I'll append my whole source file, which has a bunch of other stuff that
I'm experimenting with. I enclosed the part in question between
commented lines of stars.

% *********************************************

If you produce output, the two versions of the ligature in question are
shown as the 2d-3d and 4th-5th notes at the end of the first line. (I
think that I shouldn't attach PDF in a mailing list, right?)

In case you're interested, this is Folio 1, containing a setting of "Et
in terra pax hominibus" by Binchois.

Thanks for any hints.

Mike O'Donnell

\version "2.10.33"

% \include "gregorian-init.ly"

#(set-default-paper-size "11x17")
#(set-global-staff-size 35) % unit is pt

% Cclefsign = \markup{ \musicglyph #"clefs.C" }

TenorClef = {

% The shape of the staff sign is good,
% but it needs to be void, instead of filled

  \set Staff.clefGlyph = #"clefs.medicaea.do"
  \set Staff.clefPosition = #2
  \set Staff.middleCPosition = #2
}

% This method of setting the clef with markup appears not to work.
% It seems that the clef sign must be a single glyph.

%{
  \override Clef #'stencil = #ly:text-interface::print
  \override Clef #'text = \Cclefsign
  \set Staff.clefPosition = #2
  \set Staff.middleCPosition = #2
%}

filledBreveNotehead = \markup{

  \combine
    \musicglyph #"noteheads.sM1mensural"
    \translate #'(0.1 . 0) \musicglyph #"noteheads.smedicaea.punctum"
}

filledLongaNotehead = \markup{

  \combine
    \musicglyph #"noteheads.sM2mensural"
    \translate #'(0.1 . 0) \musicglyph #"noteheads.smedicaea.punctum"
}

filledMaximaNotehead = \markup{

  \combine
    \musicglyph #"noteheads.sM3mensural"
    \combine
      \musicglyph #"noteheads.s2la"
      \translate #'(0.7 . 0) \musicglyph #"noteheads.s2la"
}

% At present, I am not using the triangle notehead.

%{
 
opentrianglenotehead = \markup{
  \hcenter-in #0.8 \rotate #90
    \combine
       \fontsize #-2 \musicglyph #"noteheads.s0do"
    \combine
        \translate #'(0.125 . -0.025)
          \fontsize #-3 \musicglyph #"noteheads.s0do"
        \translate #'(0.25 . -0.05)
          \fontsize #-4 \musicglyph #"noteheads.s0do"
}

%}

% Switch to filled notation.

 FilledNotes = {

% Use filled diamonds for all notes no longer than whole note

  \override NoteHead #'glyph-name =
    #(lambda (grob)
      (cond

         ((<= 0 (ly:grob-property grob 'duration-log))
           "2petrucci")
 
         (#t
           (note-head::calc-glyph-name grob))

      )
    )

  \override NoteHead #'stencil =
    #(lambda (grob)
      (if (> 0 (ly:grob-property grob 'duration-log))
          (ly:text-interface::print grob)
          (ly:note-head::print grob)
      )
    )

  \override NoteHead #'text =
    #(lambda (grob)
      (cond
 
        ((= -1 (ly:grob-property grob 'duration-log))
          filledBreveNotehead)

        ((= -2 (ly:grob-property grob 'duration-log))
          filledLongaNotehead)

        ((= -3 (ly:grob-property grob 'duration-log))
          filledMaximaNotehead)

        (#t  '())
      )
    )

%  \override MensuralLigature #'thickness = 10

}

% Switch to void notation

VoidNotes = {

% Use void diamonds for all notes no longer than whole note

  \override NoteHead #'glyph-name =
    #(lambda (grob)
      (if (<= 0 (ly:grob-property grob 'duration-log))

          "0petrucci"
 
          (note-head::calc-glyph-name grob)

      )
    )

  \revert NoteHead #'stencil

}

\layout {

%  line-width = #300 % What units?
  indent = #0

  \context {
    \Score
    \override SpacingSpanner
              #'common-shortest-duration = #(ly:make-moment 8 1)
%    \override SpacingSpanner
%              #'spacing-increment = #0 % ??? No effect
%    \override SpacingSpanner
%              #'packed-spacing = ##t % ??? No effect
    \override TimeSignature
              #'font-size = #-6
  }

  \context {
    \Voice
    \remove Ligature_bracket_engraver
    \consists Mensural_ligature_engraver
  }

  \context {
    \MensuralStaff
    \override Rest
              #'style = #'mensural
    \override BarLine
              #'transparent = ##f
    \override Custos
                #'extra-offset = #'(1.25 . 0.0 )
    \override Custos
                #'X-offset = #-3.5
  }

}

\score {
  <<
    \new MensuralVoice = "Cantus" {

%{ At present, I'm not using the triangular noteheads.
% For all notes semibreve or smaller (all except breve, longa, maxima),
% use the text-interface printer to allow a marked up note head.

      \override NoteHead #'stencil =
        #(lambda (grob)
          (if (<= 0 (ly:grob-property grob 'duration-log))
              (ly:text-interface::print grob)
              (ly:note-head::print grob)
          )
        )

% For all notes semibreve or smaller, the note head is an isosceles
% right triangle, with the right angle to the left. I cooked this
% notehead up by overlaying and rotating three shape note triangles.

      \override NoteHead #'text =
        #(lambda (grob)
          (if (<= 0 (ly:grob-property grob 'duration-log))
              opentrianglenotehead
              '()
          )
        )

% For notes with triangular heads, adjust the stem attachment to the
% top vertex.

      \override NoteHead #'stem-attachment =
        #(lambda (grob)
          (if (<= 0 (ly:grob-property grob 'duration-log))
              '(5/6 . 1)
              '(1 . 1)
          )
        )

%}

% Start flags on the stem with quarter notes, instead of with eight notes,
% since the note heads do not become solid.

      \override Stem #'duration-log =
        #(lambda (grob)
          (let ((old-dl (stem::calc-duration-log grob)))
            (if (<= 2 old-dl)
                (+ 1 old-dl)
                old-dl
            )
          )
        )


      \override Score.BarNumber #'transparent = ##t {
      \override Stem #'flag-style = #'mensural
      \override BreathingSign #'text = #(make-musicglyph-markup
"scripts.caesura")

%      \override BarLine #'transparent = ##f

      \cadenzaOn

      \TenorClef

      \once \override MensuralStaff.TimeSignature #'extra-offset =
#'(0.0 . -0.5)
      \time 3/2
      \stemUp

      \VoidNotes

      f\breve % Et
      g1 a1 g2 e2 f1 % in terra
      g2 d'2.
\once \override Stem #'duration-log = #3
              c'4 c'2. b4 b4 a4 % pax
      \[ c'1 d'1. \] c'2 c'1. b2 b2 a2 c'1 % hominibus

      r1 r1

      bes1 a2 f2 g4 f4 g2 a1 % bone

      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -1.0)
      r1

      f\breve \[ g1 b1 \] a1 g2 c'2 a2 f2 a2 c'1 b2 % volun
      g2. f4 f1 % tatis

      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -2.0)
      r1
      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -2.0)
      r1

      \once \override MensuralStaff.TimeSignature #'extra-offset =
#'(0.0 . -1.5)
      \time 3/4

%
********************************************************************************

      d\breve f\breve e1
         \[ d1 c1 \]             % laudamus duplicate to compare ligatures
         \[ d\longa c\breve \] d2 e2 % laudamus (need variant slanted
ligature)

%
********************************************************************************

      \bar ""
      \break

      \[ f1 e1 \] f2 d2 f\breve % te (need variant slanted ligature)

      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -1.0)
      r\breve

      g\breve f1 a2 b2 c'1. b2 \[ g1 f1 \] % benedicimus (need variant
slanted ligature)
      b1 a1. g2 g2 f2 a\breve % te

      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -1.0)
      r\breve

      f\breve d1 f2 g2 a1. g2 % Adoramus
      g1 f\breve \[ e1 d1 c\breve \] % te (not quite right)

      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -2.0)
      r\breve

% This section still needs filled ligatures
     

      \FilledNotes

      f\longa g\breve \[ a\breve c'\breve b\breve \]

      \VoidNotes

% End of filled section

      a\breve g1 % glorificamus (concluded)
      \[ f1 e1 \] f2 d2 f\longa % te (need variant slanted ligature)

      \bar "|"

      \once \override MensuralStaff.TimeSignature #'extra-offset =
#'(0.0 . 1.5)
      \time 3/2

      c'2 d'2. c'4 c'2 b2 a2 c'1 % Gracias
      r1
      \[ c'1 d'1 \] c'2 b2 \[ a1 g1 \] % agimus (need variant slanted
ligature)
      f1 \[ g1 a1 \] % tibi

      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -1.0)
      r1

      c'1 d'1 % propter

      \bar ""
      \break

      c'2 a2 \[ b1 c'1 \] % magnam
      r1 r1
      bes1 g2 b1 a2 \[ g1 f1. \] % gloriam
      d2 f1 e2 c2 \[ d1 c1 \] % tuam (need variant slanted ligature)

      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -3.0)
      r1

      f2 f2 f2 % domine
      g2. f4 f1 e2 f1 %deus

      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -2.0)
      r1

      b1 a2 % rex
      c'1 b2 g2 f2 f1 % coelestis
      a1 b1 % deus
      c'1. b2 c'1 % pater
      r1
      d'1. c'2 c'1. b2 b2 a2 c'1 % omnipotens
      r1 r1

      \once \override MensuralStaff.TimeSignature #'extra-offset =
#'(0.0 . 1.5)
      \time 3/4

      c'\breve b1 \[ g1 f1 \] % domine (need variant slanted ligature)
      g1 f2 b1 a2 g2 f2 a1 % fili

      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -1.0)
      r1
      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -1.0)
      r1

      \bar ""
      \break

      f\breve g1 b1 a2 f2 g1 % unigenite
      a1 b1. a2 \[ a1 g1. \] f2 % Jesu (need variant slanted ligature)
      f1. d2 e4 d4 e2 f1 % Christe

      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -2.0)
      r1
      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -2.0)
      r1

      d\breve c1. d2 f2 e2 f2 g2 % domine
      e2 f1 % deus

      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -2.0)
      r1

      g1. f2 f1. e2 e1 f2 % agnus
      g1 f2 \[ d1 c1 \] % dei (need variant slanted ligature)

      \once \override MensuralStaff.Rest #'extra-offset = #'(0.0 . -3.0)
      r1

      \FilledNotes

      c\breve d\breve f\breve % filius

      \VoidNotes

      e2 f2 g1 bes2 a2 f1. e2 e2 d2 f\longa % patris

      \bar "||"

      d1 % bogus note to test spacing trick, with the padding override below
      \once \override Score.SeparationItem #'padding = #10

     % need space after double bar, and custos referring to next Cantus line

      \bar ""
      \break

      }
    }
  >>
}







reply via email to

[Prev in Thread] Current Thread [Next in Thread]