Deutsches Lilypond Forum (Archiv)

Allgemein => Allgemeine Diskussion => Thema gestartet von: rainglasz am Montag, 2. März 2015, 18:23

Titel: Moderne Notation für Liturgie (hier: EG181.3)
Beitrag von: rainglasz am Montag, 2. März 2015, 18:23
Um liturgische Rufe (moderne gregorianische Notation) einfach schreiben zu können, habe ich folgende Lösung gefunden:

\version "2.18.2"
\relative c'{
    \set Score.proportionalNotationDuration = #(ly:make-moment 1/8)
    \omit Staff.TimeSignature    
    \hide Stem
    \hide Slur
    \key f \major
    \cadenzaOn    % keine Taktstriche, keine Zeilenwechsel mit \break
    c4  d  f ( \tweak X-offset #'-4 g )  g  \breathe
    a bes a (  \tweak X-offset #'-4 g ) f  \breathe
    \cadenzaOff \break \cadenzaOn                        % ght nicht, wieso?
    % Akkorde nicht verwenden; die Noten werden vertauscht:
    g a < a  g >^"↓falsch"
    g ( \tweak X-offset #'-4 g )
    \bar "|."
}
\addlyrics {
  Hal -- le -- lu -- ja, Hal -- le -- lu -- ja, Hal -- le -- lu -- ja. }
Ergebnis und Vorlage siehe Anhänge.

Anmerkungen:

Fragen:
Titel: Re: Moderne Notation für Liturgie (hier: EG181.3)
Beitrag von: Pierre am Montag, 2. März 2015, 22:52
Hallo rainglasz,

herzlich willkommen im forum.

Versuch mal:

\version "2.18.2"

%% Dedicated context, neumes & melislma :
moderneGregorianischeContext = {
  \cadenzaOn
  \omit Stem
  \omit Clef
  \omit TimeSignature
  \omit StaffSymbol
  \omit Dots
  \omit Rest
  \omit Flag
  \omit Beam
  \override SpacingSpanner.packed-spacing = ##t
  \override Accidental.extra-offset = #'(-.2 . 0)
}

neume = #(define-music-function (parser location mus)
     (ly:music?)
   #{
      \once\override NoteHead.stencil = #(lambda (grob)
         (grob-interpret-markup grob
           #{
              \markup\concat {
                \hspace #-2
                \score {
                  \transpose c c' { \omit Stem $mus }
                  \layout {
                    indent = 0
                    ragged-right = ##t
                    \context {
                      \Score
                      \moderneGregorianischeContext
                    }
                  }
                }
              }
           #}))
   #})

melisma = #(define-music-function (parser location mus)
     (ly:music?)
     #{
        {
          \once\override Lyrics.LyricText.self-alignment-X = #LEFT
          \neume { $mus }
          \omit Accidental
          \omit Dots
          #(make-music
            'NoteEvent
            'pitch
            (ly:make-pitch -1 6 0)
            'duration
            (ly:make-duration 2 0 1))
        }
     #})

% Declare default layout
\layout {
  \context {
    \Score
    \omit TimeSignature
    \omit Stem
    proportionalNotationDuration = #(ly:make-moment 1/8)
  }
}

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

\transpose c c' {
  \key f \major
  \cadenzaOn
  c4 d \melisma { f g }  g
  \bar "'"
  a bes \melisma { a g } f
  \bar "'"
  %\break
  g a \melisma { a g } \melisma { g g }
  \bar "|."
  \tweak self-alignment-X #RIGHT
  \mark\markup\concat { "Ö " \fontsize #4 "181" ".3" }
}

\addlyrics {
  Hal -- le -- lu -- ja, Hal -- le -- lu -- ja, Hal -- le -- lu -- ja.
}

Gruß,
Pierre
Titel: Re: Moderne Notation für Liturgie (hier: EG181.3)
Beitrag von: harm6 am Dienstag, 3. März 2015, 00:46
Hallo,

hier mein Versuch.
Du brauchst allerdings eine neuere devel-Version sonst funktioniert es nicht. Liegt an dem neuen property 'parent-alignment-X, dank an Janek Warchol.

\version "2.19.16"

\paper {
  ragged-right = ##f
}

\header {
  arranger = \markup \concat { "Ö " \fontsize #4 "181" ".3" }
}

\layout {

  \context {
    \Score
    \override GraceSpacing.spacing-increment = #0
    proportionalNotationDuration = #(ly:make-moment 1/8)
  }
  \context {
    \Staff
    \omit TimeSignature
    \override LedgerLineSpanner.gap = -1
  }
  \context {
    \Voice
    \hide Stem
    \hide Slur
  }
  \context {
    \Lyrics
    \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.padding = #1
  }
}

startGraceMusic =  {
  \temporary \override NoteHead.font-size = #0
  \temporary \override NoteHead.X-extent = #'(0 . 0.85)
}

stopGraceMusic =  {
  \revert NoteHead.font-size
  \revert NoteHead.X-extent
  \once \override Lyrics.LyricText.parent-alignment-X = -1
}

\relative c' {
  \key f \major
  \cadenzaOn
  c4  d \grace f g g 
  \bar "'"
  a bes \grace a g f 
  \bar "'" %\break %% Zeilenumbruch nur bei einem Taktstrich möglich
  g a \grace a g
  \grace g g
  \bar "|."
  \tweak self-alignment-X #RIGHT
  \tweak direction #DOWN
  \tweak padding 2
  \mark
  \markup \fontsize #-4 {
    \italic "Melodie:" "gregorianische Antiphon zum 6. oder 9.Psalmton"
  }
}
\addlyrics {
  Hal -- le -- test↑test -- ja, Hal -- le -- lu -- ja,
  Hal -- le -- lu -- ja.



HTH,
  Harm


P.S.
Hier noch ein paar Anmerkungen zu Deinen Fragen

Zitat von: rainglasz
Fragen:
  • Kann man mit geringem Aufwand das \tweak X-offset #'-4 abkürzen? Die übliche Notation eng=\tweak X-offset #'-4 und verwenden von \eng geht nicht.

\tweak ist eine music-function welche ein Musik-Argument erwartet, deshalb klappt es so nicht.
Du könntest folgendes versuchen:

eng =
#(define-music-function (parser location music)(ly:music?)
#{
  \tweak X-offset #'-4
  $music
#})


{
  c4 \eng c c c
}

Zitat
2. Gibt es einen Parameter, mit dem man den Mindestabstand verringern kann? Ich habe etliche durchprobiert, aber nichts gefunden, das wirkt.

Mein Coding arbeitet mit 'spacing-increment sowie einem hack von 'X-extent.
Eine wirklich überzeugende Methode gibt es nicht.
LilyPond bemüht sich mit wirklich großem Aufwand um ein überzeugendes spacing. Das bedeutet aber auch, daß das ganze hochkomplex ist und Eingriffe von user-Seite ebenfalls hochkomplex sein würden. Ein paar Möglicheiten gibt es (->SpacingSpanner) und noch mehr wären zumindest denkbar.
Allerdings ist für GraceSpacing solche Art Eingriffe relativ einfach umsetzbar und auch als Möglichkeit implementiert.
Insoweit habe ich ja auch diesen Weg gewählt. ;)

Zitat
3. Wie kann man einen Zeilenwechsel erzwingen? \cadenzaOn schaltet lt. NR die Wirkung von \break aus,
aber die Sequenz \cadenzaOff \break \cadenzaOn sollte es doch bewirken? Papier kleiner machen geht meist, ist aber unbefriedigend.
Zeilenumbruch ist nur in Verbindung mit einem Taktstrich möglich (wie sonst auch) und sei es \bar ""


EDIT:

Benutze eher \bar "'" denn \breathe (wie von Pierre vogeschlagen). Ich habe das Code-Beispiel dahingehend geändert.