Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: Manuela am Sonntag, 23. Oktober 2016, 09:34
-
Hi,
ich möchte gerne die Flags etwas schlanker haben, in der Doku habe ich jedoch nichts für mich brauchbares gefunden. Wer hat die Wunderwaffe? ;)
\version "2.19.42"
\relative c'
{
\override Flag.stencil = #flat-flag
c8
}
-
flat-flag verwendet (ebenso wie old-straight-flag und modern-straight-flag, bloß mit anderen Werten) den allgemeineren stencil straight-flag (siehe Definition in scm/flag-styles.scm). Genauer gesagt, könnte man statt
\override Flag.stencil = #flat-flaggleichbedeutend\override Flag.stencil = #(straight-flag 0.55 1.0 0 1.0 0 1.0)schreiben. Für die Bedeutung der einzelnen Werte schau in die Definition von straight-flag (in der oben genannten Datei), der erste ist jedenfalls die Dicke. Vielleicht willst du dann noch den zweiten (Abstand zwischen den Fähnchen bei kleineren Notenwerten) anpassen ;)
Ich weiß ja nicht alles, aber ich kann mal erklären, wie ich trotzdem sehr schnell drauf gekommen bin: Ich hab gesehn, dass #flat-flag weder ein Symbol (#'flat-flag) noch eine C++-Funktion (#(ly:flat-flag) oder so) ist, also wirds ne LilyPond- oder Scheme-Funktion sein. Also hab ich die Verzeichnisse ly/ und scm/ im LilyPond-Code nach „flat-flag“ durchsucht* und als vielversprechendsten Treffer eine Datei namens flag-styles.scm gefunden. Dort dann nach der Definition von flat-flag gesucht, gesehn, dass da straight-flag mit vielen Werten aufgerufen wird, also in der selben Datei die Definition von straight-flag angeschaut, wo die Bedeutung der Argumente erklärt wird.
* Unter Linux gibts dafür das Tool grep bzw. ich habe sowieso das git-Repository mit dem kompletten LilyPond-Code in meinem Home-Verzeichnis liegen, da verwende ich git grep. Ich hab allerdings keine Ahnung, ob sowas wie grep standardmäßig in Windows dabei ist.
-
ich möchte gerne die Flags etwas schlanker haben, in der Doku habe ich jedoch nichts für mich brauchbares gefunden.
LilyPond ist programmierbar, ich halte es für schlichtweg nicht machbar jede Möglichkeit in der offiziellen Dokumentation darzustellen. Früher oder später muß man in den source-code schauen:
`flat-flag' is definiert in flag-styles.scm unter Verwendung von `straight-flag' als:
#(define-public (flat-flag grob)
"Flat flag style. The angles of the flags are both 0 degrees"
((straight-flag 0.55 1.0 0 1.0 0 1.0) grob))
Jetzt müßte man zu verstehen suchen was `straight-flag' ist.
`straight-flag' hat die Argumente (etwas anders formatiert):
(straight-flag
flag-thickness
flag-spacing
upflag-angle
upflag-length
downflag-angle
downflag-length)
Den ganzen body der Definition mal außer acht gelassen, sollte jetzt klar sein welche Einstellschrauben es gibt.
Du kannst jetzt versuchen diese Definiton zu verstehen, wie ich es gemacht habe als ich flat-flag implementiert habe ;)
oder schlichtweg mal ausprobieren was passiert, wenn Du die Werte in flat-flag veränderst.
Z.B.:
{
\override Flag.stencil = #(straight-flag 0.25 1.0 0 1.0 0 1.0)
c'8
}
Gruß,
Harm
P.S. Bitte stell immer eine präzise Frage
Ich war versucht auf
Wer hat die Wunderwaffe?
nur
"Ich"
zu antworten. ;)
-
P.S. Bitte stell immer eine präzise Frage
Danke für eure ausführlichen Antworten, trotz meiner unpräzisen Frage ;)
Ich hätte an sowas in der Art gedacht:
\override Flag.thickness = #1
Mit euren Hinweisen kann ich die Fähnchen ein wenig schräg stellen, mal schauen, wie das ausschaut :D
BTW, habe ich schon geschrieben, wie genial Lilypond ist? ;) Ich glaube, gestern habe ich wieder kräftig Werbung für Lily gemacht, mein Liederbuch hat ziemlichen Eindruck gemacht
-
Mit euren Hinweisen kann ich die Fähnchen ein wenig schräg stellen, mal schauen, wie das ausschaut :D
Ich seh grad, dass das irgendwie ein bißchen verbuggt ist, es kommen nicht genau die Winkel raus, die man eingibt:\version "2.19.47"
\relative {
\autoBeamOff
\time 1/8
a'16 c
\override Flag.stencil = #(straight-flag 0.5 1 0 1 0 1)
a c
\override Flag.stencil = #(straight-flag 0.5 1 1 1 1 1)
a c
\override Flag.stencil = #(straight-flag 0.5 1 -1 1 -1 1)
a c
\override Flag.stencil = #(straight-flag 0.5 1 10 1 10 1)
a c
\override Flag.stencil = #(straight-flag 0.5 1 -10 1 -10 1)
a c
}Eigentlich müßten in jedem Takt die Fähnchen parallel sein (und im dritten Takt außerdem beide nach oben, im vierten beide nach unten gehen).
-
Unter Linux gibts dafür das Tool grep bzw. ich habe sowieso das git-Repository mit dem kompletten LilyPond-Code in meinem Home-Verzeichnis liegen, da verwende ich git grep.
Besonders in git-repositories verwende ich grep ebenfalls.
Ansonsten verwende ich die hyper-search Funktion meines bevorzugten Texteditors, jEdit
In diesem Fall wußte ich natürlich wo zu suchen war, nicht nur, daß ich flat-flag geschrieben hatte, sondern ich hab erst gestern dieses file nochmal geprüft wegen
https://sourceforge.net/p/testlilyissues/issues/4983/
Da fällts natürlich leicht...
-
Ich bin jedenfalls mit dem Ergebnis zufrieden, habe folgende Einstellungen gewählt.
\override Flag.stencil = #(straight-flag 0.35 1.0 -30 1.0 30 1.0)
Verwende tue ich das ganze für eine 3. Stimme (Oberstimme), damit sich die Fähnchen von den Achteln der Hauptstimme abheben, da die Notenhälse beider Stimmen in die gleiche Richtung zeigen.
-
Ich seh grad, dass das irgendwie ein bißchen verbuggt ist, es kommen nicht genau die Winkel raus, die man eingibt
[...]
Vielen Dank für den Hinweis.
Es scheint besonders bei kleinen Winkeln zu passieren und erinnert mich somit an einige Probleme die ich damit auch schon hatte. Und straight-flag verwendet auch tatsächlich polar->rectangular.
Da müßte man mal prüfen ob David K's neue Funktionen besser funktionieren
https://sourceforge.net/p/testlilyissues/issues/4961/ (https://sourceforge.net/p/testlilyissues/issues/4961/)
Gruß,
Harm
-
Entgegen meiner ersten Vermutung hatte nichts mit den Winkeln an sich zu tun, sondern die Berechnung für down-stem flags war schlichtweg buggy.
Hab einen patch eingereicht:
https://sourceforge.net/p/testlilyissues/issues/4988/ (https://sourceforge.net/p/testlilyissues/issues/4988/)
bzw
https://codereview.appspot.com/307600043/ (https://codereview.appspot.com/307600043/)
Vielen Dank für den "bug-report", ich glaube ich hätte es selbst niemals gesehen.
Gruß,
Harm