Transkription von Gregorianik

Begonnen von felix.calamus, Montag, 8. Juli 2019, 11:21

« vorheriges - nächstes »

felix.calamus

Ich bitte um Unterstützung bei der Transkription von Gregorianik. Mit dem "Ite, missa est" bin ich zufrieden, allerdings, wenn ich den Code in LaTeX einbinde, macht LaTeX keinen Zeilenumbruch. Ich würde mich freuen, wenn es überhaupt eine elegantere Lösung gibt. Mein Code:


\version "2.18.2" % benutzte Lilypond-Version
#(set-default-paper-size "a6" 'landscape)
\include "gregorian.ly"


chant = \relative c' {
  \time 1/4
  \override Lyrics.LyricText.X-extent  = #'(0 . 1)
  \set Score.timing = ##f
  \key e \mixolydian % Tonart
  e d cis d s b s s d fis e s d e s e s s \finalis 
  e d cis d s b s s d fis e s d e s e s s s \finalis 
  }

erstezeile = \lyricmode { "I     -     te," _ _ _ _ "mis -" _ _ "sa   est." _ _ "De    -"   _ _ _ o "gra -" _ _ "ti  -" _ as. }

\score {
  \new Staff <<
    \new Voice = "melody" \chant
    \new Lyrics = "one" \lyricsto melody \erstezeile
    >>
  \layout {
    \context {
      \Staff
      \remove "Time_signature_engraver"
      \remove "Bar_engraver"
      \override BarLine.X-extent = #'(-1 . 1)
      \hide Stem
      \hide Beam
      \hide BarLine
      \hide TupletNumber
    }
    \context {
      \Voice
      \override Stem.length = #0
    }
    \context {
      \Score
      barAlways = ##t
    }
  }
}

Malte

Hallo Felix,

willkommen im Forum! Ich kenne mich mit Gregorianik in LilyPond nicht aus, ich glaube aber, daß man einiges vereinfachen könnte an deinem Code:

\version "2.18.2"
\include "gregorian.ly"

"(" = \melisma
")" = \melismaEnd

chant = \relative c' {
  \key e \mixolydian
  e( d cis d) s b s d( fis e) s d( e) s e \finalis
  e( d cis d) s b s d( fis e) s d( e) s e \finalis
}

erstezeile = \lyricmode {
  I -- te, mis -- sa est. De -- o gra -- ti -- as.
}

\score {
  \new Staff <<
    \new Voice = "melody" \chant
    \new Lyrics = "one" \lyricsto melody \erstezeile
  >>
  \layout {
    \context {
      \Staff
      \omit TimeSignature
      \omit Stem
    }
    \context {
      \Score
      barAlways = ##t
      defaultBarType = ""
      % folgendes verkürzt die Zwischenräume zwischen zwei Melismen:
      \override SpacingSpanner.common-shortest-duration = #(ly:make-moment 1/2)
    }
  }
}


Mit Melismen und automatischer Textunterlegung ists einfacher, den Text und die Bindestriche auszurichten als mit Leerzeichen. Weil ich \melisma und \melismaEnd zu aufwendig zu tippen finde, habe ich ( und ) damit belegt.

Eine Taktart brauchst du nicht, viele Dinge, die du per \hide transparent gemacht hast, tauchen sowieso nicht auf oder sollten lieber per \omit ganz weggelassen werden.

Der einzig etwas unschöne Hack ist der letzte \override, der die Lücken zwischen zwei Silben (als s eingegeben) verkürzt.

Und das einzige Problem, was jetzt noch besteht: Wenn eine Silbe auf mehrere Noten kommt, wird die zweite Note (und alle weiteren) so weit nach rechts geschoben, daß sie nicht überm Text stehen. Das ist meiner Meinung nach ein Bug, der mit packed-spacing zusammenhängt. packed-spacing wird in gregorian.ly gesetzt, du kannst es aber wieder abschalten, dafür unter den letzten \override noch diesen weiteren:
\override SpacingSpanner.packed-spacing = ##t

felix.calamus

Hallo Malte,

danke für deine Hilfe. Ich habe aus deiner Lösung sehr viel gelernt. Mein Code sieht jetzt so aus:


\version "2.18.2"
\include "gregorian.ly"

"(" = \melisma
")" = \melismaEnd

chant = \relative c' {
  \key e \mixolydian
  e( d cis d) s b s d( fis e) s d( e) s e \finalis
}

erstezeile = \lyricmode { I -- te, mis -- sa est. }
zweitezeile = \lyricmode { De -- o gra -- ti -- as. }

\score {
  \new Staff <<
    \new Voice = "melody" \chant
    \new Lyrics = "one" \lyricsto melody \erstezeile
    \new Lyrics = "one" \lyricsto melody \zweitezeile
  >>
  \layout {
    \context {
      \Staff
      \omit TimeSignature
      \omit Stem
    }
    \context {
      \Score
      barAlways = ##t
      defaultBarType = ""
      % folgendes verkürzt die Zwischenräume zwischen zwei Melismen:
      \override SpacingSpanner.common-shortest-duration = #(ly:make-moment 1/2)
      \override SpacingSpanner.packed-spacing = ##t
    }
  }
}


– Leider lässt sich das Nach-Rechts-Schieben der zweiten Note eines Melismas durch den Befehl \override SpacingSpanner.packed-spacing = ##t bei mir nicht abschalten.
– Außerdem schließt die Pausa finalis nicht mit dem Ende der Notenzeile.

Hättest du hier noch eine Idee?

Malte

Zitat von: felix.calamus am Montag,  8. Juli 2019, 14:34
– Leider lässt sich das Nach-Rechts-Schieben der zweiten Note eines Melismas durch den Befehl \override SpacingSpanner.packed-spacing = ##t bei mir nicht abschalten.
Mein Fehler, es muß ##f (false) heißen, nicht ##t (true). packed-spacing, also möglichst enges Setzender Noten, soll ja abgestellt werden.
Zitat
– Außerdem schließt die Pausa finalis nicht mit dem Ende der Notenzeile.
Das scheint von gregorian.ly so gewollt zu sein. Ich kann mir die Datei aber bei Gelegenheit nochmal genauer anschauen und herausfinden, warum das so ist und wie man es ändern kann. Nur jetzt muß ich gleich wieder los, wollte bloß obige Korrektur da lassen.

felix.calamus

Hallo Malte! Das wäre sehr nett; vielen Dank. Das Dokument schaut jetzt schon viel besser aus. Herzlichen Gruß, Felix

Malte

\finalis setzt intern ein BreathingSign (Atemzeichen), was einem doppelten Taktstrich recht ähnlich sieht, aber eben diesen Abstand auch hat, den ich nicht wegbekomme. Du könntest aber stattdessen tatsächlich einen doppelten Taktstrich setzen, indem du \finalis direkt nach der Zeile \include "gregorian.ly" umdefinierst:
finalis = {
  \once \override Score.BarLine.hair-thickness = 1
  \once \override Score.BarLine.extra-spacing-width = #'(-1 . 1)
  \bar "||"
}

hair-thickness stellt die Dicke der einzelnen Striche ein (für Taktstriche ist 1.9 der Standardwert, 1 entspricht dem Wert der ursprünglichen finalis-Definition).
extra-spacing-width schafft um die Finalis etwas mehr Platz (die beiden Werte stehen für linke und rechte Seite).

Probiere mal mit anderen Werten (auch sehr großen wie 10 bzw. -10) herum, um den Effekt zu sehen.

felix.calamus

Das hat funktioniert!

Gibt es außerdem noch die Möglichkeit, dass die Notenzeile samt der Notation auf die Breite des Textbereichs gesetzt wird?

(Wenn ich den Befehl \break setze, wird die dem Befehl vorausgehende Zeile auf die ganze Textzeile gerechnet. Das geht aber nicht bei der letzten.)

Malte

Ein Blick in gregorian.ly zeigt, daß die einzigen Dinge, die wir jetzt noch nicht geändert haben und die deine Noten betreffen, folgende sind:

\paper {
  indent = 0
  ragged-last = ##t
  line-thickness = #(/ (ly:output-def-lookup $defaultpaper 'staff-space) 7.0)
}

\layout {
  \context {
    \Score
    \remove Bar_number_engraver
  }
}

Alles andere hast du bisher nicht verwendet (z. B. rote Notenlinien für VaticanaStaff und Neumen).

Was du hier bräuchtest, wäreragged-last = ##f
Den Bar_number_engraver mußt du nicht zwingend entfernen, da mit dem defaultBarType = "" anscheinend auch die Taktzahlen abgestellt werden (auch wenn das meiner Meinung nach evtl. ein Bug sein könnte).

Bleibt noch indent = 0. Sowohl ragged-last als auch indent kannst du im \layout- oder \paper-Block setzen. ragged-last brauchst du dabei nur, falls du auch einzeilige Noten hast, bei längeren ist das der Standard.

line-thickness wird in gregorian.ly auf einen höheren Wert gesetzt. Dadurch werden Notenlinien, aber auch Text-Bindestriche und vieles andere dicker. Das ist für die Original-Neumennotation sicher gut durchdacht, wenn du aber sowieso eine moderne Transkription anfertigst, würde ich tendenziell auch den entsprechenden Standard bevorzugen.

Fazit: Ich denke, du kannst gregorian.ly bedenkenlos rausschmeißen und indent = 0 setzen, dann wars das.