• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

Taktstrich nur in einem System

Begonnen von gbehrendt, Sonntag, 2. August 2015, 19:03

Vorheriges Thema - Nächstes Thema

gbehrendt

Hej.
Aus Snippet 650 habe ich mir die Pfeile abgeguckt, die am Ende eines divisi-Abschnitts in den Streichern das Einschwenken auf die erste Stimme markieren sollen. Will ich das nun mitten im Takt machen, muss ich zusätzlich \bar ""\noBreak vor dem \divisiStopPfeil einfügen – das führt dann aber in Parallelstimmen zu einem (unsichtbaren, aber nicht breitenlosen) Taktstrich, an dem automatische Balken beendet werden und allerlei solche Späße.

Um das grundsätzlich zu beheben, müsste ich es schaffen, die Wirkung des Taktstrichs auf nur einen Staff zu beschränken (unwahrscheinlich) – oder den Pfeil vom Taktstrich unabhängig machen und als Makrup an etwas anderes hängen... Kann mir da jemand helfen?

Besten Dank
– Gereon



\version "2.18.2."

#(define-markup-command (arrow-at-angle layout props angle-deg length fill)
   (number? number? boolean?)
   (let* (
           (PI-OVER-180 (/ (atan 1 1) 34))
           (degrees->radians (lambda (degrees) (* degrees PI-OVER-180)))
           (angle-rad (degrees->radians angle-deg))
           (target-x (* length (cos angle-rad)))
           (target-y (* length (sin angle-rad))))
     (interpret-markup layout props
       (markup
        #:translate (cons (/ target-x 2) (/ target-y 2))
        #:rotate angle-deg
        #:translate (cons (/ length -2) 0)
        #:concat (#:draw-line (cons length 0)
                   #:arrow-head X RIGHT fill)))))

divisiStopPfeil = {
  \once \override Staff.BarLine.stencil =
  #(lambda (grob)
     (ly:stencil-combine-at-edge
      (ly:bar-line::print grob)
      X RIGHT
      (grob-interpret-markup grob #{
        \markup\with-dimensions #'(0 . 0) #'(0 . 0) {
          \translate #'(0 . .14)\arrow-at-angle #60 #(sqrt 8) ##t
        }#})
      0))
}

musik = \relative c'' { d,8 f a d b a g f  g }

<<
\new Staff << \repeat unfold 2 { \musik } >>
\new Staff << { \retrograde \musik \bar ""\noBreak \divisiStopPfeil \stopStaff } >>
>>

harm6

Das Beste was mir im Moment einfält:


\version "2.18.2."

#(define-markup-command (arrow-at-angle layout props angle-deg length fill)
   (number? number? boolean?)
   (let* (
           (PI-OVER-180 (/ (atan 1 1) 34))
           (degrees->radians (lambda (degrees) (* degrees PI-OVER-180)))
           (angle-rad (degrees->radians angle-deg))
           (target-x (* length (cos angle-rad)))
           (target-y (* length (sin angle-rad))))
     (interpret-markup layout props
       (markup
        #:translate (cons (/ target-x 2) (/ target-y 2))
        #:rotate angle-deg
        #:translate (cons (/ length -2) 0)
        #:concat (#:draw-line (cons length 0)
                   #:arrow-head X RIGHT fill)))))

divisiStopPfeil = {
  \once \override Staff.BarLine.stencil =
  #(lambda (grob)
     (ly:stencil-combine-at-edge
      (ly:bar-line::print grob)
      X RIGHT
      (grob-interpret-markup grob #{
        \markup\with-dimensions #'(0 . 0) #'(0 . 0) {
          \translate #'(0 . .14)\arrow-at-angle #75 #(sqrt 8) ##t
        }#})
      0))
}

musik = \relative c'' { d,8 f a d b a g f g }

<<
\new Staff << \repeat unfold 2 { \musik } >>
\new Staff << {
\retrograde
\musik
\override Score.NoteColumn.X-offset = #-0.4
\divisiStopPfeil
\set Staff.whichBar = ""
\noBreak
\stopStaff
} >>
>>


HTH,
  Harm