• 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ü

andere Zeichen für BarNumber

Begonnen von LaLuneNoir, Montag, 12. Juli 2010, 15:58

Vorheriges Thema - Nächstes Thema

LaLuneNoir

Hallo zusammen!

Ich habe folgendes Problem: Ich setze gerade Noten, die vom Komponisten gestrichen wurden, für einen musikwissenschaftlichen Aufsatz. Der Auto möchte gerne, dass die Taktnummerierung nach folgendem Muster erfolgt:

<Taktnummer des erste gestrichenen Taktes><Buchstaben für die einzelnen Takte einer Streichung>

Also z.B. für die erste Streichung 15a, 15b, 15c, 15d usw. Ich glaube kaum, dass ich Lilypond dazu bekomme, automatisch Buchstaben zu zählen. Es würde mir aber sehr helfen, wenn jemand von euch weiß, wie man BarNumber durch ein beliebiges Zeichen ersetzen kann.

Vielen Dank und viele Grüße

RobUr

Ich hatte mal einen Ansatz gefunden, die Taktzahlen zu erweitern: Changing the bar-number string.

Die Hauptprobleme sind (a) dass Lily den Wert der Taktnummer dynamisch bestimmt, weswegen (b) dieser Wert vor dem Aufruf ermittelt, dann geändert und anschließend zurückgespeichert werden muss, und (c) barNumber vom Typ integer (Ganzzahl) ist (wodurch \set Score.currentBarNumber = #15a eben nicht funktioniert).

Das Beispiel aus der englischen Liste klappt also ganz gut, um Taktzahlen bspw. einzuklammern, indem der BarNumber-stencil überschrieben wird.

Zunächst wird der neue stencil definiert:

#(define (bis-bar-number BarNumber)
  "Append bis to the bar number."
  (let* (
        ; Set barNumber to the current value
      (barNumber (ly:grob-property BarNumber 'text))
      ; Append " bis" to it
      (bisBarNumber (string-append barNumber " bis")))
    ; Store the new value back
    (ly:grob-set-property! BarNumber 'text bisBarNumber))
  ; and print it
  (ly:text-interface::print BarNumber))


Die entscheidende Zeile ist Zeile 7, in der man die anzufügenden Zeichen (per string-append) definieren kann. Um Taktzahlen z.B. einzuklammern, ändert man die Zeile in
(bisBarNumber (string-append "(" barNumber ")")))

Anschließend wird der stencil ab der gewünschten Stelle ersetzt:
\override Score.BarNumber #'stencil = #bis-bar-number

Es wäre jetzt aber all zu mühselig, für jede einzelne Taktzahl einen eigenen Stencil zu schreiben. Vielleicht findet sich jemand, der mit dieser Scheme-Vorlage mehr als ich etwas anfangen und anpassen kann?

Viele Grüße, Robert

LaLuneNoir

Hallo Robert,

vielen Dank schon Mal. Ist zwar etwas aufwändig, aber so viele Seiten sind es nicht. Wenn du mir jetzt noch helfen kannst, die BarNumber kursiv zu setzen, wäre ich überglücklich. Diese Scheme-Geschichten sind mir irgendwo etwas zu hoch.

Viele Grüße und Dank

RobUr

\override Score.BarNumber #'font-shape = #'italic

RobUr

Noch ein kurzer Nachtgedanke: Es ist weitaus einfacher, exotische Taktzahlen per \markup unterzubringen. Das wäre zwar nicht automatisiert, aber BarNumbers sind wesentlich leichter zu unterdrücken als zu ändern.

gbehrendt

Hej.
Ich mache das hier noch einmal auf: Ich möchte nach einem Zeilenumbruch innerhalb des Taktes die Takzahl am Beginn der Zeile in Klammern setzen. Die Klammern bekomme ich dank Roberts Hinweisen hin, aber an der Stelle ,,mitten im Takt" kriege ich keine Taktzahl angezeigt. Mit der Lösung aus Issue 460 komme ich leider auch nicht zurecht.

Vielen Dank für eure Hilfe
– Gereon


\version "2.18.2"

\relative c'' { a4 g g a | \break
\once \set Score.barNumberFormatter =
        #(lambda (bar-number measure-position alternative-number extra)
        (markup (string-append
            "("
            (number->string bar-number)
            ")"
        )))
b g d f | d f \bar ""\break \once \override Score.BarNumber.break-visibility = #'#(#t #t #t)
f d | e g a b \break a a a a }

harm6


\version "2.18.2"

#(define simple-par-bar-nr
  (lambda (bar-number measure-position alternative-number context)
    (format #f "(~a)" (number->string bar-number))))
   
par-bar-nr = \once \set Score.barNumberFormatter = #simple-par-bar-nr

\layout {
  \context {
    \Score
    barNumberVisibility = #first-bar-number-invisible-save-broken-bars
  }
}

\relative c'' {
a4 g g a |
\break
\par-bar-nr
b g d f |
d f
\bar ""
\break
f d |
e g a b
\break
a a a a
}


HTH,
  Harm