Unterdrückung von Dynamics Bezeichnungen bei \partcombine

Begonnen von Swetom2011, Montag, 7. November 2022, 19:13

« vorheriges - nächstes »

Swetom2011

Wie bereits in einem andren Posting habe ich die Noten für ein symphonisches Werk gesetzt. Generell hat alles gut funktioniert und vor allem die einzelnen Instrumentalstimmen sind alle ok, aber mit der Partitur habe ich einige Schwierigkeiten.

In folgende Beispiel gibt es mindestens 3 Problemfälle (mein Beispiel ist im Umfang zwar um sicher 99 % gegenüber der Partitur reduziert aber ist immer noch nicht wirklich ,,Minimal" aber hoffentlich geht's auch so. Auch ist die Formatierung nicht mehr optimal, seitdem ich mein ,,Original" zusammengestampft habe.

1.   Der Hairpin in Takte 25 und 25 sollte in Takt 25 aufhören
2.   Die doppelte dynamische Bezeichnung, d.h. oben/unten sollte unterdrückt werden und nur einmal gezeigt werden
3.   Fehlermeldung bei einen fzp < molto> auf zwei ganze Noten (Zeile 78 – 83 im ,,Code")

Zu 1) Das Einsetzen eines \! bei einer Pause hat keinen sichtbaren Erfolg. Muss ich hierzu einen ,,parallelen" Takt einfügen, mit unsichtbaren Pausen?
Zu 2) Hierzu gibt es in Snippet Repository ein Beispiel, siehe https://lsr.di.unimi.it/LSR/Item?id=372, aber wie binde ich diese Filterfunktion in mein Beispiel ein?
Zu 3) Die Fehlermeldung ist

C:/Users/tommy/AppData/Local/Temp/frescobaldi-rnvzpcfb/tmpd9tc8xxv/RemoveEngraverProblemfaelle.ly:43:9: warning: unterminated decrescendo
    a1)
        \> { s4 s4 \pp s2 }

Die ,,Konstruktion" die ich benutze ist; gibt's da was Besseres?

<<
    e1 ( \fzp { s4 s\< s\> _\mol s\! }
  >>
  <<
    fis1 ) \>  { s4 s4 \pp s2 }
  >><<
    e1 ( \fzp { s4 s\< s\> _\mol s\! }
  >>
  <<
    fis1 ) \>  { s4 s4 \pp s2 }
  >>


Und hier ist das ganze Stück
\version "2.22.2"

% Definitions
fzp = #(make-dynamic-script (markup #:line (
#:dynamic "fz" #:hspace -0.5
#:dynamic "p" )))

mol = \markup { \medium \italic "molto" }

% Musik
HornOne =
\relative c'' {

  \key c \major
   
  \transposition f
   
  r4 f2 \pp bes4~
  bes4 \clef bass bes,,2~ \cresc bes8 \clef treble bes''8~ \f \>
  bes4 r4 \! r2
  R1
  c,2 \f c4 c
  bes8 c \cresc des2 c4
  bes2. \ff \> r4 \p
  R1
  d,2 \mf es4  f8.\cresc g16
  as8 bes des2 \f ( c8 ) es
  des2 c4 \cresc ( d!8) es
  f2. \ff \>  r4 \p \!
  R1*3
  r2 r4 bes,~ \pp
  bes2~ bes4. g8~ (
  g4 \cresc bes des8 c ) bes-- c--
  des4. ( \mf \< c8 b!) as'-- g-- f--
  es4 \ff ges ( f g,!)
  c4 \dim f,2  ( fis4) \p \<
  a2( \rfz \> b4) \p  r
  r2 r4 bes \pp
  <<
    bes1 (  \fzp { s4 s\< s\> _\mol s\! }
  >>
  <<
    a1) \> { s4 s4 \pp s2 }
  >>
  r4 f2 \pp bes4~
  bes4 \clef bass bes,,2~ \cresc bes8 \clef treble bes''8~ \f
  bes4  r4 r2
  R1
}

HornTwo = 
\relative c'' {
  \key c \major
   
  \transposition f
   
  r4 f,2 \pp bes4 ~
  bes4 \clef bass bes,,2 ~ \cresc bes8 \clef treble bes''~ \f \>
  bes4 r \! r2
  R1 %\fermata
  es,2 \f es4 es
  es8 es  \cresc f2 c4
  d2.\ff \> r4 \p
  R1
  bes2 \mf c4 des \cresc
  es8 g bes2 \f ( as8 ) g
  f4. \< g8 -> \! as4. \cresc g8
  d'2. \ff \> r4 \p \!
  R1*3
  r2 r4 bes, \pp ~
  bes2~ bes4. g8~ (
  g4 \cresc bes as) es'8--  as--
  as2 ~ \mf \< as4 bes8-- b--
  c4 \ff a! as g(
  bes4 ) \dim as8 -> f-> d4( c) \p \<
  es2 ( \rfz \> d4 \p ) r
  r2 r4 <<bes \pp  {s \<}>>
  <<
    e1 ( \fzp { s4 s\< s\> _\mol s\! }
  >>
  <<
    fis1 ) \>  { s4 s4 \pp s2 }
  >>
  r4 \! f,2 \pp  bes4 ~
  bes4 \clef bass bes,,2 ~ \cresc bes8 \clef treble bes''8 \f ~
  bes4 r r2
  R1
}


% Layout issues
\layout {
  \context {
    \Score
    \override SpacingSpanner.common-shortest-duration = #(ly:make-moment 1/16)
    }
  \context {
    \Staff
      \RemoveEmptyStaves
      \override Hairpin.minimum-length = #8
      \override DynamicTextSpanner.style = #'none
  }
}


% Filter Function from https://lsr.di.unimi.it/LSR/Snippet?id=372
#(define (filterOneEvent event)
  (let ((eventname (ly:music-property  event 'name)))
    (not
      (or   
        ;; add here event name you do NOT want
        (eq? eventname 'MultiMeasureTextEvent)
        (eq? eventname 'AbsoluteDynamicEvent)
        (eq? eventname 'TextScriptEvent)
        (eq? eventname 'ArticulationEvent)))))
filtermusic = #(define-music-function (music) (ly:music?)
   (music-filter filterOneEvent music))
%End of this is new


\score {
%  \new StaffGroup <<
    \new Staff = "horns" {
      \set Staff.instrumentName = \markup {"I, II" }
      \set Staff.shortInstrumentName = "I, II"
      \partCombine \HornOne \HornTwo
    }
   
}