Autor Thema: Tabulatur: Fingersätze verschieben (GELÖST)  (Gelesen 1225 mal)

ingmar

  • Gast
Tabulatur: Fingersätze verschieben (GELÖST)
« am: Sonntag, 21. August 2016, 16:17 »
Hallo,


hier ein kurzes Stück in Tabulatur:

\version "2.19.32"
\score { \new TabStaff { g a b c' } }

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.]
« Letzte Änderung: Sonntag, 28. August 2016, 12:55 von ingmar »

fugenkomponist

  • Gast
Re: Tabulatur: Fingersätze verschieben
« Antwort #1 am: Sonntag, 21. August 2016, 16:42 »
\version "2.19.32"

\score {
  \new TabStaff \with {
    \offset Y-offset 0.75 TabNoteHead
  } { g g' g, }
}
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
\override TabNoteHead.Y-offset = #(+ alterWert 0.75)
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:\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, }
}
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.
« Letzte Änderung: Sonntag, 21. August 2016, 16:52 von fugenkomponist »

ingmar

  • Gast
Re: Tabulatur: Fingersätze verschieben
« Antwort #2 am: Sonntag, 21. August 2016, 17:06 »
ah, ja, so also.

Danke für die schnelle Antwort!

--ingmar
« Letzte Änderung: Sonntag, 21. August 2016, 17:38 von ingmar »

harm6

  • Gast
Re: Tabulatur: Fingersätze verschieben (GELÖST)
« Antwort #3 am: Montag, 22. August 2016, 08:41 »
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

\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)))
    }
  }
}

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:

\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
    }
  }
}

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.
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.
« Letzte Änderung: Montag, 22. August 2016, 08:45 von harm6 »