Allgemein > Fragen zu Funktionen
Tuplet Number formatieren (gelöst)
(1/1)
Manuela:
In vielen älteren Noten sind die Triolenziffern mit Bogen unterstrichen, wie sie durch \undertie erzeugt werden.
Für Sextolen z.B. erzeugt folgender Code den gewünschten Output, wenn die Beschriftung unterhalb der Noten steht.
--- Code: ---\version "2.19.52"
\relative c'' {
\override TupletNumber.text =
\markup { \undertie " 6 " }
\tuplet 6/4 {
< d c' >16 a' fis d c a
}
}
--- Ende Code ---
Ich schaffe es nicht, die Beschriftung zu verallgemeinern,
--- Code: ---\version "2.19.52"
\relative c'' {
\override TupletNumber.text =
\markup { \undertie #tuplet-number::calc-fraction-text }
\tuplet 6/4 {
< d c' >16 a' fis d c a
}
}
--- Ende Code ---
beispielsweise funktioniert überhaupt nicht.
harm6:
tuplet-number::calc-fraction-text ist eine procedure, die ein Argument erwartet.
Man kann sich das vor Augen führen, indem man es
(1) im source code sucht
(2) in einem ly-file
#(display tuplet-number::calc-fraction-text)
-> #<procedure tuplet-number::calc-fraction-text (grob)>
(3) im terminal
--- Zitat ---lilypond scheme-sandbox
GNU LilyPond 2.18.2
Processing `/home/harm/lilypond/usr/share/lilypond/current/ly/scheme-sandbox.ly'
Parsing...
guile> tuplet-number::calc-fraction-text
#<procedure tuplet-number::calc-fraction-text (grob)>
guile>
--- Ende Zitat ---
Im "normal"-Fall:
\override TupletNumber.text = #tuplet-number::calc-fraction-text
wird das Argument automatisch richtig gewählt. In Deiner ausgeweiteten procedure mußt Du selbst dafür sorgen.
--- Code: ---\relative c'' {
\override TupletNumber.text =
#(lambda (grob)
(let ((my-tn (tuplet-number::calc-fraction-text grob)))
#{ \markup { \undertie #my-tn } #}))
\tuplet 6/4 {
< d c' >16 a' fis d c a
}
}
--- Ende Code ---
oder:
--- Code: ---#(define (my-tuplet-number::calc-fraction-text grob)
(let ((my-tn (tuplet-number::calc-fraction-text grob)))
#{ \markup { \undertie #my-tn } #}))
\relative c'' {
\override TupletNumber.text = #my-tuplet-number::calc-fraction-text
\tuplet 6/4 {
< d c' >16 a' fis d c a
}
}
--- Ende Code ---
Gruß,
Harm
harm6:
Vielleicht auch verallgemeinert:
--- Code: ---#(define (my-tuplet-number::calc-fraction-text grob)
(let (;; let 'direction evaluate to use the generic tie-markup-command
(dir (ly:grob-property grob 'direction)))
(make-tie-markup (tuplet-number::calc-fraction-text grob))))
\relative c'' {
\override TupletNumber.text = #my-tuplet-number::calc-fraction-text
\tuplet 6/4 { < d c' >16 a' fis d c a }
\voiceOne
\tuplet 6/4 { < d c' >16 a' fis d c a }
}
--- Ende Code ---
-Harm
Manuela:
Danke Harm für die rasche Antwort! :)
Manuela:
So, ich bin nochmals auf diesen Thread zurückgekommen.
Zum einen wollte ich nur den Denominator des Tuplets angeschrieben haben, zum anderen den Bogen ein bisschen größer gestalten.
Da die Standardfunktionen von Lilypond
--- Code: ---\tupletXXXX
--- Ende Code ---
(XXXX = UP, DOWN..) nur die Richtung der Klammern festlegen, nicht die der Nummern und Harms Code anscheinend die Richtung der Nummern abfragt, habe ich ein paar Ergänzungen dazu geschrieben.
--- Code: ---\version "2.19.56"
tupletU = {
\tupletUp
\override TupletNumber.direction = #UP
}
tupletD = {
\tupletDown
\override TupletNumber.direction = #DOWN
}
tupletN = {
\revert TupletBracket.direction
\revert TupletNumber.direction
}
#(define (my-tuplet-number::calc-denominator-text grob)
(let (;; let 'direction evaluate to use the generic tie-markup-command
(dir (ly:grob-property grob 'direction)))
(make-tie-markup
(string-append " " (tuplet-number::calc-denominator-text grob) " "))))
%% Beispiel zum Ausprobieren
\relative c'' {
\tupletU
\override TupletNumber.text = #my-tuplet-number::calc-denominator-text
\tuplet 6/4 { d16 a' fis d c a }
\tupletD
\tuplet 6/4 { d16 a' fis d c a }
\tupletN
\tuplet 6/4 { d16 a' fis d c a }
\tuplet 6/4 { d,16 a' fis d c a }
}
--- Ende Code ---
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln