Warnung: "avoid-slur nicht gesetzt?"

Begonnen von ingmar, Montag, 15. Juni 2020, 20:49

« vorheriges - nächstes »

ingmar

Hi,

bei der Kombination von Nachschlag ("\afterGrace"), einem darüber notierten (\set suggestAccidentals = ##t), "erzwungenen" ("!") Vorzeichen und einem Legatobogen erhalte ich immer eine Warnung mit dem Hinweis "Grob für Legatobogen wird ignoriert: AccidentalSuggestion. avoid-slur nicht gesetzt?". Was passiert hier? Wie vermeide ich die Warnung?

\version "2.20.0"
\language english
\relative {
d'2 \afterGrace e4( { \once \set suggestAccidentals = ##t d!16 e) }
}


Danke, Gruß,
--ingmar

Schneider

=> (https://code.google.com/archive/p/lilypond/issues/3729):

\version "2.20.0"
\language english
\relative {
  d'2
  \afterGrace
  e4(  { 
    \once \set suggestAccidentals = ##t
    \once \override AccidentalSuggestion.avoid-slur = #'inside
    d!16 e) }
}


~Pierre

ingmar

#2
OK, ist also nicht zu vermeiden, und keiner weiß so recht, warum eigentlich... oder der Fall tritt einfach zu selten auf, als dass ihn jemand reparieren möchte.

Hab mal versucht, die Warnung künstlich zu unterdrücken. Leider klappt das so einfach auch nicht. Muss ich mal analysieren; ich werde dafür möglicherweise einen neuen Thread aufmachen.

Danke!

--ingmar

amateur

ich habe auch so eine Warnung, die ich nicht verstanden habe, diese Mal bei dem Setzen eines Trillers.
\version "2.20.0"
\include "deutsch.ly"
\score {
  \new Staff {
    \time 4/4
    \key c \major
    \clef treble
    %\autoBeamOff
    \relative c' {
      \acciaccatura h8^"Lento lugubre" h2~\pp\<^( h8 gis4\p h8~ |
      h8) gis4^( h8~ \tuplet 3/2 { h8 gis! h~ } \tuplet 5/4 { h16[ gis! h gis! h~] } |
      \tuplet 6/4 { h16[ gis h gis! h gis!] } \pitchedTrill h4^~\startTrillSpan_\markup {\parenthesize \dynamic f }  gis!   h2)\stopTrillSpan
    }
  }
}

Schneider

Hallo Amateur:

\version "2.20.0"
\include "deutsch.ly"
\score {
  \new Staff {
    \time 4/4
    \key c \major
    \clef treble
    %\autoBeamOff
    \relative c' {
      \acciaccatura h8^"Lento lugubre" h2~\pp\<^( h8 gis4\p h8~ |
      h8) gis4^( h8~ \tuplet 3/2 { h8 gis! h~ } \tuplet 5/4 { h16 gis! h gis! h~ } |
      \tuplet 6/4 { h16 gis h gis! h gis! }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      \once\override TrillPitchAccidental.avoid-slur = #'inside
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      \pitchedTrill
      h4^~ _\markup { \parenthesize \dynamic f } \startTrillSpan gis! h2)\stopTrillSpan
    }
  }
}

harm6

Auch wenn es in den Beispielen dieses Threads nicht so aussieht, so gibt es doch Fälle bei denen der Wert auf den avoid-slur gesetzt wird, zu unterschiedlichen Ergebnissen führt.
Ich spekuliere, daß kein default gesetzt ist, weil in den Fällen in denen es tatsächlich einen Unterschied ausmacht, die Meinungen zu oft divergieren.
Falls ich da richtig liege, ist das nicht-setzen eines default aber durchaus diskutabel, imho.

Warnungen kann man ausschalten mittels
#(ly:expect-warning "Ignoring grob for slur")
Bzw dem deutschsprachigen Äquivalent. Allerdings braucht es für jede einzelne Warnung ein neues ly:expect-warning.

Gruß,
  Harm

ingmar

Zitat von: harm6 am Samstag, 20. Juni 2020, 13:20
Auch wenn es in den Beispielen dieses Threads nicht so aussieht, so gibt es doch Fälle bei denen der Wert auf den avoid-slur gesetzt wird, zu unterschiedlichen Ergebnissen führt.
Ja, vermutlich... aber mir ist natürlich überhaupt nicht klar, welche Werte da auftreten könnten und welche Effekte sie hätten.

Daher: Ich hab jetzt das Handwerkszeug, um nun entweder den Wert für avoid-slur 'künstlich' zu setzen oder die Fehlermeldung zu unterdrücken. Ich würde aber nicht gerne in jedem Fall beim Setzen eines Vorzeichens über eine Note erstmal prüfen, ob das innerhalb eines Legatos ist und in diesem Fall dann ausprobieren, ob eine Fehlermeldung kommt, welche das ist, und ob ein Fehler zu sehen ist... Da wär es natürlich schon besser, zu verstehen, welchen Effekt das im schlimmsten Fall haben kann, und sich anschließend generell für einen der beiden Wege (künstliches avoid slur versus Fehlermeldung abknipsen) zu entscheiden.

Gruß,
--ingmar

harm6

Grundsätzlich kann 'avoid-slur auf 'inside, 'outside, 'around bzw 'ignore gesetzt werden.

Es gibt auch den regtest slur-script-inside.ly dazu, hier in einer etwas ausgeweiteten Variante:

\relative c''{
    \clef alto
    \slurUp
    \override Script.slur-padding = #0.3
    \once \override Script.avoid-slur = #'inside
    c4(^\downbow b)
    \once \override Script.avoid-slur = #'around
    c4(^\downbow b)
    \once \override Script.avoid-slur = #'outside
    c4(^\downbow b)
    \once \override Script.avoid-slur = #'ignore
    c4(^\downbow b)
}


Den Unterschied zwischen 'outside und 'around habe ich nie verstanden, ist auch hier nicht bemerkbar.

Grundsätzlich wird also das Verhalten von manchen Objekten, die einem Slur im Wege stehen, geregelt. Wobei sowohl das Objekt selbst als auch der Slur verändert werden kann (manchmal aber nicht zwangsläufig).


Im konkreten Fall, AccidentalSuggestion, würde ich wahrscheinlich avoid-slur auf 'ignore setzen, da sich die beiden sowieso meist aus dem Wege gehen (falls keine sonstigen Setzungen erfolgt sind) und nur auftretende Unschönheiten manuell fixen.


Gruß,
  Harm


ingmar

Herzlichen Dank an @Schneider und @harm6 – ich weiß jetzt alles, was ich wissen wollte und habe mein Problem gelöst!

@amateur – wie siehts bei dir aus? bist du geholfen!? : - )

Gruß,
--ingmar

Malte

Zitat von: harm6 am Sonntag, 21. Juni 2020, 16:21
Den Unterschied zwischen 'outside und 'around habe ich nie verstanden, ist auch hier nicht bemerkbar.
Ohne irgendetwas nachgelesen oder getestet zu haben: Könnte 'around so etwas sein wie ,,'inside, falls da Platz ist, sonst 'outside"? Also so nah wie möglich, ohne dafür aber den Bogen zu verschieben.