Autor Thema: set-global-staff-size automatisch berechnen  (Gelesen 1808 mal)

fairsein

  • Member
set-global-staff-size automatisch berechnen
« am: Donnerstag, 4. Oktober 2012, 17:32 »
Hallo ihr Lieben,

Ich nicht ob das überhaupt geht, aber ich würde gerne die set-global-staff-size automatisch berechnen lassen. Optimal wäre es natürlich wenn man es so hin bekommt, dass man dem System sagt: Mache die Seite so groß, dass sie gerade noch auf eine oder zwei Seiten passt. Die Alternative wäre, dass man ein Skript schreibt, welches einfach in 0,5er- Schritten hochzählt und das in mehrere Dateien ausgeben lässt. Habt ihr da eine Idee? Das würde mir echt helfen.

Gruß fairsein

fairsein

  • Member
Re: set-global-staff-size automatisch berechnen
« Antwort #1 am: Sonntag, 7. Oktober 2012, 11:30 »
Hat keiner eine Idee oder ist es einfach unklar was ich machen will?

prott

  • Member
Re: set-global-staff-size automatisch berechnen
« Antwort #2 am: Montag, 8. Oktober 2012, 21:10 »
Abgesehen davon, daß
Zitat
Mache die Seite so groß, dass sie gerade noch auf eine oder zwei Seiten passt.
etwas komisch klingt, denke ich schon, daß klar ist, was Du meinst. Aber ich kann Dir nur eine Antwort geben, die Dir nicht passen wird:

1. Ich glaube nicht, daß es geht. Wenn Du unter Linux arbeitest, kannst Du Deinen zweiten Vorschlag natürlich manuell realisieren, indem Du jeweils eine neue Datei bastelst. grep - Helden können das sogar mit einer normalen Batch-Datei automatisieren. Mir wär's zu mühsam.
2. Ich fürchte, daß das nicht sinnvoll ist, sobald Du etwas höhere Ansprüche hast. Einmal fürchte ich, daß Lilypond ohne Gewalt noch nicht gut Noten vertikal dicht auf die Seite setzt. Dann verändern sich die Zeilenumbrüche mit jeder Größe, und Du wirst u. u. verschiedene Markups hin- und herschieben müssen, damit sie nicht ungebührlich viel Platz wegnehmen oder zur Seite herausragen. Und ich glaube, daß "Standardgrößen" wie 14, 16, 18 oder 20 pt, keine Erfindung von Lilypond sind, sondern auch von Verlagen benutzt werden (Vokalmusik ist meistens in 14 oder 16 Punkt). Miß mal bei professionell gesetzten Noten nach: Die benutzen nur wenige Standardgrößen. Meines Wissens sind für diese Größen, ähnlich wie bei TeX, die Fonts "von Hand" aufeinander abgestimmt, während die Zwischengrößen interpoliert sind (das kann aber auch falsch sein - wer weiß besseres?).

Ich würde Dir daher eher empfehlen, nur die 2-er - Schritte auszuprobieren, und auch den Verwendungszweck zu berücksichtigen (Chornoten 14 oder 16 pt, für Kinder oder Leute mit Mühe beim Lesen auch größer. Klaviernoten bitte selbst ausmessen. Orchesterstimmen etwa 20 pt. U. s. w.). Wenn Du Dir das überlegt hast, bleiben eh' nur noch ein oder zwei Größen übrig.


Wenn's Dir hilft:

Ich benutze häufiger rohe Gewalt, die gewünschte Zahl an Systemen in der gewünschten Größe aufs Papier bringen. Da brauche ich auch mehrere Läufe (die ich während der Korrektur aber sowieso habe).
1. Ich lasse Lilypond ganz ohne Gewalt durchlaufen (und mit ragged-last-bottom = ##t im \paper-Block). Dann weiß ich wie viele Systemzeilen Lilypond freiwillig machen würde.
2. Ich habe dann (bei Chormusik sehr schnell, weil es nicht viel Auswahl gibt) eine Ahnung, wie viele Systeme ich auf welcher Seite haben will: z. B. auf der ersten Seite zwei, auf jeder anderen drei. Wenn ich also 21 Systemzeilen habe, sind das acht Seiten, davon auf der letzten Seite nur ein System. Das sieht bescheuert aus, also gehe ich auf 23 Systemzeilen (oder 26, falls mir der Notensatz zu gedrängt aussieht, und ich mir die neunte Seite gönnen will). Erste, sanfte Gewalt: In den \paper-Block kommt system-count = #23. Dann lasse ich Lilypond wieder laufen.
3. Jetzt hat sich Lilypond entschieden, wo es die Zeilenumbrüche setzen will. Aber leider stehen auf den Seiten oft nur zwei Systeme, obwohl eigentlich Platz für drei ist (der innere Grund dafür ist mir schleierhaft). Da hilft nur rohe Gewalt.
Also setze ich im \layout-Block:
\context { \Score
  \override NonMusicalPaperColumn #'line-break-permission = ##f
  \override NonMusicalPaperColumn #'page-break-permission = ##f       
}
(Das verbietet jeden Zeilen- und Seitenumbruch außer da, wo er explizit erlaubt ist) und definiere eine Variable
breakList = {
  s8 s1*2 \break s1*2 \pageBreak
  s1*3 \break s1*3 \break s1*2 s1*7/8
}
die explizit an den richtigen Stellen Zeilen- und Seitenumbrüche setzt (hier mit einer Achtel Auftakt). Diese baue ich dann in eine (eine reicht) Stimme ein - \sopMusic enthält die gewünschten Noten etc:
\new Voice = "sopranos" { << \sopMusic \breakList >> }

Woran Du noch spielen kannst: Abstände der Notationselemente (NR: vertikale Abstände) und Seitenränder. Damit geht eigentlich alles, was überhaupt sinnvoll ist.