Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: Pondus am Mittwoch, 4. Juli 2012, 09:41

Titel: pitchedTrill unter längerem TrillSpan
Beitrag von: Pondus am Mittwoch, 4. Juli 2012, 09:41
Hallo zusammen!

Dies ist mein erster Forenbeitrag. Ich bin nun schon einige Monate bei lilypond und habe in kurzer Zeit unglaublich gute Ergebnisse erzielt.

Trotz vielen Probierens bekomme ich folgendes Problem nicht in den Griff: Ich möchte gerne verschiedene pitchedTrills unter nur einem langem TrillSpan setzen.

Leicht möglich ist es ja, mit mehreren Spanners zu arbeiten.

\version "2.14.2"
\include "deutsch.ly"
\relative c'' {
c1\startTrillSpan
\pitchedTrill a\startTrillSpan b
\pitchedTrill e\startTrillSpan fis\stopTrillSpan
}

Ich habe versucht, mit Stichnoten in Klammern den Effekt zu simulieren; aber die Klammern um Noten schließen die Vorzeichen leider nicht mit ein. Auch müssten die Stichnoten näher an die Hauptnoten gesetzt sein.

Hat jemand eine Idee?

Danke
Pondus
Titel: Re: pitchedTrill unter längerem TrillSpan
Beitrag von: harm6 am Mittwoch, 4. Juli 2012, 17:51
Hallo Pondus,

herzlich willkommen im Forum.

Ich habe leider nur einen work-around für Dich.
Erklärungen im Code.

\version "2.14.2"

\include "deutsch.ly"

trillExtent =
#(define-music-function (parser location value)(number?)
" Verlängert den TrillSpanner um den Wert value nach rechts"
#{
        \override TrillSpanner #'bound-details #'right #'padding = #(* -1 $value)
#})

%%%% \override TrillSpanner #'stencil = #point-stencil
%%%% Reduziert die Ausdehnung der folgenden TrillSpanner-stencils auf de facto 0.
%%%%
%%%% \revert TrillSpanner #'bound-details
%%%% Nimmt \trillExtent wieder zurück
%%%%
%%%% \revert TrillSpanner #'stencil
%%%% Nimmt \override TrillSpanner #'stencil = #point-stencil wieder zurück


m¹ =
\relative c'' {
        \trillExtent #55
        \pitchedTrill c1 \startTrillSpan eis
        \override TrillSpanner #'stencil = #point-stencil
        \pitchedTrill a1 \startTrillSpan b
        \pitchedTrill e' \startTrillSpan fis
        \stopTrillSpan
        \revert TrillSpanner #'bound-details
        \revert TrillSpanner #'stencil
        \break
        \compressFullBarRests
        \override MultiMeasureRest #'staff-position = #'()
        \override MultiMeasureRest #'expand-limit = #3
        R1*8
        \break
        \trillExtent #47
        c1 \startTrillSpan
        \override TrillSpanner #'stencil = #point-stencil
        \pitchedTrill d \startTrillSpan fis
        \pitchedTrill e \startTrillSpan des
        c \stopTrillSpan
        \bar "|."
        \revert TrillSpanner #'bound-details
        \revert TrillSpanner #'stencil
}

m² = \relative c' {
        \override TrillSpanner #'direction = #DOWN
        \trillExtent #55
        \pitchedTrill c1 \startTrillSpan dis
        \override TrillSpanner #'stencil = #point-stencil
        \pitchedTrill h \startTrillSpan cis
        \pitchedTrill a \startTrillSpan his
        \stopTrillSpan
        \revert TrillSpanner #'bound-details
        \revert TrillSpanner #'stencil
        s1*8
        \trillExtent #47
        g1 \startTrillSpan
       
        \override TrillSpanner #'stencil = #point-stencil
        \pitchedTrill f \startTrillSpan gis
        \pitchedTrill e \startTrillSpan fis
        d
}
     

\score {
        \new Staff <<
          \new Voice { \voiceOne \m¹ }
          \new Voice { \voiceTwo \m² }
        >>
}


HTH,
  Harm

P.S.
Eine vernünftige Implementierung würde eine Neudefinition von `pitchedTrill' aus /ly/music-functions-init.ly bedeuten.
Titel: Re: pitchedTrill unter längerem TrillSpan
Beitrag von: harm6 am Mittwoch, 4. Juli 2012, 20:34
Noch einfacher scheint es zu sein den durchgehenden TrillSpanner in eine zweite Stimme zu setzen:

\version "2.14.2"

\include "deutsch.ly"

trillVoice = {
        \override TrillSpanner #'bound-details #'left #'padding = #-1
        s1\startTrillSpan
        s1*5
        s1*15/16
        s1*1/16\stopTrillSpan
}

musicVoice = \relative c'' {
        \override TrillSpanner #'stencil = #point-stencil
        \pitchedTrill c1 \startTrillSpan dis
        \pitchedTrill h \startTrillSpan cis
        \pitchedTrill a \startTrillSpan his
        \pitchedTrill g \startTrillSpan ais
        \pitchedTrill f \startTrillSpan gis
        \pitchedTrill e \startTrillSpan fis
        d\stopTrillSpan
        \revert TrillSpanner #'stencil
}

\new Staff <<
  \new Voice \trillVoice
  \new Voice \musicVoice
  >>

Titel: Re: pitchedTrill unter längerem TrillSpan
Beitrag von: Arnold am Donnerstag, 5. Juli 2012, 08:57
Und hier meine Versuche:
\score {
  \new Staff {
     c''2\startTrillSpan
     \pitchedTrill d''\stopTrillSpan\startTrillSpan e''
     \pitchedTrill d''\stopTrillSpan\startTrillSpan es''
     \pitchedTrill des''\stopTrillSpan\startTrillSpan es''!
     \pitchedTrill cis''\stopTrillSpan\startTrillSpan dis''
     r2\stopTrillSpan
     \bar "|."
  }
  \header {
    piece = \markup { \bold \fontsize #3 \simple
      #(string-append "Version: " (lilypond-version)) }
  }
}

\score {
  \new Staff {
     c''2\startTrillSpan
     \override TrillSpanner #'(bound-details left text) = #f
     \pitchedTrill d''\stopTrillSpan\startTrillSpan e''
     \pitchedTrill d''\stopTrillSpan\startTrillSpan es''
     \pitchedTrill des''\stopTrillSpan\startTrillSpan es''!
     \pitchedTrill cis''\stopTrillSpan\startTrillSpan dis''
     r2\stopTrillSpan
     \bar "|."
  }
  \header {
    piece = \markup \scale #'(0.9 . 1.0) {
      "\\override TrillSpanner #'(bound-details left text) = #f"
    }
  }
}

\score {
  \new Staff {
     \override TrillSpanner #'Y-offset = #4
     c''2\startTrillSpan
     \override TrillSpanner #'(bound-details left text) = ##f
     \pitchedTrill d''\stopTrillSpan\startTrillSpan e''
     \pitchedTrill d''\stopTrillSpan\startTrillSpan es''
     \pitchedTrill des''\stopTrillSpan\startTrillSpan es''!
     \pitchedTrill cis''\stopTrillSpan\startTrillSpan dis''
     r2\stopTrillSpan
     \bar "|."
  }
  \header {
    piece = \markup \scale #'(0.9 . 1.0) {
      "\\override TrillSpanner #'Y-offset = #4 ... \\override TrillSpanner #'(bound-details left text) = #f"
    }
  }
}

\score {
  \new Staff {
     \override TrillSpanner #'stencil = ##f
     c''2\startTrillSpan
     \pitchedTrill d''\startTrillSpan e''
     \pitchedTrill d''\startTrillSpan es''
     \pitchedTrill des''\startTrillSpan es''!
     \pitchedTrill cis''\startTrillSpan dis''
     r2\stopTrillSpan
     \bar "|."
  }
  \header {
    piece = \markup \scale #'(0.9 . 1.0) {
      "\\override TrillSpanner #'stencil = ##f"
    }
  }
}

\score {
  \new Staff {
     << {
       \override TrillSpanner #'stencil = ##f
       c''2\startTrillSpan
       \pitchedTrill d''\startTrillSpan e''
       \pitchedTrill d''\startTrillSpan es''
       \pitchedTrill des''\startTrillSpan es''!
       \pitchedTrill cis''\startTrillSpan dis''
       r2\stopTrillSpan
     } \new Voice {
       \hideNotes
       c''2*5\startTrillSpan
       s2\stopTrillSpan
     } >>
     \bar "|."
  }
  \header {
    piece = \markup \scale #'(0.9 . 1.0) {
      "parallel Music mit \\new Voice (und mit Warnungen beim kompilieren)"
    }
  }
}

\score {
  \new Staff {
     \override TrillSpanner #'stencil = ##f
     \override TextSpanner #'(bound-details left text) = \markup { \translate #'( 0 . -1 ) \musicglyph #"scripts.trill" }
     \override TextSpanner #'(bound-details left padding) = #0.5
     \override TextSpanner #'style = #'zigzag
     \override TextSpanner #'thickness = #3.0
     \override TextSpanner #'zigzag-length = #0.7
     \override TextSpanner #'zigzag-width = #1.3
     c''2\startTrillSpan\startTextSpan
     \pitchedTrill d''\startTrillSpan e''
     \pitchedTrill d''\startTrillSpan es''
     \pitchedTrill des''\startTrillSpan es''!
     \pitchedTrill cis''\startTrillSpan dis''
     r2\stopTrillSpan\stopTextSpan
     \bar "|."
  }
  \header {
    piece = \markup \column \scale #'(0.9 . 1.0) {
      "\\override TrillSpanner #'stencil = ##f"
      "\\override TextSpanner #'(bound-details left text) = \\markup { \\translate #'( 0 . -1 ) \\musicglyph #\"scripts.trill\" }"
      "\\override TextSpanner #'(bound-details left padding) = #0.5"
      "\\override TextSpanner #'style = #'zigzag"
      "\\override TextSpanner #'thickness = #3.0"
      "\\override TextSpanner #'zigzag-length = #0.7"
      "\\override TextSpanner #'zigzag-width = #1.3"
    }
  }
}

Noch nicht untersucht:

Arnold
Titel: Re: pitchedTrill unter längerem TrillSpan
Beitrag von: Pondus am Donnerstag, 5. Juli 2012, 23:05
Hallo Harm, hallo Arnold!

Umwerfend! Danke Euch sehr sehr herzlich dafür, dass Ihr Euch so viel Mühe mit "meinem" Problem macht!

Ich habe alle Lösungsmöglichkeiten in meiner Datei getestet. Alle Möglichkeiten funktionieren genau so wie erhofft.

Also noch mal vielen Dank und bis bald
Pondus