Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: Manuela am Sonntag, 23. Oktober 2016, 09:34

Titel: flat-flag schlanker machen - wie? (gelöst)
Beitrag 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
}
Titel: Re: flat-flag schlanker machen - wie?
Beitrag von: fugenkomponist am Sonntag, 23. Oktober 2016, 10:07
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.
Titel: Re: flat-flag schlanker machen - wie?
Beitrag von: harm6 am Sonntag, 23. Oktober 2016, 10:15
Zitat
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
Zitat
Wer hat die Wunderwaffe?
nur

"Ich"

zu antworten. ;)
Titel: Re: flat-flag schlanker machen - wie?
Beitrag von: Manuela am Sonntag, 23. Oktober 2016, 11:04

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
Titel: Re: flat-flag schlanker machen - wie?
Beitrag von: fugenkomponist am Sonntag, 23. Oktober 2016, 11:21
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).
Titel: Re: flat-flag schlanker machen - wie?
Beitrag von: harm6 am Sonntag, 23. Oktober 2016, 11:22
Zitat von: fugenkomponist
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...
Titel: Re: flat-flag schlanker machen - wie?
Beitrag von: Manuela am Sonntag, 23. Oktober 2016, 11:26
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.
Titel: Re: flat-flag schlanker machen - wie?
Beitrag von: harm6 am Sonntag, 23. Oktober 2016, 11:50
Zitat von: fugenkomponist
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
Titel: Re: flat-flag schlanker machen - wie?
Beitrag von: harm6 am Dienstag, 25. Oktober 2016, 22:44
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