Lyrics Note für Note

Begonnen von Kostja, Freitag, 23. Februar 2018, 04:44

« vorheriges - nächstes »

Kostja

Hallo, liebe Lilypond-Pros,

gibt es eine Möglichkeit, die Lyrics Note für Note einzugeben?

Ich würde gern viele Varianten eines Musikstücks erstellen und dafür kleine Schnipsel hin und her kopieren. Dafür ist die herkömmliche Trennung von Musik und Text im Code nicht so praktisch.

Ich habe es mit normalem Text und
\override TextScript #'staff-padding = #3
\override TextScript #'extra-spacing-width = #'(-1.0 . 1.0)

im \layout-Block probiert. Aber die vertikale Ausrichtung ist (auch dann, wenn nichts im Weg ist,) nicht akurat unter Lilypond 2.16.2-1 und OSX 10.11.6

Würde mich über Hilfe sehr freuen.

Hilflos-im-Code

Ich bin mir nicht ganz sicher, ob ich richtig verstanden habe, was Du willst. Wenn ich es richtig verstanden habe, könnte ein Weg sein, Noten und Textverteilung in Musescore zu entwerfen. Du kannst in Musescore Liedtextsilben ausschneiden, kopieren und dann an eine andere Note als Liedtext anhängen. Dann als XML exportieren und nach einem Import nach Lilypond hinein den Feinschliff des Aussehens mit Lilypond machen.

Der zweite mögliche Weg wäre Frescobaldi als Editor für Lilypond zu nutzen. Du kannst dann die Silben anklicken und der Cursor landet dann in der richtigen Textstelle im Code. Dann kannst Du die Silbe ersetzen, kopieren etc.

harm6

Hallo Kostja,

willkommen im Forum.

Leider habe ich keine Ahnung was Dir vorschwebt. Ich schlage vor, Du postest zwei manuell erstellts (minimale) Varianten eines Musikstückes und beschreibst daran nochmal was Du wie wohin kopieren möchtest.

Im übrigen ist 2.16.2 fünf Jahre alt. Ich empfehle dringend auf die aktuelle stable, 2.18.2 oder gleich auf 2.19.81, eine prerelease für das kommende 2.20.0 zu wechseln.
Für 2.16.2 wirst Du nicht mehr viel Unterstützung finden, es hat kaum jemand noch auf dem Rechner.

Gruß,
  Harm


Kostja

#3
Hallo!

Danke für die schnelle Antwort.

OK. Nach Update auf 2.18.2 funktioniert die vertikale Anpassung besser:

\score {

{
c' _"Al-"
d' _"le"
e' _"mei-"
f' _"ne"
}

\layout {
\override TextScript #'self-alignment-X = #CENTER
\override TextScript #'extra-spacing-width = #'(-1.0 . 1.0)
\override TextScript #'staff-padding = #4
}

}



Jetzt könnte ich das horizontale Alignment noch verbessern mit diesem Snippet:
http://lilypond.org/doc/v2.18/Documentation/snippets/text
unter ,,Centering markup on note heads automatically"

Aber nur aus Interesse trotzdem noch die Frage: Wäre es möglich eine Melodie mit Text so ähnlich wie oben einzugeben, aber so, dass der Text dann Lyrics wäre und nicht TextScript??

Danke nchmal und alles Gute,

Kostja

Kostja

Ich stelle diese Frage in Hinblick auf den Workflow. Vielleicht gibt es ja noch andere Leute, die gern die Lyrics direkt hinter die Note schreiben würden statt in einen separaten Block.

harm6

Alles ist möglich, aber es wird nur mit "unassigned Lyrics" funktionieren. Also kein LyricExtender möglich, keine automatisierten Melismen. Auch ist man die ganze Zeit am rumeiern die entsprechenden Contexte am Leben zu halten. Bei Melismen ist die Ausrichtung falsch, kann man natürlich mit einem entsprechenden overrde richten, was aber in keiner Weise zur Vereinfachung/Lesbarkeit beiträgt.
Wahrscheinlich gibts noch mehr. Aber es geht, sort of ... :


\paper { ragged-right = ##f }

\layout {
  \override Lyrics.LyricHyphen.minimum-distance = 1
}

<<
  \new Staff {
      << \context Voice { c'4 } \context Lyrics = "lyr" \lyricmode { Al4 -- } >>
      << \context Voice { d' } \context Lyrics = "lyr" \lyricmode { le4 } >>
      << \context Voice { e' } \context Lyrics = "lyr" \lyricmode { mei4 -- } >>
      << \context Voice { f' } \context Lyrics = "lyr" \lyricmode { ne4 } >>
      << \context Voice { g' } \context Lyrics = "lyr" \lyricmode { Ent4 -- } >>
      << \context Voice { r } \context Lyrics = "lyr" \lyricmode { \skip 4 } >>
      << \context Voice { g'2 } \context Lyrics = "lyr" \lyricmode { chen } >>
      << \context Voice { a'8(^[ b') } \context Lyrics = "lyr" \lyricmode { schwim4 -- } >>
      << \context Voice { a'8( b']) } \context Lyrics = "lyr" \lyricmode { men4 } >>
      << \context Voice { a'8(^[ b') } \context Lyrics = "lyr" \lyricmode { auf4 } >>
      << \context Voice { a'8( b')] } \context Lyrics = "lyr" \lyricmode { dem4 } >>
      << \context Voice { g'4( a' g'2) } \context Lyrics = "lyr" \lyricmode { See1 __ } >>
      << \context Voice { f'4 } \context Lyrics = "lyr" \lyricmode { Köpf4 } >>
    }
>>


Du kannst auch \parallelMusic verwenden, ist etwas lesbarer, hat aber annähernd dieselben Nachteile wie oben:

\paper { ragged-right = ##f }

\layout {
  \override Lyrics.LyricHyphen.minimum-distance = 1
}
\parallelMusic #'(voice lyr) {
  % Bar 1
               c'4    d' e'     f' |
  \lyricmode { Al4 -- le mei -- ne } |

  % Bar 2
               g'4  r4 g'2 |
  \lyricmode { Ent2 -- chen } |

  % Bar 3
               a'8( b')   a'( b') a'8( b') a'( b') |
  \lyricmode { schwim4 -- men     auf      dem } |
 
  % Bar 4
               g'4( a' g'2) |
  \lyricmode { See1 __ } |
 
  % Bar 5
               f'1 |
  \lyricmode { Köpf1 } |
}

<<
  \new Staff \voice
  \new Lyrics \lyricmode { \lyr }
>>



Nur wozu?
Es ist doch viel einfacher, lesbarer, richtiger etc assigned Lyrics zu verwenden.:


\paper { ragged-right = ##f }

\layout {
  \override Lyrics.LyricHyphen.minimum-distance = 1
}

<<
  \new Voice = "mel" {
      c'4 d' e' f'
      g' r g'2
      a'8( b') a'( b') a'8( b') a'( b')
      g'4( a' g'2)
      f'1
    }
  \new Lyrics = "lyrs"
  \lyricsto "mel" {
    Al -- le mei -- ne Ent -- chen
    schwim -- men auf dem See __
    Köpf
  }
>>


Ich halte das für ne Schnapsidee

Gruß,
  Harm

Kostja


harm6

Zitat von: harm
Du kannst auch \parallelMusic verwenden, ist etwas lesbarer, hat aber annähernd dieselben Nachteile wie oben

Bzgl. \parallelMusic scheine ich mich geirrt zu haben. Tatsächlich klappts dort auch mit assigned Lyrics (man muß allerdings die Länge der Silben eintragen, sonst protestiert der BarCheck):


\paper { ragged-right = ##f }

\layout {
  \override Lyrics.LyricHyphen.minimum-distance = 1
}
\parallelMusic #'(voice lyr) {
  % Bar 1
               c'4    d' e'     f' |
  \lyricmode { Al4 -- le mei -- ne } |

  % Bar 2
               g'4  r4 g'2 |
  \lyricmode { Ent2 -- chen } |

  % Bar 3
               a'8( b')   a'( b') a'8( b') a'( b') |
  \lyricmode { schwim4 -- men     auf      dem } |

  % Bar 4
               g'4( a' g'2) |
  \lyricmode { See1 __ } |

  % Bar 5
               f'1 |
  \lyricmode { Köpf1 } |
}

<<
  \new Staff {  \voice }
  \new Lyrics \lyricsto "" { \lyr }
>>


Gruß,
  Harm

Be-3

Zitat von: Kostja am Freitag, 23. Februar 2018, 04:44
Ich würde gern viele Varianten eines Musikstücks erstellen und dafür kleine Schnipsel hin und her kopieren. Dafür ist die herkömmliche Trennung von Musik und Text im Code nicht so praktisch.

Hallo Kostja,

Harm hält es für eine "Schnapsidee", ich für einen Holzweg.

Wenn ich Dich richtig verstanden habe, möchtest Du möglichst bequem eine "Einheit von Melodie und Text" an verschiedenen Stellen unter unterschiedlichen Rahmenbedingungen einsetzen.

Warum dann nicht einfach eine Variable definieren, die alles beide enthält und die dann als Einheit angesprochen werden kann?
Als Beispiel die aus Melodie und Text bestehende Variable \gesang, die sowohl Melodie als auch Text enthält.
Diese wird dann einmal zusammen mit Akkorden ausgegeben, einmal mit einer Klavierbegleitung und einmal für Trompete (in B) transponiert.
Jedesmal muß nur die Variable \gesang eingesetzt werden:

\version "2.18.2"

gesang = <<
  \relative { \key f \major f'4 g a bes c c }
  \addlyrics { Al -- le mei -- ne Ent -- chen }
>>

%% Mehrfache Nutzung der "Melodie-Text-Einheit

\score {
  <<
    \chords { f1 f:7 }
    \new Staff \gesang
  >>
}

\score {
  <<
    \new Staff \gesang
    \new PianoStaff << \new Staff { R1*2 } \new Staff { \clef bass R1*2 } >>
  >>
}

\score {
  \new Staff \with { instrumentName = #"Trompete" }
    \transpose bes c' \gesang
}


Mit solch einer Lösung kann die volle Lyrics-Flexibiltät ohne Abstriche genutzt werden und trotzdem mußt Du nicht jedes Mal mit Staff/Lyrics \lyricsto usw. hantieren, sondern kannst einfach \gesang einsetzen.

Viele Grüße
Torsten

Kostja

Danke Torsten. Das ist natürlich auch eine Möglichkeit.