Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: chf am Sonntag, 17. April 2022, 19:36

Titel: Taktstriche aus- und einblenden
Beitrag von: chf am Sonntag, 17. April 2022, 19:36
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
Titel: Antw:Taktstriche aus- und einblenden
Beitrag von: Manuela am Montag, 18. April 2022, 08:54
Harm hat mir mal eine Funktion für ein ähnlich gelagertes Problem (https://lilypondforum.de/index.php/topic,519.new.html) 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
Titel: Antw:Taktstriche aus- und einblenden
Beitrag von: chf am Montag, 18. April 2022, 11:22
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
Titel: Antw:Taktstriche aus- und einblenden
Beitrag von: harm6 am Montag, 18. April 2022, 11:50
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