lilypond-user
[Top][All Lists]
Advanced

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

Re: Ambrosian Chant Notation


From: Michael Gerdau
Subject: Re: Ambrosian Chant Notation
Date: Sun, 12 Jan 2020 15:42:51 +0100 (CET)

> > I'm still trying to figure out how to create a custom notehead 
> > (extended black rectangle)
> 
> Something like this might be a good place to start:
> 
> %%%%
> \version "2.18.2"
> {
>    \tweak Stem.transparent ##t
>    \tweak stencil #(lambda (grob)
>      (grob-interpret-markup grob #{
>        \markup \filled-box #'(0 . 4) #'(-0.5 . 0.5) #0.1 #}))
>    b'
> }
> %%%%

Neat one :)

I don't think slurs should be used in chants. To solve a similar problem quite 
a while ago Thomas Morley kindly wrote a function that does that. Including 
Aaron's code here is another take:

%%%%%%%%%%%%%%%%
\version "2.19.83"

\include "gregorian.ly"
\include "lilypond-book-preamble.ly"

offsetChord =
#(define-music-function (music)(ly:music?)
   "Return an event-chord with offsetted NoteHeads. 
Articulations are printed with respect to their corresponding NoteHeads "
   (let* ((ev-notes (event-chord-notes music)))
     (make-event-chord
      (map
       (lambda (ecn which val)
         (let ((arts (ly:music-property ecn 'articulations)))
           ;; set 'articulations of 'NoteEvent
           (ly:music-set-property! ecn 'articulations
             (if (not (null? arts))
                 (map
                  (lambda (a)
                    ;; set a new parent for 'ArticulationEvent
                    (if (music-is-of-type? a 'articulation-event)
                        #{
                          \tweak after-line-breaking
                          #(lambda (grob)
                             (let* ((note-head (ly:grob-parent grob X))
                                    (nc (ly:grob-parent note-head X))
                                    (nh
                                     (ly:grob-array->list
                                      (ly:grob-object nc 'note-heads))))
                               (set!
                                (ly:grob-parent grob X)
                                (list-ref nh which))))
                          $a
                        #}
                        a))
                  arts)
                 '()))
           ;; apply 'X-offset-tweak to every NoteHead
           #{ \tweak X-offset $val $ecn #}))
       ev-notes
       (iota (length ev-notes))
       (iota (length ev-notes) 0 1.48)))))

chant = \relative c' {
  \set Score.timing = ##f
  c'4 a2 %\tweak Stem.transparent ##t
            \tweak stencil #(lambda (grob)
                  (grob-interpret-markup grob #{
                    \markup \filled-box #'(0 . 4) #'(-0.5 . 0.5) #0.1 #})) b 
\divisioMinima
  g4 a c2 a2 \divisioMaior
  \offsetChord { a4 g } \offsetChord { g4 a } a2 \finalis
}

verba = \lyricmode {
  O God, \once \override LyricText.self-alignment-X = #-1 "help us in our time 
of need."
  God have mer -- cy,
  Grant us peace.
}

\score {
  \new Staff <<
    \override Staff.StaffSymbol.line-count = #2
    \new Voice = "melody" \chant
    \new Lyrics = "one" \lyricsto melody \verba
  >>
  \layout {
    \context {
      \Staff
      \remove "Time_signature_engraver"
      \remove "Bar_engraver"
      \hide Stem
    }
    \context {
      \Voice
      \override Stem.length = #0
    }
    \context {
      \Score
      barAlways = ##t
    }
  }
}
%%%%%%%%%%%%%%%%

I've also stopped using the gregorian.ly because too many (for my liking) 
things get switched off. I use a private version that only includes some of the 
attributes of gregorian.ly. But that is probably a matter of persona taste.
and instead 

Kind regards,
Michael
-- 
Michael Gerdau email: address@hidden
GPG-keys available on request or at public keyserver



reply via email to

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