Deutschsprachiges LilyPond Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: georgfx am Dienstag, 1. Oktober 2019, 20:17

Titel: Ausdrucksbezeichnungen unterdrücken
Beitrag von: georgfx am Dienstag, 1. Oktober 2019, 20:17
Hallo zusammen

Da ich für den Ausdruck der einzelnen Instrumentenstimmen bei allen Instrumenten (gleiche und parallele) Lautstärkenbezeichnungen, Fermaten etc. eingefügt habe, "doppeln" sich diese Fortissimi etc, wenn ich diese in der Partitur in einer Zeile darstellen möchte. Gibt es eine Möglichkeit ggf. eine verborgene "Stimme" für diese Bezeichnungen parallel einzubauen, um diese dann nur einmal anzeigen zu lassen?

Vielen Dank, wahrscheinlich ist es für Euch Profis ganz einfach ;-)

lg Georg


\version "2.19.0" 
\language "deutsch"


HYMhorn = \relative c'{ as2\f c des c f es r4 as,\ff c b es1\fermata}
HYMpos = \relative c'{ es2\f g as as b b r4 es,\ff as as as1\fermata}
HYMtuba = \relative c{ c'2\f c f es des es r4 c\ff c des as2\fermata}


\score {
\new Staff  <<
\clef bass
\new Voice = "horn" {
\voiceOne \HYMhorn}
\new Voice = "pos" {
\voiceOne \HYMpos}
\new Voice = "tuba" {
\voiceTwo \HYMtuba}
>>
}
Titel: Nachtrag: Ausdrucksbezeichnungen unterdrücken
Beitrag von: georgfx am Dienstag, 1. Oktober 2019, 20:28
... und natürlich wäre es auch schön, wenn nicht drei Pausen übereinander in der Partitur erscheinen würden. Vielleicht geht das mit einer zusätzlichen Stimme, die bis auf die Pausen nur "s"-Ausdrücke enthält, die Originalstimme jedoch die "s"-Ausdrück anstatt der Pausen??

nochmals vielen Dank
Georg
Titel: Antw:Ausdrucksbezeichnungen unterdrücken
Beitrag von: Manuela am Dienstag, 1. Oktober 2019, 22:27
Viele Wege führen nach Rom. Hier eine Möglichkeit

\version "2.19.82"
\language "deutsch"


HYMhorn = \relative c'{ as2\f c des c f es r4 as,\ff c b es1\fermata}
HYMpos = \relative c'{ es2\f g as as b b r4 es,\ff as as as1\fermata}
HYMtuba = \relative c{ c'2\f c f es des es r4 c\ff c des as2\fermata}

Dyn = { s2-\f s2 * 6 s2\ff }

\score {
  <<
    \new Staff  <<
      \clef bass
      \new Voice = "horn" {
        \omit DynamicText %% Dynamicbezeichnungen weg
        \omit Script %% Fermata weg
        \voiceOne \HYMhorn
      }
      \new Voice = "pos" {
        \omit DynamicText
        \omit Script
        \omit Rest  %% Pause weg
        \voiceOne \HYMpos
      }
      \new Voice = "tuba" {
        \omit DynamicText
        \omit Script
        \omit Rest
        \voiceTwo \HYMtuba
      }
    >>
    \new Dynamics \Dyn
  >>
}
Titel: Antw:Ausdrucksbezeichnungen unterdrücken
Beitrag von: Malte am Mittwoch, 2. Oktober 2019, 08:13
Hier ein etwas anderer Weg:
\version "2.19.83"
\language "deutsch"


HYMhorn = \relative { as2 c des c f es r4 as, c b es1 }
HYMpos = \relative { es'2 g as as b b r4 es, as as as1 }
HYMtuba = \relative { c'2 c f es des es r4 c c des as2 }
HYMdyn = {
  s1*3\f
  s4 s2.\ff
  s1\fermata
}


\score {
  \new Staff \with {
    \consists Merge_rests_engraver
  } <<
    % \HYMdyn
    \clef bass
    \new Voice = "pos" <<
      \voiceOne  \HYMpos
      \HYMdyn
    >>
    \new Voice = "horn" {
      \voiceThree  \HYMhorn
    }
    \new Voice = "tuba" {
      \voiceTwo \HYMtuba
    }
  >>
}

Seit Version 2.19.80 gibt es den Merge_rests_engraver. Der übernimmt die Sache mit den Pausen, ohne daß man da mit s tricksen muß. Ansonsten hab ich Dynamikbezeichnungen und Fermate in HYMdyn ausgelagert. Eigentlich wollte ich es außerhalb der drei Stimmen (siehe auskommentierte Zeile) einfügen, aber das hat leider mit der Fermate nicht geklappt. Dagegen gibt es drei mögliche Hilfen:Außerdem gibt es noch eine Kleinigkeit: Du schreibst ja drei Stimmen und versiehst die mit \voiceXXX-Befehlen. Da du zweimal \voiceOne hast, ergeben sich die vielen Warnungen und die übereinandergedruckten Noten. Ich würde dir hier zu einmal \voiceThree für die mittlere Stimme raten (siehe oben) oder, falls du die beiden Stimmen tatsächlich gemeinsam halsen willst, zu nur einem Voice-Kontext:
    \new Voice = "horn-pos" {
      \voiceOne  << \HYMhorn \HYMpos >>
    }
Titel: Antw:Ausdrucksbezeichnungen unterdrücken
Beitrag von: Manuela am Mittwoch, 2. Oktober 2019, 12:36
Beliebigen Text in Dynamic einfügen kann man mit folgender Funktion:

#(use-modules (ice-9 regex))
dynamictext =
#(define-event-function (text) (markup?)
   (if (string? text)
       (let* ((underscores-replaced
               (string-map
                (lambda (x) (if (eq? x #\_) #\space x))
                text))
              (split-text (string-split underscores-replaced #\space))
              (formatted (map
                          (lambda (word)
                            (if (string-match "^[mrzfps]*$" word)
                                (markup #:dynamic word)
                                (markup #:normal-text #:italic word)))
                          split-text)))
         #{
           #(make-dynamic-script (make-line-markup formatted))
         #})
       ;; user provided a full-blown markup, so we don't mess with it:
       #{
         #(make-dynamic-script (markup #:normal-text text))
       #}))


Anwendungsbeispiel:
\new Dynamics { s1\f s-\dynamictext "String" s s s s-\dynamictext \markup \bold "markup" s s s-\dynamictext \markup \musicglyph #"scripts.ufermata" }
Titel: Antw:Ausdrucksbezeichnungen unterdrücken
Beitrag von: georgfx am Donnerstag, 3. Oktober 2019, 20:26
Vielen Dank an Euch beide

@Malte: das mit "voiceThree" war mir bekannt, war nach meinem Empfinden nicht so hübsch im Notenbild. noch besser allerdings dein Vorschlag mit einem Voice-Kontext für beide Stimmen. Danke

Gott sei Dank ist mein eigentliches Musikstück in etwa so komplex wie das Minimalbeispiel, so dass ich mit Euren Lösungen auf jeden Fall zurecht komme.

lg Georg