Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: bblochl am Donnerstag, 8. August 2013, 17:40
-
Es gibt für ein Saiteninstrument verschiedene Stimmungen. Viele stellt lilypond zur Verfügung, andere kann man selbst erstellen.
Ich hätte gerne vor den Tabs die Notennamen für jede Saite stehen. Also für Gitarre wäre das z. B. von oben nach unten
EBGDAE. Also 1. Saite (oben im TAB) E, 2. Saite , zweite Saite im TAB B ... usw. Den Schriftzug TAB finde ich eigentlich entbehrlich.
Suche in lilypond ergab nichts, aber vielleicht steht das ja irgendwo oder jemand hat das schon gemacht?
Grüße
-
Dafür musst du den Stencil, der den Schlüssel setzt, ändern (in http://lsr.dsi.unimi.it/LSR/Item?id=550 wird er z. B. auf ##f gesetzt, also der „Schlüssel“ ganz entfernt). Weiteres Stichwort: text-interface, um den Schlüssel durch ein markup zu ersetzen (siehe http://lsr.dsi.unimi.it/LSR/Item?id=378, da werden Notenköpfe durch markups ersetzt)
Falls ich nachher Zeit hab, kann ich noch ausführlicher werden.
Edit: Erster Zwischenschritt (hartkodierte Notennamen):\version "2.16.0"
\new TabStaff {
\override Staff.Clef #'stencil = #ly:text-interface::print
\override Staff.Clef #'text =
\markup \whiteout \raise #3.3 \teeny \override #'(baseline-skip . 1.5) \center-column {
e h g d A E
}
\relative c' {
c d e f g
}
}
Edit: Wenn man die Bezeichnung vor das System haben will, kann man natürlich auch den Clef #'stencil auf ##f setzen und instrumentName umbauen (in http://lsr.dsi.unimi.it/LSR/Item?id=658 mit Postscript gemacht, aber da geht so ein markup natürlich genauso).
Edit: ich hab grad keine Ahnung, wie man die Stimmung rauskriegt; hab noch nie was für Zupfinstrumente gesetzt. Aber da findest du ja vielleicht im Gitarren-Unterforum was.
-
Hallo,
die Saitennamen kannst du z.B. so einfügen:
\set Staff.instrumentName = \markup
\override #'(baseline-skip . 1)
\override #'(font-name . "FreeSans")
\abs-fontsize #6
{ \null \hspace #8 { \column { [e'] [b] [e] [d] [A] [E] } } }
Je nach Geschmack kannst du die Klammern weglassen, Kreise (\draw-circle #0.6 #0.1) oder Kästchen (\box \pad-to-box #'(0 . 1) #'(0 . 1)) um die Buchstaben ziehen.
Und dann ist da natürlich der Thread in der Gitarrenecke:
https://liarchiv.joonet.de/index.php?topic=577.msg3214#msg3214
Gruß
-
Vielen Dank für die Hilfe!
Der Code von fugenkomponist funktioniert. Etwas unschön finde ich den Taktstrich ganz am Anfang, schöner wäre es, die Notennamen vor die Saitenzeile zu schreiben, nicht in/über die Zeilen. Musswohl noch etwas daran arbeiten.
Der Code von trulli gibt einen schweren Fehler:
Analysieren...
tab2.ly:3:1: Fehler: syntax error, unexpected \set
habe auch new probiert:
tab2.ly:3:11: Fehler: syntax error, unexpected '.'
\new Staff.instrumentName = \markup
Zeile 3 deshalb, weil ich \version "2.17.23-1" und eine Leerzeile voran gesetzt habe.
Im Handbuch habe ich in einem langen Beispielcode gefunden
http://lilypond.org/doc/v2.16/Documentation/learning/other-templates.de.html (http://lilypond.org/doc/v2.16/Documentation/learning/other-templates.de.html)
trumpet = {
\global
\set Staff.instrumentName = #"Trumpet"
\clef treble
<<
\trpt
>>
}Dadurch wird aber eldiglich "Trumpet" vor die Notenzeile gesetzt.
den Link
https://liarchiv.joonet.de/index.php?topic=577.msg3214#msg3214 (https://liarchiv.joonet.de/index.php?topic=577.msg3214#msg3214) werde ich mir jetzt vornehmen.
Dank und Grüße
-
Hallo,
hast du den Code denn an die richtige Stelle gesetzt?
\version "2.16.0"
\new TabStaff {
\override Staff.Clef #'stencil = #ly:text-interface::print
\relative c' {
\set Staff.instrumentName = \markup
\override #'(baseline-skip . 1)
\override #'(font-name . "FreeSans")
\abs-fontsize #5.5
{ \null \hspace #6 { \column { [e'] [b] [g] [d] [A] [E] } } }
c d e f g
}
}
Gruß
-
Nee, war an der falschen Stelle! (Bin ja lilypond-Anfänger!) Läuft jetzt!
Danke für die Korrektur!
Grüße
-
@Lomtas
Bitte bei Gelegenheit mal diesen Thread in die Gitarrenecke verschieben.
Danke!
-
Ja, das passt sehr gut zur Gitarre. Ich habe meine erste Anfrage nach Gitarre kopiert und zu dem Start des Threads hier eine Link angegeben.
Wenn die Anderen nacheinander in passender Reihenfolge kopieren, ist er unter Gitarre auch zu lesen. Der Nächste wäre fugenkomponist ... usw. (Vollständige Threads kann wohl nur ein Administrator verschieben/kopieren? Soll aber vermutlich nur kopiert werden und in "Fragen zu Funktionen" bleiben? )
Habe das schon mal mit einem Thread praktiziert, der vollkommen nach Linux abgedriftet ist (dann allerdings zusammen mit den Anderen nach Absprache an der anderen Stelle gelöscht)
Grüße
-
Hallo bblochl,
ich glaube, es ist nicht nötig alle Antworten in der Gitarrenecke noch einmal aufzulisten.
Übersichtlicher ist es, wenn du selbst die Lösung(en) gleich im Themenstart vorstellst. Letztendlich ist es ja egal von wem die Lösung kam - Hauptsache es funktioniert. :)
Grüße von Trulli
-
Und hier noch mein weitgehend automatisierter Vorschlag:
\version "2.17.25"
#(define (make-note-name-markup pitch)
;; Return pitch-name-markup for @var{pitch}.
;; Limitation: - works for default-language (dutch) only.
;; - half-step-alterations are supported, but no quarter-steps or
;; double-half-steps.
;;
;; @lilypond[verbatim,quote]
;; \markup { #(make-note-name-markup #{ c #}) }
;; @end lilypond
(let ((row-note-name-strg
(vector-ref #("C" "D" "E" "F" "G" "A" "B")
(ly:pitch-notename pitch))))
(make-line-markup
(list
(make-simple-markup
(string-append
(if (>= (ly:pitch-octave pitch) -1)
(string-downcase row-note-name-strg)
row-note-name-strg)
(case (ly:pitch-alteration pitch)
((0) "")
((1/2) "is")
((-1/2) "es"))
(case (ly:pitch-octave pitch)
((-4) ",,")
((-3) ",")
((-2) " ")
((-1) " ")
((0) "'")
((1) "''")
((2) "'''")
((3) "''''"))))))))
#(define-markup-command
(print-vertical-pitches layout props ls staff-space)
(list? number?)
"Draw columned strings taken via @code{make-note-name-markup} from @var{ls},
which is supposed to be a list of pitches."
(let* ((scale-factor (magstep (/ 1.5 staff-space)))
(font-size (* -4.5 scale-factor))
(text
(make-column-markup
(map
(lambda (pitch)
(make-note-name-markup pitch))
ls))))
(interpret-markup layout props
(markup #:vcenter
#:bold
#:fontsize font-size
#:override (cons 'baseline-skip staff-space)
#:left-align text))))
#(define ((instrument-name::print-strings-note-names pitch-lst) grob)
;; Adds columned note-names to @code{instrumentName} only in the starting
;; Staff-line.
;; These note-names are taken via @code{print-vertical-pitches} from
;; @var{pitch-lst}
(let* ((staff-symbol (ly:grob-object grob 'staff-symbol))
(staff-space (ly:staff-symbol-staff-space grob))
(string-indications-stencil
(grob-interpret-markup grob
(make-print-vertical-pitches-markup
pitch-lst staff-space)))
(orig (ly:grob-original grob))
(siblings (if (ly:grob? orig)
(ly:spanner-broken-into orig)
'() )))
(if (and (>= (length siblings) 1) (eq? grob (car siblings)))
(let ((stil (or (system-start-text::print (car siblings))
point-stencil)))
(ly:stencil-combine-at-edge
string-indications-stencil
X
LEFT
(ly:stencil-aligned-to stil Y CENTER)
staff-space))
(system-start-text::print grob))))
#(define*
(string-tuning-with-indication #:optional (string-tuning 'guitar-tuning))
;; Prints the names of the strings before the first line of a tabulature, by
;; adding them to @code{instrumentName}.
;; If @code{instrumentName} isn't set separately in @code{\\with} of the
;; relevant @code{TabStaff}, an empty string is used instead.
;; @code{shortInstrumentName} will not be modified.
;; The optional @var{string-tuning} may be specified, otherwise
;; @code{guitar-tuning} will be used.
(let* ((tuning-pitch-list (assoc-get string-tuning defaultStringTunings)))
#{
\with {
\override InstrumentName #'stencil =
#(instrument-name::print-strings-note-names tuning-pitch-list)
\override InstrumentName #'self-alignment-X = #RIGHT
stringTunings = #tuning-pitch-list
instrumentName = ""
}
#}))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% EXAMPLES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#(set-global-staff-size 19.7)
% These settings in \paper are not needed.
% Only written to get an overall nice pdf :)
\paper {
indent = 0
line-width = 50
markup-system-spacing #'padding = #2
markup-markup-spacing #'padding = #2
system-system-spacing=
#'((basic-distance . 5)
(minimum-distance . 5)
(padding . 1)
(stretchability . 12))
score-markup-spacing =
#'((basic-distance . 5)
(minimum-distance . 5)
(padding . 4)
(stretchability . 12))
page-count = 1
}
\header {
title = \markup \center-column {
"Indicating"
"string-names with"
#(lilypond-version)
}
}
%%%%%%%%%%%%%%%%%%%
% EXAMPLE 1
%%%%%%%%%%%%%%%%%%%
\markup \fontsize #-1 \bold
\fill-line {
\center-column {
"Default-guitar-tab,"
"no \"\\instrumentName\" is set"
}
}
\new TabStaff
\with { #(string-tuning-with-indication) }
{ c1 \break d }
%%%%%%%%%%%%%%%%%%%
% EXAMPLE 2
%%%%%%%%%%%%%%%%%%%
\markup \fontsize #-1 \bold
\fill-line {
\center-column {
"Default-guitar-tab,"
"\"\\instrumentName\" is set"
"Smaller staff-size"
}
}
\new TabStaff
\with {
#(string-tuning-with-indication)
instrumentName = \markup
\override #'(baseline-skip . 1)
\center-column { "classical" "guitar" }
fontSize = #-3
\override StaffSymbol #'staff-space = #(magstep -3)
\override StaffSymbol #'thickness = #(magstep -3)
}
{ c1 \break d }
%%%%%%%%%%%%%%%%%%%
% EXAMPLE 3
%%%%%%%%%%%%%%%%%%%
\markup \fontsize #-1 \bold
\fill-line {
\center-column {
"bass-tab,"
"\"\\instrumentName\" and"
"\"\\shortInstrumentName\" is set"
}
}
\new TabStaff
\with {
#(string-tuning-with-indication 'bass-four-string-tuning)
instrumentName = "bass"
shortInstrumentName = \markup \line { "b" \hspace #3 }
}
{ c1 \break d }
%%%%%%%%%%%%%%%%%%%
% EXAMPLE 4
%%%%%%%%%%%%%%%%%%%
\markup \fontsize #-1 \bold
\fill-line {
\center-column {
"five-string-bass-tab,"
"\"\\instrumentName\" is set"
}
}
\new TabStaff
\with {
#(string-tuning-with-indication 'bass-five-string-tuning)
instrumentName = \markup
\override #'(baseline-skip . 2)
\center-column { "five" "string" "bass"}
}
\relative c { c1 \break d }
%%%%%%%%%%%%%%%%%%%
% EXAMPLE 5
%%%%%%%%%%%%%%%%%%%
\markup \fontsize #-1 \bold
\fill-line {
\center-column {
"seven-string-guitar-tab,"
"\"\\instrumentName\" is set"
"Larger staff-size"
\override #'(font-name . "Purisa") "Changed font-name"
}
}
\new TabStaff
\with {
\override InstrumentName #'font-name = #"Purisa"
#(string-tuning-with-indication 'guitar-seven-string-tuning)
instrumentName = \markup
\override #'(font-name . 'default)
\center-column { "seven" "string" "guitar"}
fontSize = #3
\override StaffSymbol #'staff-space = #(magstep 6)
\override StaffSymbol #'thickness = #(magstep 3)
}
{ c1 \break d }
file und png auch im Anhang.
Gruß,
Harm