Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: LaLuneNoir am Samstag, 9. Februar 2019, 14:05

Titel: Seltsames Verhalten bei eigener DynamikbezeichnungHa
Beitrag von: LaLuneNoir am Samstag, 9. Februar 2019, 14:05
Hallo liebes Forum,

hilfe war ich lange nicht hier, ich habe gar nicht gemerkt, dass das alte Forum ersetzt wurde... Bin wohl recht selbstständig in Lilypond geworden.

Aber jetzt habe ich doch mal wieder ein Problem:

\version "2.19.82"

vardyn =
  #(make-dynamic-script
    (markup #:line
            (#:normal-text "this is a test")))

\new StaffGroup <<
  \new Staff
    \relative c'' {
      a\vardyn b
    }
>>


Das individuelle Dynamikzeichen verhält sich in diesem snippet wie ein markup mit \textLengthOn und nicht wie ein normales Dynamikzeichen. Das Problem verschwindet sobald man die StaffGroup entfernt:

\version "2.19.82"

vardyn =
  #(make-dynamic-script
    (markup #:line
            (#:normal-text "this is a test")))

\new Staff
  \relative c'' {
    a\vardyn b
}


Hat irgendwer von euch eine Idee, was da los ist?

Vielen Dank!

Der schwarze Mond
Titel: Antw:Seltsames Verhalten bei eigener DynamikbezeichnungHa
Beitrag von: Malte am Samstag, 9. Februar 2019, 14:51
Hallo und willkommen zurück!

Da ist los, daß LilyPond seit einer Version 2.19.xx Dynamikangaben nicht mehr mit Taktstrichen zwischen Systemen kollidieren läßt, siehe Anhang für einen Vergleich von 2.18.2 und 2.19.82.

Daß solche Taktstriche (genannt SpanBar) bei nur einem System und vor allem am Systemanfang gar nicht vorkommen, scheint da nicht in Erwägung gezogen zu werden. Dein Minimalbeispiel ist sehr gut, nun muß ich ausnahmsweise aber mal nach mehr Code fragen ;) Hast du auch in deinem Stück nur einen Staff in der StaffGroup? Und steht die Sache auch dort am Anfang der Zeile?
Titel: Antw:Seltsames Verhalten bei eigener DynamikbezeichnungHa
Beitrag von: LaLuneNoir am Samstag, 9. Februar 2019, 16:16
Hallo Malte,

danke für die schnelle Antwort. Na toll, da wechselt man auf die neueste Version, um ein Layout-Problem zu lösen und schafft sich ein neues. Aber eigentlich ist das nicht ganz blöd, dass Lilypond diese Kollision vermeiden will, dass musste ich schon oft selbst korrigieren.

Hier ein wenig upgedateter Code.

\version "2.19.82"

vardyn =
  #(make-dynamic-script
    (markup #:line
            (#:normal-text "1.x"
             #:dynamic "f"
             #:hspace -.8
             #:normal-text ", 2.x"
             #:dynamic "mf")))

\new Score <<
  \new StaffGroup <<
    \new Staff
      \relative c'' {
        \once \override DynamicText.self-alignment-X = #-.8
        a4\vardyn b a a a a a a
        \once \override DynamicText.self-alignment-X = #-.8
        a\vardyn b a a a a a a
      }
    \new Staff
      \relative c'' {
        \once \override DynamicText.self-alignment-X = #-.8
        a4\vardyn b a a a a a a
        \once \override DynamicText.self-alignment-X = #-.8
        a\vardyn b a a a a a a
      }
  >>
  \new PianoStaff <<
    \new Staff
      \relative c'' {
        a4 b a a a a a a
        a b a a a a a a
      }
    \new Dynamics {
      \once \override DynamicText.self-alignment-X = #-.8
        s1\vardyn s1
      \once \override DynamicText.self-alignment-X = #-.8
        s1\vardyn s1
    }
    \new Staff
      \relative c'' {
        a4 b a a a a a a
        a b a a a a a a
      }
  >>
>>


Die Dynamik kommt öfters vor, auch in der Partitur. Das ganze wäre eigentlich gar kein Problem, ich könnte stattdessen ja ein Markup nehmen, aber in der Partitur gibt es eine Klavierstimme mit \Dynamics context und da wird dann ein Markup nicht zentriert. Deshalb habe ich die Lösung mit dem Scheme-Code gewählt.

A propos span-bars: Das Problem taucht tatsächlich nicht auf, wenn ich statt einer StaffGroup ein ChoirStaff nehme. Allerdings hilft das entfernen des Span-bar-engravers auch nicht.
Titel: Antw:Seltsames Verhalten bei eigener DynamikbezeichnungHa
Beitrag von: Malte am Samstag, 9. Februar 2019, 18:03
Hm ... Irgendwie finde ich, daß die Noten nicht nach rechts verschoben werden sollten. Könnte ein Bug sein ... Ich schau mir das bei Gelegenheit nochmal genauer an.
Titel: Antw:Seltsames Verhalten bei eigener DynamikbezeichnungHa
Beitrag von: LaLuneNoir am Samstag, 9. Februar 2019, 20:52
Das wäre super, danke. Vielleicht gehe ich dann doch auf 18.2 zurück, das andere Problem löst sich glaube ich eh anders.
Titel: Antw:Seltsames Verhalten bei eigener DynamikbezeichnungHa
Beitrag von: Malte am Sonntag, 10. Februar 2019, 10:23
Du kannst die extra-spacing-width anpassen, dann wird die Note nicht nach rechts verschoben. Allerdings kann es bei sehr langen Dynamikbezeichnungen und sehr kurzen Takten dann da halt doch zu ner Überschneidung mit dem Taktstrich kommen ;)

\version "2.19.82"

vardyn =
- \tweak self-alignment-X #-.8
- \tweak extra-spacing-width #'(0 . -9)
- #(make-dynamic-script
    (markup #:line
      (#:normal-text "1.x"
        #:dynamic "f"
        #:hspace -.8
        #:normal-text ", 2.x"
        #:dynamic "mf")))

\new Score <<
  \new StaffGroup <<
    \new Staff
    \relative c'' {
      a4\vardyn b a a a a a a
      a\vardyn b a a a a a a
    }
    \new Staff
    \relative c'' {
      a4\vardyn b a a a a a a
      a\vardyn b a a a a a a
    }
  >>
  \new PianoStaff <<
    \new Staff
    \relative c'' {
      a4 b a a a a a a
      a b a a a a a a
    }
    \new Dynamics {
      s1\vardyn s1
      s1\vardyn s1
    }
    \new Staff
    \relative c'' {
      a4 b a a a a a a
      a b a a a a a a
    }
  >>
>>
Titel: Antw:Seltsames Verhalten bei eigener DynamikbezeichnungHa
Beitrag von: harm6 am Sonntag, 10. Februar 2019, 10:41
Malte hat das meiste schon gesagt bzw gezeigt, hier nochmal in kurzer Zusammenfassung: In 2.19.82 ist DynamicText.extra-spacing-width in StaffGroup auf #f gesetzt, während der grob-default den Wert '(+inf.0 . -inf.0) hat. Der Grund liegt in dem Bestreben Kollisionen mit dem SpanBar zu vermeiden.
Das kann man generell rückgängig machen mit:
\new StaffGroup \with { \revert DynamicText.extra-spacing-width } ...
oder indem man extra-spacing-width fallweise anpasst.

Gruß,
  Harm
Titel: Antw:Seltsames Verhalten bei eigener DynamikbezeichnungHa
Beitrag von: LaLuneNoir am Sonntag, 10. Februar 2019, 21:54
Ah, ok. Wunderbar, vielen Dank für die Lösungen. Grundsätzlich hat mich das Problem mit der Kollision von Dynamik und Taktstrich auch schon oft gestört, aber bei der gewählten Lösung ist es gut, dass man recht einfach auf das alte Verhalten ausweichen kann, vor allem, wenn es um lange Dynamikbezeichnungen geht, denn die müssen halt leider doch manchmal ohne Råcksicht auf Kollisionen gesetzt werden.
Vielen Dank für eure Hilfe noch einmal.