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 } } >> } _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user