Autor Thema: Vierstimmiger Gesang lässt Ties mit Noten kollidieren  (Gelesen 1856 mal)

fugenkomponist

  • Member
Vierstimmiger Gesang lässt Ties mit Noten kollidieren
« am: Montag, 17. März 2014, 12:50 »
Hallo,

eins der „Lieder“ unseres Orchesters ist folgendes: Vier (oder mehr) Stimmen setzen nacheinander ein, zum Schluss ergibt sich ein Akkord. Um das aufzuschreiben habe ich vier Stimmen verwendet, und einen Liedtext, der mehrmals die associatedVoice setzt ;) Nun habe ich ein Problem: warum kollidieren am Schluss die Ties mit den anderen Noten? Und wie kann ich LilyPond das abgewöhnen?
\version "2.18.0"
\language "deutsch"

melodie = \relative c' {
  \cadenzaOn
  <<
    \context Voice = "eins" {
      s2.*3
      \stemUp
      b'8[ b] b2~
      b1\longfermata
    }
    \context Voice = "zwei" {
      s2.*2
      g8[ g] g2*5/2~\fermata
      g1
    }
    \context Voice = "drei" {
      s2.
      e8[ e] e2*4~\fermata
      e1
    }
    \context Voice = "vier" {
      c8[ c] c2*11/2~\fermata
      c1
    }
  >>
  \bar "|."
}

text = \lyricmode {
  Chee -- ri --
  \set associatedVoice = #"drei"
  o! Chee -- ri --
  \set associatedVoice = #"zwei"
  o! Chee -- ri --
  \set associatedVoice = #"eins"
  o! Chee -- ri --
  o! __
}

\score {
  <<
    \new Staff \with {
      \remove Time_signature_engraver
    } {
      \melodie
    }
    \new Lyrics \lyricsto "vier" {
      \text
    }
  >>
}
P.S.: Für die, die sich über den Text wundern: Ja, irgendwie ist nicht so ganz klar, was zuerst da war, „živio“ oder „cheerio“ ;) Und keiner von uns weiß auch so genau, was für eine Sprache „živio“ ist, kroatisch/serbisch/bosnisch/…? Einige Ehemalige kennen es aus Tschechien, aber es ist wohl kein Tschechisch …

trulli

  • Member
Re: Vierstimmiger Gesang lässt Ties mit Noten kollidieren
« Antwort #1 am: Montag, 17. März 2014, 21:41 »
Hi fugenkomponist,

offenbar setzt Lily die einzelnen Bögen so, als wären die anderen Stimmen nicht vorhanden. Wenn es sich nur um die eine Stelle handelt, würde ich daher die problematischen Bögen etwas kürzen und etwas nach links verschieben. In den Code habe ich geschrieben welcher \override was macht.

Sollte sich jetzt jemand beschweren, ich würde mit Kanonen auf arme Spatzen (Bögen) schießen, dann hat er vollkommen recht.  :)

\version "2.18.0"
\language "deutsch"

melodie = \relative c' {
  \cadenzaOn
  <<
    \context Voice = "eins" {
      s2.*3
      \stemUp
      b'8[ b]  b2~
      b1 \longfermata
    }
    \\
   
    \context Voice = "zwei" { 
      s2.*2
      g8[ g]
      \once \override Tie.stencil = #(lambda (grob)
(ly:stencil-translate (ly:tie::print grob) '(-.1 . .5))) %verschiebt Bogen (links/rechts . oben/unten)
      \once \override Tie.details = #'((note-head-gap  . 1)) %verkürzt Bogen
      g2*5/2~\fermata
      g1
    }
   
   
   \context Voice = "drei" {
     
      s2.
      e8[ e]
      \once \override Tie.stencil = #(lambda (grob)
(ly:stencil-translate (ly:tie::print grob) '(-.1 . .2)))
      \once \override Tie.details = #'((note-head-gap  . 1))
      e2*4~\fermata
      e1
    }
    \context Voice = "vier" {
      c8[ c]
      \once \override Tie.stencil = #(lambda (grob)
(ly:stencil-translate (ly:tie::print grob) '(-.1 . .2)))
      \once \override Tie.details = #'((note-head-gap  . 1))
      c2*11/2~\fermata
      c1
    }
   
  >>
  \bar "|."
}

text = \lyricmode {
  Chee -- ri --
  \set associatedVoice = #"drei"
  o! Chee -- ri --
  \set associatedVoice = #"zwei"
  o! Chee -- ri --
  \set associatedVoice = #"eins"
  o! Chee -- ri --
  o! __
}

Gruß

fugenkomponist

  • Member
Re: Vierstimmiger Gesang lässt Ties mit Noten kollidieren
« Antwort #2 am: Montag, 17. März 2014, 22:29 »
Vielen Dank schonmal für diese Lösung :) Aber ja, es ist mit Kanonen auf Spatzen geschossen, außerdem bringt diese manuelle Problembeseitigung neue Probleme: Ich habe probiert, die Anfangspunkte der Bögen möglichst wie LilyPond-Original zu setzen, durch das Verkürzen scheint aber der Bogen flacher zu werden, so dass er sehr nah an den Notenlinien liegt (sowas verhindert LilyPond doch normalerweise bei „unbehandelten“ Bögen, oder?) … Und es wäre ja schon schön, wenn LilyPond das selbst könnte, ohne dass ich da groß mit verschiedenen Werten rumprobieren muss.

Mit anderen Worten: So klappts zur Not schonmal, aber hat jemand eine Idee, wie ich LilyPond klar machen kann, dass da Noten sind?

So, und während ich diesen letzten Satz geschrieben habe, ist mir eine Idee gekommen, die funktioniert: Um den Bogen der zweiten Stimme zu kürzen, habe ich den Schlusston g2 zu einem Akkord <g \hide e>2 umgebaut – das versteckte e ist gerade der Schlusston der dritten Stimme ;)
\version "2.18.0"
\language "deutsch"

melodie = \relative c' {
  \cadenzaOn
  <<
    \context Voice = "eins" {
      s2.*3
      \stemUp
      b'8[ b] b2~
      b1\longfermata
    }
    \context Voice = "zwei" {
      s2.*2
      g8[ g] g2*5/2~\fermata
      <g \hide e>1
    }
    \context Voice = "drei" {
      s2.
      e8[ e] e2*4~\fermata
      <e \hide c>1
    }
    \context Voice = "vier" {
      c8[ c] c2*11/2~\fermata
      c1
    }
  >>
  \bar "|."
}

text = \lyricmode {
  Chee -- ri --
  \set associatedVoice = #"drei"
  o! Chee -- ri --
  \set associatedVoice = #"zwei"
  o! Chee -- ri --
  \set associatedVoice = #"eins"
  o! Chee -- ri --
  o! __
}

\score {
  <<
    \new Staff \with {
      \remove Time_signature_engraver
    } {
      \melodie
    }
    \new Lyrics \lyricsto "vier" {
      \text
    }
  >>
}
« Letzte Änderung: Montag, 17. März 2014, 22:31 von fugenkomponist »

RobUr

  • Member
Re: Vierstimmiger Gesang lässt Ties mit Noten kollidieren
« Antwort #3 am: Dienstag, 18. März 2014, 05:33 »
Hallo zusammen,

schaut doch mal hier: NR 1.2.1 Writing rhythms: Ties > Selected Snippets Using ties with arpeggios
Stichwort tieWaitForNote

Wär das was für euch?

Gruß, Robert

fugenkomponist

  • Member
Re: Vierstimmiger Gesang lässt Ties mit Noten kollidieren
« Antwort #4 am: Dienstag, 18. März 2014, 10:24 »
Mit tieWaitForNote hab ich es auch schon ausprobiert (und halt die Halben nicht skaliert), aber da ergibt sich das gleiche Problem. Oder macht tieWaitForNote auch Stimmen-übergreifende Ties möglich? Scheint nicht so:
melodie = \relative c' {
  \set tieWaitForNote = ##t
  \cadenzaOn
  <<
    \context Voice = "eins" {
      s2.*3
      \stemUp
      b'8[ b] b2~
      <b g e c>1\longfermata
    }
    \context Voice = "zwei" {
      s2.*2
      g8[ g] g2*5/2~\fermata
    }
    \context Voice = "drei" {
      s2.
      e8[ e] e2*4~\fermata
    }
    \context Voice = "vier" {
      c8[ c] c2*11/2~\fermata
    }
  >>
  \bar "|."
}
Das liefert mir nur einen einzigen Bogen, die anderen drei tauchen nicht auf (merkwürdigerweise ohne die übliche Fehlermeldung „unbegrenzter Haltebogen“ …)

Ich glaub, ich verwende trotzdem lieber tieWaitForNote als die skalierten Halben:
melodie = \relative c' {
  \set Staff.tieWaitForNote = ##t
  \cadenzaOn
  <<
    \context Voice = "eins" {
      s2.*3
      \stemUp
      b'8[ b] b2~
      b1\longfermata
    }
    \context Voice = "zwei" {
      s2.*2
      g8[ g] g2~\fermata
      s2.
      <g \hide e>1
    }
    \context Voice = "drei" {
      s2.
      e8[ e] e2~\fermata
      s2.*2
      <e \hide c>1
    }
    \context Voice = "vier" {
      c8[ c] c2~\fermata
      s2.*3
      c1
    }
  >>
  \bar "|."
}
« Letzte Änderung: Dienstag, 18. März 2014, 10:27 von fugenkomponist »