Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: gärchle am Montag, 30. August 2010, 18:26
-
Hallo Allerseits,
ich schreibe an einem Stück für 2 Klaviere, Chor und Solostimme.
Wie bekommen ich es hin, dass das System für den Solisten oder den ganzen Chor ausgeblendet wird, wenn ein langes Vorspiel vorkommt, oder ein längerer Abschnitt, bei dem nur die beiden Klaviere spielen?
Ich habe es bereits mit \stoppStaff und \startStaff versucht, es funktioniert aber nicht. Die einzelnen Stimmen im ChoirStaff sind ja auch nur Voice. Gibt es für Voice einen ähnlichen Befehl?
Jede Stimme befindet sich ein einer eigenen Datei.
Gruß
Gärchle
-
Hallo!
Am einfachsten geht's mit \layout {\context {\RemoveEmptyStaffContext } }
Es kann sein dass du auch \override VerticalAxisGroup #'remove-first = ##t brauchst, oder ähnliches.
Allerdings ist 1.6.2 im Notationsreferenz wo diese gezeigt sind, und es gibt auch ein Paar andere Tips/Tricks im englischen mailing-list wenn die nicht ausreichen.
Hoffentlich hilft's
James
-
@ James
mit \layout {\context {\RemoveEmptyStaffContext } } kann ich ehrlich gesagt nichts anfangen. Bei mir steht \layout im Score-Bereich und würde ja auf das ganze Dokument wirken.
\override VerticalAxisGroup #'remove-first = ##t hat auch nicht die gewünschte Wirkung.
Die Hinweise in 1.6.2 in der Notationsreferenz helfen mir auch nicht weiter, weil die nur für weniger komplexe Stücke möglich sind.
Wie gesagt, hat bei mir jede Stimme eine eigene Datei. Die füge ich dann in der "Hauptdatei" zusammen.
@ alle anderen
Ich habe einen Weg gefunden, zumindest die Notenzeilen weg zu bekommen. Ich habe \new Voice durch \new Staff ersetzt und verwende \addlyrics { \liedtext } damit der Text entsprechend stimmt. In den einzelnen Dateien komme ich dann mit \stopStaff und\startStaff gut zurecht.
Was noch übrig ist, sind die Vorzeichen und der Notenschlüssel. Wie bekomme ich die nur an den gewünschten Stellen weg?
Gruß
Gärchle
-
mit \layout {\context {\RemoveEmptyStaffContext } } kann ich ehrlich gesagt nichts anfangen. Bei mir steht \layout im Score-Bereich und würde ja auf das ganze Dokument wirken.
das soll es ja genau - d.h. eben dass zeilen in denen in einem staff nichts steht (ausser siehe 1.6.2…) für dieses instrument weggelassen werden.
\override VerticalAxisGroup #'remove-first = ##t hat auch nicht die gewünschte Wirkung.
das müsste man im zusammenhang mit deinen noten sehen - wenn du lust hast, kannst du einen teil schicken.
Die Hinweise in 1.6.2 in der Notationsreferenz helfen mir auch nicht weiter, weil die nur für weniger komplexe Stücke möglich sind.
s. oben! das ganze macht ja nur sinn für grössere oder komplexere (orchester-)stücke, die sonst mit leeren zeilen/systemen den dirigenten zum "blätterer" umfunktionieren würden! kleinere stücke vertragen schon mal eine leere zeile.
Ich habe einen Weg gefunden, zumindest die Notenzeilen weg zu bekommen. Ich habe \new Voice durch \new Staff ersetzt und verwende \addlyrics { \liedtext } damit der Text entsprechend stimmt. In den einzelnen Dateien komme ich dann mit \stopStaff und\startStaff gut zurecht.
Was noch übrig ist, sind die Vorzeichen und der Notenschlüssel. Wie bekomme ich die nur an den gewünschten Stellen weg?
die verschwinden mit \layout {\context {\RemoveEmptyStaffContext } } automatisch, wenns nötig ist!
Wie gesagt, hat bei mir jede Stimme eine eigene Datei. Die füge ich dann in der "Hauptdatei" zusammen.
gut so!
-
@ding-dong
Grundsätzlich hast Du natürlich Recht.
Aber wenn ich grundsätzlich im 4-stimmigen Satz bin, und eine Stimme, z.B. der Tenor, hat zufälligerweise so lange Pause, dass in einer Zeile nur Pausen stehen, dann fällt diese Zeile ja aus der Partitur raus. Das wird mir zu unübersichtlich. Es soll also nur den ganzen Chor betreffen.
Das gleiche gilt für das Klavier: Wenn eine Hand längere Zeit Pause hat, fehlt die Zeile einer Hand dann. Das ist nicht so gedacht.
Ich werde aber erstnochmal rumprobieren, mit dem, was ihr mir bisher gepostet habt. Vielleicht kriege ich es hingebastelt.
Vielen Dank schonmal.
Gruß
Gärchle
-
jetzt verstehe ich was du suchst - temporäre systeme könnte man das nennen.
Es soll also nur den ganzen Chor betreffen.
Das gleiche gilt für das Klavier: Wenn eine Hand längere Zeit Pause hat, fehlt die Zeile einer Hand dann. Das ist nicht so gedacht.
das schafft lilypond meiner ansicht nach nicht!
Ich habe es bereits mit \stoppStaff und \startStaff versucht, es funktioniert aber nicht. Die einzelnen Stimmen im ChoirStaff sind ja auch nur Voice. Gibt es für Voice einen ähnlichen Befehl?
deshalb ist dein ansatz mit stopstaff + startstaff wahrscheinlich schon richtig, ich sehe nur nicht, wie das dann im einzelnen abläuft…
wenn du jeweils 2 stimmen in einem staff unterbringst, kannst du doch diesen (oder beide) staff(s) stoppen, nicht?
den schlüssel kannst du mit \override ChoirStaff.Clef #'stencil = ##f wegbringen; für die vorzeichen gilt etwas ähnliches mit Accidental.
das ganze scheint mir aber sehr aufwändig und ich frage mich, ob es nicht schon vorgegebene lösungen gibt!
weiss jemand was?
-
Aha, jetzt hab ich ein bisschen besseres überblick. Das Problem mit dem Klavier wurde vor kurzem korregiert, siehe http://code.google.com/p/lilypond/issues/detail?id=442 (http://code.google.com/p/lilypond/issues/detail?id=442)
Vielleicht hilft http://lists.gnu.org/archive/html/lilypond-user/2007-08/msg00366.html (http://lists.gnu.org/archive/html/lilypond-user/2007-08/msg00366.html) auch. Von der englischen Liste, ich lese es oft. Aber hab' seit einer Weile nicht benutzt.
-
Hallo Gärchle!
In den einzelnen Dateien komme ich dann mit \stopStaff und\startStaff gut zurecht.
So viel Bastelei muss gar nicht sein. Basierend auf dem Ansatz aus Partitur mit Kadenzen (https://liarchiv.joonet.de/index.php?topic=610.0) und compers \show[\hide]MMR-Makro erreicht man ein temporäres Ausblenden „von hinten durch die Brust“: Alle leeren Zeilen müssen zunächst unterdrückt werden, um sie später „wiederzubeleben“.
1. Wir unterdrücken alle leeren Zeilen:
\layout {
\context {
\RemoveEmptyStaffContext
\override VerticalAxisGroup #'remove-first = ##t
}
}
2. Wir holen die Interfaces, die dadurch entfernt wurden und zum Ausblenden führen, wieder zurück und verpacken sie mundgerecht in Variablen:
show = {
\set Staff.keepAliveInterfaces = #'(
multi-measure-rest-interface
rhythmic-grob-interface
)
}
hide = { \unset Staff.keepAliveInterfaces }
3. Irgendwo innerhalb der Zeile notieren wir \show zum Einblenden bzw. \hide zum Wiederausblenden. Innerhalb deswegen, weil an einem Zeilenumbruch der vorangehende Takt beteiligt wird (siehe Tenor im Beispiel):
tenor = \relative c {
\clef "treble_8"
R1*8
%% \show erst einen Takt später einsetzen!
%% hat sonst Effekt auf vorangegangene MMRs
R1 \show R1*7
\repeat unfold 8 { c4 d e f }
\repeat unfold 8 { c4 d e f }
}
Die Liste keepAliveInterfaces kann um gewünschte Interfaces erweitert werden, die eine Zeile am Ausblenden hindern sollen (Zitat NR: A list of symbols, signifying grob interfaces that are worth keeping a staff with remove-empty set around for.)
Komplette Beispieldatei laut deinem Setup (Solo + Chor + 2 Klaviere) im Anhang.
Viele Grüße, Robert