Zwei verschiedene Arpeggios gleichzeitig - geht das?

Begonnen von Manuela, Donnerstag, 4. Mai 2023, 10:16

« vorheriges - nächstes »

Manuela

Man kann Arpeggios als geschwungene Linien oder als Klammern setzen, aber beides gleichzeitig, geht das?
Oder gibt es eine ganz andere Lösung, wie ich die beiden Noten staffübergreifend mit einer Klammer verbinden kann?
Danke für eure Hilfe
viele Grüße
-- Manuela

juergen74

Hallo,

mit zwei einzelnen Arpeggios habe ich das auch nicht hinbekommen. Von Harm gibt es eine Funktion zum Klammern zeichnen:

\version "2.24.0"

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% https://www.mail-archive.com/lilypond-user@gnu.org/msg119983.html
%% by Harm
parentheses =
#(define-music-function (shorten-pair padding dir)
   ((pair? '(0 . 0)) number? ly:dir?)
   "@var{dir} sets the opening/closing direction of the parentheses.
  @var{padding} moves the parentheses in X-axis direction, recognized by the
  spacing-engine.  See limitations below, though.
  The optional @var{shorten-pair} may be used to adjust the parentheses in
  Y-axis direction.
  The final parentheses will cover all Staffs of the current system.
  Limitation:
  Accidentals, dots, etc are not taken into account.
  To avoid collisions adjusting @var{padding} neds to be done manually."
   #{
     \once \override Staff.GridPoint.X-offset = $padding
     \once\override Score.GridLine.shorten-pair = $shorten-pair
     \once \override Score.GridLine.stencil =
     #(lambda (grob)
        (let* ((stil (ly:grid-line-interface::print grob))
               (stil-y-ext (ly:stencil-extent stil Y))
               (thick (ly:grob-property grob 'thickness 0.1))
               ;; hijacking shorten-pair
               (shorten-pair (ly:grob-property grob 'shorten-pair '(0 . 0)))
               ;; GridLine goes from the middle of top to bottom staff
               ;; Thus we extend it by 2 (the default staff-space) and add a
               ;; little extra over-shoot, i.e 0.5.
               ;; The new parentheses starts at '(- dir) in X-axis direction to
               ;; avoid collisions with preceding grobs
               ;; The values are tweakable via overrides for
               ;; Score.GridLine.shorten-pair.
               ;; TODO get staff-space from layout
               (start
                (cons (- dir)
                  (- (car stil-y-ext) 2.5 (- (car shorten-pair)))))
               (stop
                (cons (- dir)
                  (+ (cdr stil-y-ext) 2.5 (- (cdr shorten-pair)))))
               ;; see 'make-tie-stencil' from stencil.scm
               (height-limit 0.7)
               (ratio 0.33)
               ;; taken from bezier-bow.cc
               (F0_1
                (lambda (x) (* (/ 2 PI) (atan (* PI x 0.5)))))
               (slur-height
                (lambda (w h_inf r_0) (F0_1 (* (/ (* w r_0) h_inf) h_inf))))
               (width (abs (- (cdr start) (cdr stop))))
               (angularity 0.5)
               (height (slur-height width height-limit ratio)))
          (make-bow-stencil
           start
           stop
           thick angularity height (- dir))))
   #})
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\new PianoStaff <<
  \new Staff {
    \relative c' {
      \key a \major
      <<
        {
          e'16 fis16 16 16
        }
        \\
        {
          \crossStaff { \dotsUp \parentheses #'(8.5 . 8.0) #0.4 #RIGHT cis,4. }
        }
      >>
    }
  }
  \new Staff {
    \relative c {
      \clef bass
      \key a \major
      <<
        {
          \once \override Staff.Arpeggio.positions = #'(-2 . 3)
          <a e' cis'>2.\arpeggio
        }
      >>
    }
  }
>>

\layout {
  \context {
    \Score
    \consists "Grid_line_span_engraver"
    \override GridLine.stencil = ##f
  }
  \context {
    \Staff
    \remove "Time_signature_engraver"
    \consists "Grid_point_engraver"
    %% adjust the value if needed
    gridInterval = #(ly:make-moment 1/64)
  }
  \context {
    \PianoStaff
    \consists "Span_stem_engraver"
  }
}

Grüße, Jürgen.

juergen74

#2
... in einem Staff geht das mit Bordmitteln ja einfach:

\version "2.24.0"

\new Staff {
  \relative c' {
    <<
      {
        \arpeggioParenthesis
        < c' f >\arpeggio
      }
      \\
      {
        < c, f >\arpeggio
      }
    >>
  }
}

Das hier funktioniert aber nicht wie gedacht:
\version "2.24.0"

\new PianoStaff <<
  \new Staff {
    \relative c' {
      \key a \major
      <<
        {
          e'16 fis16 16 16
        }
        \\
        {
          \once \set PianoStaff.connectArpeggios = ##t
          \once \override Score.Arpeggio.X-offset = -0.5
          \once \override Score.Arpeggio.stencil = #ly:arpeggio::brew-chord-slur
          \crossStaff { \dotsUp cis,4. \arpeggio }
        }
      >>
    }
  }
  \new Staff {
    \relative c {
      \clef bass
      \key a \major
      <<
        {
          \stemDown
          cis'2. \arpeggio
        }
        \\
        {
          \once \override Staff.Arpeggio.positions = #'(-2 . 3)
          < a, e' >2. \arpeggio
        }
      >>
    }
  }
>>

\layout {
  \context {
    \Staff
    \remove "Time_signature_engraver"
  }
  \context {
    \PianoStaff
    \consists "Span_stem_engraver"
  }
}

Grüße, Jürgen.

Edit: "It is not possible to mix connected arpeggios and unconnected arpeggios in one PianoStaff at the same point in time. The simple way of setting parenthesis-style arpeggio brackets does not work for cross-staff arpeggios; " Aus der NR. Also geht das wohl nicht staffübergreifend mit zwei getrennten Arpeggios...

Manuela

Zitat von: juergen74 am Donnerstag,  4. Mai 2023, 16:58Hallo,

mit zwei einzelnen Arpeggios habe ich das auch nicht hinbekommen. Von Harm gibt es eine Funktion zum Klammern zeichnen:

Grüße, Jürgen.

Danke, genau so etwas wollte ich. Wie es realisiert wird, ist mir egal, es zählt das Ergebnis  :)
Danke für eure Hilfe
viele Grüße
-- Manuela