Taktstriche aus- und einblenden

Begonnen von chf, Sonntag, 17. April 2022, 19:36

« vorheriges - nächstes »

chf

Liebe Freunde,


\version "2.22.0"
{\time 2/2
\omit Score.BarNumber
\omit Score.BarLine c'1 c' \undo \omit Score.BarLine \bar ":|."
\break
\omit Score.BarLine c'1 c' \undo \omit Score.BarLine \bar "|"
\break
\omit Score.BarLine c'1 c' \undo \omit Score.BarLine \bar "|."


was ich brauche, krieg ich nicht hin. Am Ende jeder Zeile sollte ein Taktstrich stenen...
Wisst ihr eine Lösung?

Ostergruß
Christa

Manuela

Harm hat mir mal eine Funktion für ein ähnlich gelagertes Problem geschrieben, ich habe  die Funktion abgewandelt

Probier mal folgendes (das hat den Vorteil, dass Zeilenumbrüche automatisch berücksichtigt werden)

\version "2.22.0"

#(define my-repeat-bar-glyph-list
   '(":|.:"
      ":..:"
      ":|.|:"
      ":.|.:"
      ":|."
      ".|:"
      "[|:"
      ":|]"
      ":|][|:"
      ".|:-||"
      ":|.S"
      "S.|:"
      "|."
      ;; add more?
      ))

#(define restrict-span-bars
   ;; print SpanBar only at line-break abd for repeats
   (lambda (grob)
     (let* ((break-dir (ly:item-break-dir grob))
            (glyph (ly:grob-property grob 'glyph)))
       (if (or (not (zero? break-dir))
               (member glyph my-repeat-bar-glyph-list))
           (ly:grob-set-property! grob 'transparent #f)
           (ly:grob-set-property! grob 'transparent #t)))))

\layout {
  \context {
    \Staff
    \override BarLine.after-line-breaking = #restrict-span-bars
  }
}

{
  \time 2/2
  \omit Score.BarNumber
  c'1 c' \bar ":|."
  \break
  c'1 c'
  \break
  c'1 c' \bar "|."
}


PS: Dein Beispielcode kompiliert nicht wegen einer fehlenden geschwungenen Klammer am Schluss
Danke für eure Hilfe
viele Grüße
-- Manuela

chf

Hallo Manuela,

danke!!! - auch für Deine Nachsicht. Ich war ziemlich genervt von meinen fruchtllosen Versuchen...
So funktionier's!

Noch einen schönen Feiertagt
Christa

harm6

Hallo Christa,

wenn ich Deinen Code anders formatiere:

{
  \time 2/2

  \omit Score.BarNumber
  \omit Score.BarLine
  c'1 c'
  \undo \omit Score.BarLine
  \bar ":|."
  \break
  \omit Score.BarLine
  c'1 c'
  \undo \omit Score.BarLine
  \bar "|"
  \break
  \omit Score.BarLine
  c'1 c'
  \undo \omit Score.BarLine
  \bar "|."
}

sollte deutlich werden warum Dein ursprünglicher Versuch nicht funktionieren kann:

 
  ...
  \undo \omit Score.BarLine
  \bar ":|."
  \break
  \omit Score.BarLine
  ...

Du hast zum selben musikalischen Zeitpunkt zwei sich widersprechende Befehle.
Genauso wie \undo \omit Score.BarLine vor der BarLine steht, sollte \omit Score.BarLine vor der nächsten BarLine stehen.

Also:

  ...
  \undo \omit Score.BarLine
  \bar ":|."
  \break
  c'1
  \omit Score.BarLine
  ...




Wenn es aber wirklich nur darum geht die BarLine am Zeilenende ein- und alle anderen auszuschalten, dann verwende doch 'break-visibility:


{
  \time 2/2
  \omit Score.BarNumber
  \override Staff.BarLine.break-visibility = ##(#t #f #f)
  c'1 c'
  \bar ":|."
  \break
  c'1 c'
  \bar "|"
  \break
  c'1 c'
  \bar "|."
}


Gruß,
  Harm