Ausdrucksbezeichnungen unterdrücken

Begonnen von georgfx, Dienstag, 1. Oktober 2019, 20:17

« vorheriges - nächstes »

georgfx

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}
>>
}

georgfx

... 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

Manuela

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
  >>
}
Danke für eure Hilfe
viele Grüße
-- Manuela

Malte

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:

  • Wie ich es getan habe HYMdyn in die höchste Stimme mit reinpacken. Unelegant, funktioniert auch möglicherweise in einem komplexeren Beispiel nicht wie es soll.
  • Nur die Fermaten (Script) per \omit aus den einzelnen Stimmen löschen, wie Manuela es vorgemacht hat. Kann ebenfalls nach hinten losgehen.
  • \tag verwenden. In den einzelnen Stimmen würde man etwas schreiben wie \tag stimme es1\fermata \tag partitur es1 und dann per \keepWithTag oder \removeWithTag nur das eine oder das andere anzeigen lassen in Partitur und Einzelstimme.
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 >>
    }

Manuela

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" }
Danke für eure Hilfe
viele Grüße
-- Manuela

georgfx

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