Notationsspezifisch > Noten für Gitarre
Tabulatur: Fingersätze verschieben (GELÖST)
(1/1)
ingmar:
Hallo,
hier ein kurzes Stück in Tabulatur:
\
--- Code: ---version "2.19.32"
\score { \new TabStaff { g a b c' } }
--- Ende Code ---
Die Finger werden auf die Linien geschrieben. Ich möchte nun sämtliche Fingerangaben so weit nach oben verschieben, dass sie jeweils genau in dem darüberliegenden Zwischenraum landen (oberste Saite also unmittelbar über dem System). Wie fange ich das an?
Gruß,
--ingmar
[Edit: Es sind natürlich nicht die Angaben der Finger, sondern der Bünde, wie Harms unten richtig anmerkt. Das war mir auch klar, ich hab mich hier aber ein wenig lasch ausgedrückt.]
fugenkomponist:
--- Code: ---\version "2.19.32"
\score {
\new TabStaff \with {
\offset Y-offset 0.75 TabNoteHead
} { g g' g, }
}
--- Ende Code ---
Man kann hier Y-offset nicht einfach per \override setzen, weil der ursprüngliche Y-offset von der Saite abhängt; dafür gibt es aber \offset. Das macht sozusagen
--- Code: ---\override TabNoteHead.Y-offset = #(+ alterWert 0.75)
--- Ende Code ---
Der Wert 0.75 kommt daher, dass die Linienabstände in TabStaff anscheinend 1.5 staff-spaces (Linienabstände in Staff) sind.
Edit: Die Funktion \offset gibt es in 2.18.2 auch schon, aber sie kommt mit diesem Fall noch nicht klar. Falls also jemand das gleiche Problem in 2.18.2 lösen möchte:
--- Code: ---\version "2.18.2"
\score {
\new TabStaff \with {
\override TabNoteHead.extra-offset = #'(0 . 0.5)
\override TabNoteHead.Y-extent = #'(0 . 1.5)
} { g g' g, }
}
--- Ende Code ---
Hier werden die Zahlen per extra-offset optisch verschoben (interessanterweise wird hier nicht mit den staff-spaces von Staff, sondern von TabStaff gerechnet, deshalb nur 0.5, nicht 0.75). Damit das vertikale spacing passt, muss man auch noch LilyPond die neue vertikale Ausdehnung (Y-extent) mitteilen. Den Unterschied im spacing kann man sich per lilypond -ddebug-skylines meineDatei.ly anzeigen lassen.
ingmar:
ah, ja, so also.
Danke für die schnelle Antwort!
--ingmar
harm6:
Wie fugenkomponist an anderer Stelle ja bereits sagte sind Lösungen via 'extra-offset immer mit Vorsicht zu genießen ...
In 2.18.2 funktioniert \offset für diesen Fall zwar noch nicht, aber man kann es ja selber machen.
Lese den Wert aus, addiere was Du willst und setze 'Y-offset via 'before-line-breaking.
Führt zu
--- Code: ---\version "2.18.2"
\score {
\new TabStaff { g g' g, }
\layout {
\context {
\TabStaff
%\override StaffSymbol.staff-space = 3
\override TabNoteHead.before-line-breaking =
#(lambda (grob)
(ly:grob-set-property! grob 'Y-offset
(+ (ly:grob-property grob 'Y-offset) 0.75)))
}
}
}
--- Ende Code ---
Allerdings geht auch das kaputt sobald man die 'staff-space verändert. Zu sehen sobald man den StaffSymbol-override einkommentiert.
Die beste Lösung ist das context-property 'tabStaffLineLayoutFunction neu zu setzen:
--- Code: ---\version "2.18.2"
%% c/p from translation-functions.scm
%% renamed and slightly changed
#(define-public (tablature-position-above-lines context string-number)
(let* ((string-tunings (ly:context-property context 'stringTunings))
(string-count (length string-tunings))
(string-nr
(if (> string-number (length string-tunings))
(1+ (length string-tunings))
string-number))
(string-one-topmost (ly:context-property context 'stringOneTopmost))
;; default:
;(staff-line (- (* 2 string-nr) string-count 1))
;; changed to
(staff-line (- (* 2 string-nr) string-count 2))
)
(if string-one-topmost
(- staff-line)
staff-line)))
\score {
\new TabStaff { g g' g, }
\layout {
\context {
\Score
tabStaffLineLayoutFunction = #tablature-position-above-lines
}
\context {
\TabStaff
%\override StaffSymbol.staff-space = 3
}
}
}
--- Ende Code ---
Ist keine große Sache, man muß nur einen Wert ändern.
HTH,
Harm
P.S.
--- Zitat von: ingmar ---Die Finger werden auf die Linien geschrieben.
--- Ende Zitat ---
Natürlich handelt es sich nicht um die Fingersätze, sondern um die zu greifenden Bünde. Welchen Greifinger man tatsächlich nehmen kann/muß, ergibt sich teils aus dem musikalischen Kontext, teils ist es dem Belieben des Ausfühenden überlasen.
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln