Autor Thema: Moderne Notation für Liturgie (hier: EG181.3)  (Gelesen 2928 mal)

rainglasz

  • Member
Moderne Notation für Liturgie (hier: EG181.3)
« 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:
  • Die in einigen älteren Beiträgen vorgeschlage Verwendung der Akkordnotation < a g > funktioniert nur bei gleichen Tönen, weil bei Sekunden die Reihenfolge der Noten nicht definiert ist (siehe vorletztes Melisma), und bei Terzen und höher die Noten übereinander stehen. Zudem rücken die Noten zu eng aneinander.
  • Macht man den Wert X-offset zu groß, wird der Abstand nach der verschobenen Note wieder größer, da ein Minimalabstand zur vorhergehenden Note nicht unterschritten wird.
  • Ohne \set Score.proportionalNotationDuration = #(ly:make-moment 1/8) wird der Notenabstand kleiner.
  • Statt dessen kann man auch unsichtbare Pausen (s4) einfügen; das ist mühsam, aber immer noch besser als unsichtbare Noten, für die dann der Text angepasst werden muss.
  • Wird \hide anstatt \omit Staff.TimeSignature verwendet, wird nichts gezeigt, aber der Platz bleibt frei.
  • Verwendung von \include "gregorian.ly" läge nahe, ist mir aber nicht gelungen, auf mein Beispiel anzuwenden

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.
  • Gibt es einen Parameter, mit dem man den Mindestabstand verringern kann? Ich habe etliche durchprobiert, aber nichts gefunden, das wirkt.
  • 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.

Pierre

  • Member
Re: Moderne Notation für Liturgie (hier: EG181.3)
« Antwort #1 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
« Letzte Änderung: Montag, 2. März 2015, 23:08 von Pierre »

harm6

  • Member
Re: Moderne Notation für Liturgie (hier: EG181.3)
« Antwort #2 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.
« Letzte Änderung: Dienstag, 3. März 2015, 09:36 von harm6 »