Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: LaLuneNoir am Freitag, 16. Oktober 2009, 21:51
-
Hallo,
ich habe folgendes Problem: Ich schreibe gerade an einer Partitur mit vielen Tremoli und mir gefällt die Schreibweise von Lilypond nicht. Lilypond beginnt mit den Abbreviaturbalken direkt einen Zwischenraum unter dem Notenkopf (bei 32teln), ich möchte aber, dass da ein Zwischenraum frei bleibt. Jetzt könnte ich natürlich für jeden einzelnen Ton den Hals manuell verlängern, aber erstens habe ich auch sonst noch was zu tun und zweitens soll man ja hinterher den Quellcode noch lesen können :-). Meine Idee war, so etwas wie
\override Stem #'length = #'x+1
zu schreiben, also generell die Halslänge um 1 zu erhöhen. Das Problem ist nämlich, dass ich auch sehr hohe Noten setzen muss, ich kann also nicht einfach eine absolute Länge angeben, dann hängen die Noten einfach in der Luft. Außerdem müssen die Abbreviaturbalken ja auch innerhalb der Notenlinien stehen.
Ich hoffe, dass irgendwer von euch eine Idee hat, vielen Dank schonmal.
-
Etwas für Viertel und Halben, ohne Garantie:
#(define (stem-stretch stem-tremolo-grob)
(let ((flag-count (ly:grob-property stem-tremolo-grob 'flag-count)))
(if (> flag-count 2) 1 0)))
#(define (longer-for-tremolo stem-grob)
(let* ((stem-tremolo-grob (ly:grob-object stem-grob 'tremolo-flag)))
(lambda (grob) (+ (ly:stem::calc-length grob)
(if (ly:grob? stem-tremolo-grob)
(stem-stretch stem-tremolo-grob) 0)))))
\override Stem #'length = #longer-for-tremolo
Gruss
-
Comper verdient den LILYPOKAL :) :) :)
-
Hmmmm, es klappt irgendwie nur so halb. Ich hab eine relativ große Partitur, und die veränderten Regeln werden nur bei einem Teil der Noten angewaandt. Um genau zu sein: Nur auf jedem ersten Schlag in einem 3/4. Außerdem ignoriert Lilypond die Regel, wenn die Note über dem c''' (im Violinschlüssel natürlich) ist.
Trotzdem vielen Dank für den Code, das hätte ich selber wohl nicht hinbekommen.
Gruss
-
So, ich hab mir jetzt eine kleine Datei mit Variablen geschrieben, um das Problem zu beseitigen. Ist zwar recht aufwändig, aber ich bin nicht so fit im rumspielen an den Programminterna, dass ich da wirklich was erreichen könnte. Und es geht immer noch schneller, als jedes Mal den kompletten Befehl zu schreiben. Trotzdem danke für den Versuch, da was zu biegen.
Grüße
%Datei mit Variablen zur Ver√§nderung der Halsl√§nge bei Tremolo
\version "2.13.4"
t = { \once \override Stem #'length = #8 }
be = { \once \override Stem #'length = #9 }
cc = { \once \override Stem #'length = #10 }
dd = { \once \override Stem #'length = #11 }
ee = { \once \override Stem #'length = #12 }
efef = { \once \override Stem #'length = #13 }
gg = { \once \override Stem #'length = #14 }
aa = { \once \override Stem #'length = #15 }
bb = { \once \override Stem #'length = #16 }
ccc = { \once \override Stem #'length = #17 }
ddd = { \once \override Stem #'length = #18 }
eee = { \once \override Stem #'length = #19 }
-
Eben keine Garantie, aber einen gewissen Support biete ich schon.
Um genau zu sein: Nur auf jedem ersten Schlag in einem 3/4. Außerdem ignoriert Lilypond die Regel, wenn die Note über dem c''' (im Violinschlüssel natürlich) ist.
Ein Beispiel bringt mir vielleicht weiter.
Ich vermute der c'''-Fall ist ein Irrtum. Alle solche Hälse sind überlang. Dagegen hilft
\override Stem #'no-stem-extend = ##t
Aber eigene Lösungen sind immer vorzuziehen, autonomiehalber. (Selbst ist ... usw.)
Gruss
-
Ein Beispiel ist ziemlich schwierig zu erzeugen. Ich müsste dafür mindestens 600 Zeilen Code hochladen, denn solange der Code übersichtlich ist gibt es keine Probleme. Und da die Sachen, die ich da setze, nicht meine eigenen sind und ich nicht weiß, ob der Urheber möchte, dass ich da was ins Internet hochlade, bleibe ich bei meiner Lösung (auch wenn sie nicht besonders schön ist).
Viele Grüße und Danke nochmal
-
Schon recht. (Solange klar ist, dass es meine rote Overrides nur einmal, im \layout, braucht.)
Und das Beispiel wäre doch nur 1 Takt mit Oom-pa-pa oder sowas;
könnte sein, dass die -pa-pa in einer anderen Stimme steht.
Gruss